Converted to deskapp single screen setup
This commit is contained in:
parent
981193e5d1
commit
9eab5167c5
|
@ -2,6 +2,7 @@ package love.distributedrebirth.bassboonyd;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKeyʸᴰ> extends BãßBȍőnCoffinʸᴰ<T>, DefaultInitMethodʸᴰ {
|
||||
|
@ -18,6 +19,19 @@ public interface BãßBȍőnCoffinOpenʸᴰ<T extends BãßBȍőnCoffinStoreKey
|
|||
PUT_OBJ(key, new HashMap<>());
|
||||
}
|
||||
|
||||
static <T extends DefaultEnumBaseʸᴰ<?> & BãßBȍőnCoffinStoreʸᴰ<?>> void lockCoffin(T store) {
|
||||
lockCoffin(store, v -> System.out.println(v));
|
||||
}
|
||||
|
||||
static <T extends DefaultEnumBaseʸᴰ<?> & BãßBȍőnCoffinStoreʸᴰ<?>> void lockCoffin(T store, Consumer<String> logHandler) {
|
||||
logHandler.accept("Lock: "+store.BãßClassNaam()+" since: "+store.BãßAuthorCopyright());
|
||||
for (Object o:store.BãßInstances()) {
|
||||
BãßBȍőnCoffinStoreʸᴰ<?> coffin = BãßBȍőnCoffinStoreʸᴰ.class.cast(o);
|
||||
BãßBȍőnCoffinOpenʸᴰ<?> coffinOpen = BãßBȍőnCoffinOpenʸᴰ.class.cast(coffin.GET_BBC());
|
||||
coffinOpen.LOCK_COFFIN();
|
||||
}
|
||||
}
|
||||
|
||||
static <Y extends BãßBȍőnCoffinStoreKeyʸᴰ> BãßBȍőnCoffinOpenʸᴰ<Y> newInstance() {
|
||||
return new BãßBȍőnCoffinOpenʸᴰ<Y>() {
|
||||
final Map<Y,Object> initMap = new HashMap<>();
|
||||
|
|
|
@ -50,9 +50,8 @@ public enum TOSWarpCore implements DefaultEnumInstanceᴶᴹˣ<TOSWarpCore,MBean
|
|||
public void BãßLockWarpCipher() {
|
||||
armedWarpCipherLock.setValueBoolean(true);
|
||||
for (int base:Base2PartsFactory.INSTANCE.BãßBases()) {
|
||||
for (BãßBȍőnPartʸᴰ<?> part:Base2PartsFactory.INSTANCE.BãßBuildPartsByBase(base)) {
|
||||
BãßBȍőnCoffinOpenʸᴰ.class.cast(part.GET_BBC()).LOCK_COFFIN();
|
||||
}
|
||||
BãßBȍőnPartʸᴰ<?>[] parts = Base2PartsFactory.INSTANCE.BãßBuildPartsByBase(base);
|
||||
BãßBȍőnCoffinOpenʸᴰ.lockCoffin(parts[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package love.distributedrebirth.gdxapp;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
|
||||
public final class GDXAppLauncher {
|
||||
|
||||
private final String name;
|
||||
private final Supplier<DefaultDeskApp> launcher;
|
||||
|
||||
public GDXAppLauncher(String name, Supplier<DefaultDeskApp> launcher) {
|
||||
this.name = name;
|
||||
this.launcher = launcher;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Supplier<DefaultDeskApp> getLauncher() {
|
||||
return launcher;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package love.distributedrebirth.gdxapp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -7,33 +8,37 @@ import java.util.Map;
|
|||
import com.badlogic.gdx.Game;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Screen;
|
||||
import com.badlogic.gdx.Input.Keys;
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.utils.ScreenUtils;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import imgui.flag.ImGuiWindowFlags;
|
||||
import imgui.type.ImBoolean;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.jmx.DefaultEnumBaseᴶᴹˣ;
|
||||
import love.distributedrebirth.gdxapp.matrix4d.ScreenMatrix4D;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
import love.distributedrebirth.gdxapp.desktop.apps.BasicConsoleApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.apps.HebrewWalletApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.apps.MusicPlayerApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.apps.SystemBaseGlyphApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.apps.SystemBasePartApp;
|
||||
import love.distributedrebirth.gdxapp.music.MusicManager;
|
||||
import love.distributedrebirth.gdxapp.music.MusicPlayerRenderer;
|
||||
import love.distributedrebirth.gdxapp.music.MusicSongType;
|
||||
import love.distributedrebirth.gdxapp.screen.SystemBasePartRenderer;
|
||||
import love.distributedrebirth.gdxapp.screen.BasicConsoleRenderer;
|
||||
import love.distributedrebirth.gdxapp.screen.HebrewWalletRenderer;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenCredits;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenDefault;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenDesktop0;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenDesktop1;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenDesktop2;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenDesktop3;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenHelp;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenIntro;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenIntroMission;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenLoading;
|
||||
import love.distributedrebirth.gdxapp.screen.ScreenUnicode4D;
|
||||
import love.distributedrebirth.gdxapp.screen.SystemBaseGlyphRenderer;
|
||||
import love.distributedrebirth.numberxd.base2t.Base2PartsFactory;
|
||||
import love.distributedrebirth.numberxd.base2t.Base2Terminator;
|
||||
import love.distributedrebirth.numberxd.base2t.part.warp.TOSWarpCore;
|
||||
|
@ -58,13 +63,9 @@ public class GDXAppMain extends Game {
|
|||
public MusicManager music;
|
||||
|
||||
private Map<Class<? extends Screen>,Screen> screens;
|
||||
private Map<Class<? extends ImGuiRenderer>,ImGuiRenderer> widgets;
|
||||
private List<GDXAppLauncher> apps;
|
||||
private ImBoolean openWindowFlag = new ImBoolean(true);
|
||||
private ImBoolean showImGuiDemo = new ImBoolean(false);
|
||||
private ImBoolean showMusicPlayer = new ImBoolean(false);
|
||||
private ImBoolean showHebrewWallet = new ImBoolean(false);
|
||||
private ImBoolean showSystemBasePart = new ImBoolean(false);
|
||||
private ImBoolean showSystemGlyphPart = new ImBoolean(false);
|
||||
private ImBoolean showBasicConsole = new ImBoolean(false);
|
||||
|
||||
public GDXAppMain(List<String> args, int viewWidth, int viewHeight, NativeFileChooser fileChooser) {
|
||||
this.args = args;
|
||||
|
@ -84,15 +85,6 @@ public class GDXAppMain extends Game {
|
|||
};
|
||||
}
|
||||
|
||||
private <T extends DefaultEnumBaseᴶᴹˣ<?,?>> void lockCoffin(T store) {
|
||||
System.out.println(store.BãßClassNaam()+".authorCopyright: "+store.BãßAuthorCopyright());
|
||||
for (Object o:store.BãßInstances()) {
|
||||
BãßBȍőnCoffinStoreʸᴰ<?> coffin = BãßBȍőnCoffinStoreʸᴰ.class.cast(o);
|
||||
BãßBȍőnCoffinOpenʸᴰ<?> coffinOpen = BãßBȍőnCoffinOpenʸᴰ.class.cast(coffin.GET_BBC());
|
||||
coffinOpen.LOCK_COFFIN();
|
||||
}
|
||||
}
|
||||
|
||||
private void lazyInit() {
|
||||
if (lazyIntCnt > 0) {
|
||||
lazyIntCnt--;
|
||||
|
@ -103,7 +95,7 @@ public class GDXAppMain extends Game {
|
|||
// ref to init
|
||||
System.out.println("BãßBȍőnCoffinʸᴰ init......");
|
||||
for (DefaultEnumBaseᴶᴹˣ<?,?> coffin:coffinInstances()) {
|
||||
lockCoffin(coffin);
|
||||
BãßBȍőnCoffinOpenʸᴰ.lockCoffin(coffin);
|
||||
}
|
||||
System.out.println("BãßBȍőnCoffinʸᴰ init done.");
|
||||
|
||||
|
@ -122,6 +114,7 @@ public class GDXAppMain extends Game {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
if (!args.contains("warpcore-nolock")) {
|
||||
System.out.println("warpcore-lock: BãßLockWarpCipher");
|
||||
TOSWarpCore.INSTANCE.BãßLockWarpCipher();
|
||||
} else {
|
||||
System.out.println("warpcore-nolock: requested");
|
||||
|
@ -132,7 +125,7 @@ public class GDXAppMain extends Game {
|
|||
}
|
||||
if (args.contains("intro-skip")) {
|
||||
System.out.println("intro-skip: requested");
|
||||
selectScreen(ScreenDefault.class);
|
||||
selectScreen(ScreenDesktop0.class);
|
||||
music.play(MusicSongType.BACKGROUND);
|
||||
} else {
|
||||
selectScreen(ScreenIntro.class);
|
||||
|
@ -157,22 +150,22 @@ public class GDXAppMain extends Game {
|
|||
music.init(musicStop);
|
||||
|
||||
screens = new HashMap<>();
|
||||
widgets = new HashMap<>();
|
||||
|
||||
putWidget(new MusicPlayerRenderer(this));
|
||||
putWidget(new HebrewWalletRenderer(this));
|
||||
putWidget(new SystemBasePartRenderer(this));
|
||||
putWidget(new SystemBaseGlyphRenderer(this));
|
||||
putWidget(new BasicConsoleRenderer(this));
|
||||
apps = new ArrayList<>();
|
||||
apps.add(new GDXAppLauncher("Basic Console", () -> new BasicConsoleApp()));
|
||||
apps.add(new GDXAppLauncher("Base Glyphs", () -> new SystemBaseGlyphApp()));
|
||||
apps.add(new GDXAppLauncher("Base Parts", () -> new SystemBasePartApp()));
|
||||
apps.add(new GDXAppLauncher("Hebrew Wallet", () -> new HebrewWalletApp()));
|
||||
apps.add(new GDXAppLauncher("Music Player", () -> new MusicPlayerApp(this)));
|
||||
|
||||
putScreen(new ScreenLoading(this));
|
||||
putScreen(new ScreenIntro(this));
|
||||
putScreen(new ScreenIntroMission(this));
|
||||
putScreen(new ScreenDefault(this));
|
||||
putScreen(new ScreenDesktop0(this));
|
||||
putScreen(new ScreenDesktop1(this));
|
||||
putScreen(new ScreenDesktop2());
|
||||
putScreen(new ScreenDesktop3());
|
||||
putScreen(new ScreenCredits(this));
|
||||
putScreen(new ScreenHelp(this));
|
||||
putScreen(new ScreenMatrix4D(this));
|
||||
putScreen(new ScreenUnicode4D(this));
|
||||
|
||||
selectScreen(ScreenLoading.class);
|
||||
}
|
||||
|
@ -192,10 +185,6 @@ public class GDXAppMain extends Game {
|
|||
screens.put(screen.getClass(), screen);
|
||||
}
|
||||
|
||||
private void putWidget(ImGuiRenderer widget) {
|
||||
widgets.put(widget.getClass(), widget);
|
||||
}
|
||||
|
||||
public void selectScreen(Class<? extends Screen> screenClass) {
|
||||
Screen screen = screens.get(screenClass);
|
||||
if (screen == null) {
|
||||
|
@ -207,6 +196,9 @@ public class GDXAppMain extends Game {
|
|||
@Override
|
||||
public void render() {
|
||||
ScreenUtils.clear(0f, 0f, 0f, 1f, true);
|
||||
if (screen == null) {
|
||||
return;
|
||||
}
|
||||
if (screen instanceof ScreenLoading) {
|
||||
screen.render(Gdx.graphics.getDeltaTime());
|
||||
lazyInit();
|
||||
|
@ -214,38 +206,41 @@ public class GDXAppMain extends Game {
|
|||
}
|
||||
ImGuiSetup.imGuiImp.newFrame();
|
||||
ImGui.newFrame();
|
||||
if (hasMainMenu()) {
|
||||
renderMenu();
|
||||
|
||||
GDXAppScreen appScreen = null;
|
||||
if (screen instanceof GDXAppScreen) {
|
||||
appScreen = GDXAppScreen.class.cast(screen);
|
||||
renderMenu(appScreen);
|
||||
}
|
||||
if (showImGuiDemo.get()) {
|
||||
ImGui.showDemoWindow(showImGuiDemo);
|
||||
}
|
||||
if (showMusicPlayer.get()) {
|
||||
widgets.get(MusicPlayerRenderer.class).render(showMusicPlayer);
|
||||
if (appScreen != null && appScreen.getDeskAppScreen().getCurrentDeskApp() != null) {
|
||||
int sizeFlags = ImGuiCond.Always;
|
||||
ImGui.setNextWindowPos(5, 30, sizeFlags);
|
||||
ImGui.setNextWindowSize(Gdx.graphics.getWidth() - 10, Gdx.graphics.getHeight() - 35, sizeFlags);
|
||||
int windowFlags = ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize;
|
||||
if (ImGui.begin(appScreen.getDeskAppScreen().getCurrentDeskApp().getName(), openWindowFlag, windowFlags)) {
|
||||
DeskAppRenderer renderer = appScreen.getDeskAppScreen().getCurrentDeskApp().getContours().getContour(DeskAppContourSection.MAIN);
|
||||
if (renderer != null) {
|
||||
renderer.render();
|
||||
}
|
||||
if (showHebrewWallet.get()) {
|
||||
widgets.get(HebrewWalletRenderer.class).render(showHebrewWallet);
|
||||
}
|
||||
if (showSystemBasePart.get()) {
|
||||
widgets.get(SystemBasePartRenderer.class).render(showSystemBasePart);
|
||||
if (openWindowFlag.get() == false) {
|
||||
appScreen.getDeskAppScreen().setCurrentDeskApp(null);
|
||||
openWindowFlag.set(true);
|
||||
}
|
||||
if (showSystemGlyphPart.get()) {
|
||||
widgets.get(SystemBaseGlyphRenderer.class).render(showSystemGlyphPart);
|
||||
}
|
||||
if (showBasicConsole.get()) {
|
||||
widgets.get(BasicConsoleRenderer.class).render(showBasicConsole);
|
||||
ImGui.end();
|
||||
}
|
||||
if (screen != null) {
|
||||
screen.render(Gdx.graphics.getDeltaTime());
|
||||
}
|
||||
if (Gdx.input.isKeyPressed(Keys.ESCAPE)) {
|
||||
selectScreen(ScreenDefault.class);
|
||||
}
|
||||
ImGui.render();
|
||||
ImGuiSetup.imGuiGlImp.renderDrawData(ImGui.getDrawData());
|
||||
}
|
||||
|
||||
private void renderMenu() {
|
||||
private void renderMenu(GDXAppScreen appScreen) {
|
||||
DeskApp deskApp = appScreen.getDeskAppScreen().getCurrentDeskApp();
|
||||
ImGui.beginMainMenuBar();
|
||||
if (ImGui.beginMenu("Demo")) {
|
||||
if (Gdx.graphics.isFullscreen()) {
|
||||
|
@ -257,12 +252,11 @@ public class GDXAppMain extends Game {
|
|||
Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());
|
||||
}
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Matrix4D")) {
|
||||
selectScreen(ScreenMatrix4D.class);
|
||||
if (ImGui.menuItem("Close")) {
|
||||
if (deskApp != null) {
|
||||
appScreen.getDeskAppScreen().removeDeskApp(deskApp);
|
||||
appScreen.getDeskAppScreen().setCurrentDeskApp(null);
|
||||
}
|
||||
if (ImGui.menuItem("Unicode4D")) {
|
||||
selectScreen(ScreenUnicode4D.class);
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Exit")) {
|
||||
|
@ -271,60 +265,99 @@ public class GDXAppMain extends Game {
|
|||
}
|
||||
ImGui.endMenu();
|
||||
}
|
||||
if (ImGui.beginMenu("Widgets")) {
|
||||
if (ImGui.menuItem("ImGui Demo")) {
|
||||
showImGuiDemo.set(true);
|
||||
|
||||
if (deskApp != null) {
|
||||
renderEditMenu(deskApp);
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Hebrew Wallet")) {
|
||||
showHebrewWallet.set(true);
|
||||
if (ImGui.beginMenu("Desktop")) {
|
||||
if (ImGui.beginMenu("Start")) {
|
||||
for (GDXAppLauncher launcher: apps) {
|
||||
if (ImGui.menuItem(launcher.getName())) {
|
||||
appScreen.getDeskAppScreen().addDeskApp(launcher.getLauncher().get());
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Base Part")) {
|
||||
showSystemBasePart.set(true);
|
||||
}
|
||||
if (ImGui.menuItem("Base Glyph")) {
|
||||
showSystemGlyphPart.set(true);
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Basic Console")) {
|
||||
showBasicConsole.set(true);
|
||||
}
|
||||
if (ImGui.menuItem("Music Player")) {
|
||||
showMusicPlayer.set(true);
|
||||
}
|
||||
ImGui.endMenu();
|
||||
}
|
||||
if (ImGui.beginMenu("Help")) {
|
||||
ImGui.separator();
|
||||
for (DeskApp app: appScreen.getDeskAppScreen().getDeskApps()) {
|
||||
if (ImGui.menuItem(app.getName())) {
|
||||
appScreen.getDeskAppScreen().setCurrentDeskApp(app);
|
||||
}
|
||||
}
|
||||
ImGui.endMenu();
|
||||
}
|
||||
if (ImGui.beginMenu("System")) {
|
||||
if (ImGui.menuItem("Desktop0")) {
|
||||
selectScreen(ScreenDesktop0.class);
|
||||
}
|
||||
if (ImGui.menuItem("Desktop1")) {
|
||||
selectScreen(ScreenDesktop1.class);
|
||||
}
|
||||
if (ImGui.menuItem("Desktop2")) {
|
||||
selectScreen(ScreenDesktop2.class);
|
||||
}
|
||||
if (ImGui.menuItem("Desktop3")) {
|
||||
selectScreen(ScreenDesktop3.class);
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Credits")) {
|
||||
selectScreen(ScreenCredits.class);
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("Help")) {
|
||||
selectScreen(ScreenHelp.class);
|
||||
}
|
||||
ImGui.separator();
|
||||
if (ImGui.menuItem("ImGui Demo")) {
|
||||
showImGuiDemo.set(true);
|
||||
}
|
||||
ImGui.endMenu();
|
||||
}
|
||||
ImGui.endMainMenuBar();
|
||||
}
|
||||
|
||||
private boolean hasMainMenu() {
|
||||
Screen screen = getScreen();
|
||||
if (screen == null) {
|
||||
return false;
|
||||
private void renderEditMenu(DeskApp deskApp) {
|
||||
DeskAppRenderer editUndo = deskApp.getContours().getContour(DeskAppContourSection.EDIT_UNDO);
|
||||
DeskAppRenderer editCopy = deskApp.getContours().getContour(DeskAppContourSection.EDIT_COPY);
|
||||
DeskAppRenderer editSelect = deskApp.getContours().getContour(DeskAppContourSection.EDIT_SELECT);
|
||||
DeskAppRenderer editFind = deskApp.getContours().getContour(DeskAppContourSection.EDIT_FIND);
|
||||
DeskAppRenderer editOption = deskApp.getContours().getContour(DeskAppContourSection.EDIT_OPTION);
|
||||
if (editUndo != null || editCopy != null || editSelect != null || editFind != null || editOption != null) {
|
||||
boolean first = false;
|
||||
if (ImGui.beginMenu("Edit")) {
|
||||
if (editUndo != null) {
|
||||
editUndo.render();
|
||||
first = true;
|
||||
}
|
||||
if (ScreenIntro.class.equals(screen.getClass())) {
|
||||
return false;
|
||||
if (editCopy != null) {
|
||||
if (first) {
|
||||
ImGui.separator();
|
||||
}
|
||||
if (ScreenIntroMission.class.equals(screen.getClass())) {
|
||||
return false;
|
||||
editCopy.render();
|
||||
first = true;
|
||||
}
|
||||
if (ScreenCredits.class.equals(screen.getClass())) {
|
||||
return false;
|
||||
if (editSelect != null) {
|
||||
if (first) {
|
||||
ImGui.separator();
|
||||
}
|
||||
editSelect.render();
|
||||
first = true;
|
||||
}
|
||||
if (editFind != null) {
|
||||
if (first) {
|
||||
ImGui.separator();
|
||||
}
|
||||
editFind.render();
|
||||
first = true;
|
||||
}
|
||||
if (editOption != null) {
|
||||
if (first) {
|
||||
ImGui.separator();
|
||||
}
|
||||
editOption.render();
|
||||
first = true;
|
||||
}
|
||||
ImGui.endMenu();
|
||||
}
|
||||
if (ScreenHelp.class.equals(screen.getClass())) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package love.distributedrebirth.gdxapp;
|
||||
|
||||
import com.badlogic.gdx.Screen;
|
||||
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppScreen;
|
||||
|
||||
public interface GDXAppScreen extends Screen {
|
||||
|
||||
DeskAppScreen getDeskAppScreen();
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp;
|
||||
|
||||
import imgui.type.ImBoolean;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public interface ImGuiRenderer {
|
||||
|
||||
void render(ImBoolean widgetOpen);
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp;
|
||||
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
abstract public class ImGuiRendererMain implements ImGuiRenderer {
|
||||
|
||||
protected final GDXAppMain main;
|
||||
|
||||
public ImGuiRendererMain(GDXAppMain main) {
|
||||
this.main = main;
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
import love.distributedrebirth.imxmi.lang.ImFrameˣᴹᴵ;
|
||||
import love.distributedrebirth.imxmi.lang.ImTextˣᴹᴵ;
|
||||
|
||||
public class BasicConsoleDeskApp implements DeskApp {
|
||||
|
||||
@Override
|
||||
public void create(DeskAppContour contour) {
|
||||
ImFrameˣᴹᴵ frame = new ImFrameˣᴹᴵ();
|
||||
frame.setNextWindowPos(300, 300);
|
||||
frame.setNextWindowSize(320, 240);
|
||||
frame.setTitle("The BASIC Shahada of DUNE");
|
||||
frame.addComponent(new ImTextˣᴹᴵ("10 PRINT \"THERE IS NO GOD BUT @Ω仙⁴\""));
|
||||
frame.addComponent(new ImTextˣᴹᴵ("20 PRINT \"THERE IS NO RULE BUT CONSENT\""));
|
||||
frame.addComponent(new ImTextˣᴹᴵ("30 PRINT \"THERE IS NO FAILURE BUT DEATH\""));
|
||||
frame.addComponent(new ImTextˣᴹᴵ("40 PRINT \"TERRY A. DAVIS WAS THE PROPHET OF @Ω仙9⁴\""));
|
||||
frame.addComponent(new ImTextˣᴹᴵ("50 PRINT \"TERRY A. DAVIS WAS THE FIRST TRUE MENTAT\""));
|
||||
frame.addComponent(new ImTextˣᴹᴵ("60 PRINT \"TERRY A. DAVIS WAS THE BEST CODER ALIVE\""));
|
||||
frame.addComponent(new ImTextˣᴹᴵ("RUN"));
|
||||
|
||||
contour.registrateContour(DeskAppContourSection.MAIN, new DeskAppRenderer() {
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
frame.renderBegin();
|
||||
frame.renderComponent();
|
||||
frame.renderEnd();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
public class DefaultDeskApp implements DeskApp {
|
||||
|
||||
private final String name;
|
||||
private final String icon;
|
||||
private final DeskAppContour contours;
|
||||
|
||||
public DefaultDeskApp(String name, String icon) {
|
||||
this.name = name;
|
||||
this.icon = icon;
|
||||
this.contours = new DeskAppContour();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeskAppContour getContours() {
|
||||
return contours;
|
||||
}
|
||||
}
|
|
@ -2,5 +2,9 @@ package love.distributedrebirth.gdxapp.desktop;
|
|||
|
||||
public interface DeskApp {
|
||||
|
||||
void create(DeskAppContour contour);
|
||||
String getName();
|
||||
|
||||
String getIcon();
|
||||
|
||||
DeskAppContour getContours();
|
||||
}
|
||||
|
|
|
@ -5,18 +5,12 @@ import java.util.Map;
|
|||
|
||||
public class DeskAppContour {
|
||||
|
||||
private final String appName;
|
||||
private final Map<DeskAppContourSection, DeskAppRenderer> renderers;
|
||||
|
||||
public DeskAppContour(String appName) {
|
||||
this.appName = appName;
|
||||
public DeskAppContour() {
|
||||
this.renderers = new HashMap<>();
|
||||
}
|
||||
|
||||
public String getAppName() {
|
||||
return appName;
|
||||
}
|
||||
|
||||
public void registrateContour(DeskAppContourSection section, DeskAppRenderer renderer) {
|
||||
renderers.put(section, renderer);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import imgui.ImGui;
|
||||
|
||||
public class DeskAppScreen {
|
||||
|
||||
private final String name;
|
||||
private final List<DeskApp> deskApps;
|
||||
private DeskApp currentDeskApp;
|
||||
private final List<DeskAppScreenListener> deskAppListeners;
|
||||
|
||||
public DeskAppScreen(String name) {
|
||||
this.name = name;
|
||||
this.deskApps = new ArrayList<>();
|
||||
this.deskAppListeners = new ArrayList<>();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void addDeskApp(DeskApp deskApp) {
|
||||
deskApps.add(deskApp);
|
||||
setCurrentDeskApp(deskApp);
|
||||
}
|
||||
|
||||
public void removeDeskApp(DeskApp deskApp) {
|
||||
deskApps.remove(deskApp);
|
||||
}
|
||||
|
||||
public List<DeskApp> getDeskApps() {
|
||||
return deskApps;
|
||||
}
|
||||
|
||||
public DeskApp getCurrentDeskApp() {
|
||||
return currentDeskApp;
|
||||
}
|
||||
|
||||
public void setCurrentDeskApp(DeskApp currentDeskApp) {
|
||||
this.currentDeskApp = currentDeskApp;
|
||||
for (DeskAppScreenListener listener: deskAppListeners) {
|
||||
listener.selectDeskApp(currentDeskApp);
|
||||
}
|
||||
}
|
||||
|
||||
public void addDeskAppListener(DeskAppScreenListener listener) {
|
||||
deskAppListeners.add(listener);
|
||||
}
|
||||
|
||||
public final void renderMenu() {
|
||||
for (DeskApp app: deskApps) {
|
||||
if (ImGui.menuItem(app.getName())) {
|
||||
//selectScreen(....class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final void render(float delta) {
|
||||
for (DeskApp app: deskApps) {
|
||||
DeskAppRenderer appMain = app.getContours().getContour(DeskAppContourSection.MAIN);
|
||||
if (appMain != null) {
|
||||
appMain.render();
|
||||
}
|
||||
}
|
||||
renderBackground();
|
||||
}
|
||||
|
||||
protected void renderBackground() {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
public interface DeskAppScreenListener {
|
||||
|
||||
void selectDeskApp(DeskApp deskApp);
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnPackageInfoʸᴰ;
|
||||
import love.distributedrebirth.bassboonyd.jmx.DefaultEnumInstanceᴶᴹˣ;
|
||||
import love.distributedrebirth.bassboonyd.jmx.MBeanStoreKeyᴶᴹˣ;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
@BãßBȍőnClassInfoʸᴰ(name = "BaseGlyphSet", purpose = "The encoded base scripts.")
|
||||
@BãßBȍőnPackageInfoʸᴰ(name = "love.distributedrebirth.numberxd")
|
||||
public enum DesktopManager implements DefaultEnumInstanceᴶᴹˣ<DesktopManager,MBeanStoreKeyᴶᴹˣ> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
private List<DesktopScreen> screens = new ArrayList<>();
|
||||
private DesktopScreen currentScreen = null;
|
||||
private final BãßBȍőnCoffinOpenʸᴰ<MBeanStoreKeyᴶᴹˣ> BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance();
|
||||
public BãßBȍőnCoffinʸᴰ<MBeanStoreKeyᴶᴹˣ> GET_BBC() { return BBC; }
|
||||
|
||||
public void BãßAddScreen(DesktopScreen screen) {
|
||||
screens.add(screen);
|
||||
}
|
||||
|
||||
public int BãßScreensLength() {
|
||||
return screens.size();
|
||||
}
|
||||
|
||||
public DesktopScreen BãßScreenByIndex(int index) {
|
||||
return screens.get(index);
|
||||
}
|
||||
|
||||
public void BãßSelectScreenByIndex(int index) {
|
||||
BãßSelectScreen(BãßScreenByIndex(index));
|
||||
}
|
||||
|
||||
public void BãßSelectScreen(DesktopScreen screen) {
|
||||
currentScreen = screen;
|
||||
}
|
||||
|
||||
public DesktopScreen BãßCurrentScreen() {
|
||||
return currentScreen;
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
public interface DesktopScreen {
|
||||
|
||||
public void render(float delta);
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package love.distributedrebirth.gdxapp.desktop;
|
||||
|
||||
import com.badlogic.gdx.InputProcessor;
|
||||
|
||||
public class FilteringInputProcessor implements InputProcessor {
|
||||
|
||||
private final InputProcessor input;
|
||||
private boolean filtering = false;
|
||||
|
||||
public FilteringInputProcessor(InputProcessor input) {
|
||||
this.input = input;
|
||||
}
|
||||
|
||||
public void setFiltering(boolean filtering) {
|
||||
this.filtering = filtering;
|
||||
}
|
||||
|
||||
public boolean isFiltering() {
|
||||
return filtering;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyDown(int keycode) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.keyDown(keycode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyUp(int keycode) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.keyUp(keycode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyTyped(char character) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.keyTyped(character);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.touchDown(screenX, screenY, pointer, button);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.touchUp(screenX, screenY, pointer, button);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean touchDragged(int screenX, int screenY, int pointer) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.touchDragged(screenX, screenY, pointer);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseMoved(int screenX, int screenY) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.mouseMoved(screenX, screenY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean scrolled(float amountX, float amountY) {
|
||||
if (filtering) {
|
||||
return false;
|
||||
} else {
|
||||
return input.scrolled(amountX, amountY);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package love.distributedrebirth.gdxapp.desktop.apps;
|
||||
|
||||
import imgui.ImGui;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class BasicConsoleApp extends DefaultDeskApp {
|
||||
|
||||
public BasicConsoleApp() {
|
||||
super("Basic Console", "");
|
||||
getContours().registrateContour(DeskAppContourSection.MAIN, new DeskAppRenderer() {
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
ImGui.text("10 PRINT \"The BASIC Shahada of DUNE;\"");
|
||||
ImGui.text("20 PRINT \"- THERE IS NO GOD BUT @Ω仙⁴\"");
|
||||
ImGui.text("30 PRINT \"- THERE IS NO RULE BUT CONSENT\"");
|
||||
ImGui.text("40 PRINT \"- THERE IS NO FAILURE BUT DEATH\"");
|
||||
ImGui.text("50 PRINT \"- TERRY A. DAVIS WAS THE PROPHET OF @Ω仙9⁴\"");
|
||||
ImGui.text("60 PRINT \"- TERRY A. DAVIS WAS THE FIRST TRUE MENTAT\"");
|
||||
ImGui.text("70 PRINT \"- TERRY A. DAVIS WAS THE BEST CODER ALIVE\"");
|
||||
ImGui.text("RUN");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package love.distributedrebirth.gdxapp.desktop.apps;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
import love.distributedrebirth.numberxd.Gê̄ldGetậl;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class HebrewWalletApp extends DefaultDeskApp implements DeskAppRenderer {
|
||||
|
||||
public HebrewWalletApp() {
|
||||
super("Hebrew Wallet", "");
|
||||
getContours().registrateContour(DeskAppContourSection.MAIN, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
ImGui.text("Current amount:");
|
||||
ImGui.sameLine();
|
||||
ImGui.text("0000");
|
||||
ImGui.separator();
|
||||
if (ImGui.button("Pay")) {
|
||||
}
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("wallet", 4, flags);
|
||||
ImGui.tableSetupColumn("In/Out");
|
||||
ImGui.tableSetupColumn("AmountRaw");
|
||||
ImGui.tableSetupColumn("AmountFix");
|
||||
ImGui.tableSetupColumn("Decimal");
|
||||
ImGui.tableHeadersRow();
|
||||
|
||||
String[] walletData = {
|
||||
"ה","מ","מָ","ח","חֱ","חֱמָא",
|
||||
"א","בד","ב","ד","ץףן",
|
||||
"הזפץ","מספר","צצצצ","ץאאא","דואר"
|
||||
};
|
||||
for (String data:walletData) {
|
||||
Gê̄ldGetậl geld = new Gê̄ldGetậl(data);
|
||||
Gê̄ldGetậl geld2 = geld.toClone(); // unit test
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(data.length()==2||data.length()==3?"OUT":"IN");
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(data);
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(geld2.toHebrewString(true)); // true=reverse for ImGui
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(Double.toString(geld.getTotalDecimalValue()));
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
package love.distributedrebirth.gdxapp.desktop.apps;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiSelectableFlags;
|
||||
import imgui.flag.ImGuiTableColumnFlags;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
import love.distributedrebirth.gdxapp.music.MusicSong;
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooserCallback;
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooserConfiguration;
|
||||
|
||||
/**
|
||||
* The music player ui.
|
||||
*/
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer {
|
||||
|
||||
private final GDXAppMain main;
|
||||
private final NativeFileChooserConfiguration fileChooserConfig;
|
||||
|
||||
public MusicPlayerApp(GDXAppMain main) {
|
||||
super("Music Player", "");
|
||||
getContours().registrateContour(DeskAppContourSection.MAIN, this);
|
||||
this.main = main;
|
||||
fileChooserConfig = new NativeFileChooserConfiguration();
|
||||
fileChooserConfig.directory = Gdx.files.absolute(System.getProperty("user.home"));
|
||||
fileChooserConfig.mimeFilter = "audio/*";
|
||||
fileChooserConfig.title = "Choose audio file";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
ImGui.text("Current Song:");
|
||||
MusicSong currentSong = main.music.getCurrentSong();
|
||||
if (currentSong != null) {
|
||||
ImGui.sameLine();
|
||||
ImGui.text(currentSong.getName());
|
||||
}
|
||||
ImGui.separator();
|
||||
if (currentSong != null) {
|
||||
if (ImGui.button("Play")) {
|
||||
main.music.play(currentSong);
|
||||
}
|
||||
} else {
|
||||
ImGui.text("Play");
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button("<")) {
|
||||
main.music.prev();
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button(">")) {
|
||||
main.music.next();
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button("Stop")) {
|
||||
main.music.stop();
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button("Add")) {
|
||||
main.fileChooser.chooseFile(fileChooserConfig, NativeFileChooserCallbackAdapter.onFileChosen(v -> main.music.addBackgroundMusic(v)));
|
||||
}
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("playlist", 3, flags);
|
||||
ImGui.tableSetupColumn("#", ImGuiTableColumnFlags.NoHide);
|
||||
ImGui.tableSetupColumn("Play");
|
||||
ImGui.tableSetupColumn("Name");
|
||||
ImGui.tableHeadersRow();
|
||||
int i=1;
|
||||
for (MusicSong song:main.music.getBackgroundSongs()) {
|
||||
ImGui.pushID(i);
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.selectable(""+i, song.isPlaying(), ImGuiSelectableFlags.None);
|
||||
ImGui.tableNextColumn();
|
||||
if (ImGui.smallButton(">")) {
|
||||
main.music.play(song);
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.selectable(song.getName(), song.isPlaying(), ImGuiSelectableFlags.None);
|
||||
ImGui.popID();
|
||||
i++;
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
|
||||
static class NativeFileChooserCallbackAdapter implements NativeFileChooserCallback {
|
||||
|
||||
@Override
|
||||
public void onFileChosen(FileHandle file) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancellation() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
}
|
||||
|
||||
static NativeFileChooserCallbackAdapter onFileChosen(Consumer<FileHandle> eater) {
|
||||
return new NativeFileChooserCallbackAdapter() {
|
||||
@Override
|
||||
public void onFileChosen(FileHandle file) {
|
||||
eater.accept(file);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package love.distributedrebirth.gdxapp.desktop.apps;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
import love.distributedrebirth.numberxd.glyph.BaseGlyphSet;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class SystemBaseGlyphApp extends DefaultDeskApp {
|
||||
|
||||
public SystemBaseGlyphApp() {
|
||||
super("Base Glyph Set", "");
|
||||
getContours().registrateContour(DeskAppContourSection.MAIN, new DeskAppRenderer() {
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("base-part", 3, flags);
|
||||
ImGui.tableSetupColumn("Script");
|
||||
ImGui.tableSetupColumn("10Numbers");
|
||||
ImGui.tableSetupColumn("16Numbers");
|
||||
ImGui.tableHeadersRow();
|
||||
for (BaseGlyphSet set:BaseGlyphSet.values()) {
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(set.BȍőnNaam());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(print10Numbers(set));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(print16Numbers(set));
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private String print10Numbers(BaseGlyphSet set) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
for (int i=0;i<10;i++) {
|
||||
buf.append(set.BȍőnNumber10().BȍőnCharFor(i));
|
||||
buf.append(set.BȍőnNumber10().BȍőnCharSeperator());
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
private String print16Numbers(BaseGlyphSet set) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
int x=240;
|
||||
for (int i=0;i<16;i++) {
|
||||
buf.append(set.BȍőnPrintNumber16(i + x, 99));
|
||||
buf.append(" ");
|
||||
x = x - 16;
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
package love.distributedrebirth.gdxapp.desktop.apps;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import imgui.type.ImInt;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
import love.distributedrebirth.numberxd.base2t.Base2PartsFactory;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt1ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt2ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt3ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt4ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartʸᴰ;
|
||||
import love.distributedrebirth.numberxd.glyph.BaseGlyphSet;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class SystemBasePartApp extends DefaultDeskApp implements DeskAppRenderer {
|
||||
|
||||
private ImInt selectedBasePart = new ImInt();
|
||||
|
||||
public SystemBasePartApp() {
|
||||
super("Base Parts", "");
|
||||
getContours().registrateContour(DeskAppContourSection.MAIN, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
List<String> bases = new ArrayList<>();
|
||||
for (int base:Base2PartsFactory.INSTANCE.BãßBases()) {
|
||||
bases.add(Integer.toString(base));
|
||||
}
|
||||
String[] items = new String[bases.size()];
|
||||
items = bases.toArray(items);
|
||||
String selectedItem = items[selectedBasePart.get()];
|
||||
Integer baseNumber = Integer.valueOf(selectedItem);
|
||||
BãßBȍőnPartʸᴰ<?>[] baseParts = Base2PartsFactory.INSTANCE.BãßBuildPartsByBase(baseNumber);
|
||||
|
||||
ImGui.combo("Base", selectedBasePart, items);
|
||||
|
||||
ImGui.text("Name:");
|
||||
ImGui.sameLine();
|
||||
ImGui.text(baseParts[0].BãßClassNaam());
|
||||
|
||||
ImGui.text("Purpose:");
|
||||
ImGui.sameLine();
|
||||
ImGui.text(baseParts[0].BãßClassPurpose());
|
||||
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("base-part", 21, flags);
|
||||
ImGui.tableSetupColumn("BȍőnNaam");
|
||||
ImGui.tableSetupColumn("TelNul");
|
||||
ImGui.tableSetupColumn("TelEen");
|
||||
ImGui.tableSetupColumn("Tone");
|
||||
ImGui.tableSetupColumn("10Tone");
|
||||
ImGui.tableSetupColumn("10Kor");
|
||||
ImGui.tableSetupColumn("10DTMF");
|
||||
ImGui.tableSetupColumn("16Tone");
|
||||
ImGui.tableSetupColumn("16Kor");
|
||||
ImGui.tableSetupColumn("16LatB");
|
||||
ImGui.tableSetupColumn("36Tone");
|
||||
ImGui.tableSetupColumn("36Kor");
|
||||
ImGui.tableSetupColumn("36LatB");
|
||||
ImGui.tableSetupColumn("36Gre");
|
||||
ImGui.tableSetupColumn("36Heb");
|
||||
ImGui.tableSetupColumn("prcK");
|
||||
ImGui.tableSetupColumn("prcV");
|
||||
ImGui.tableSetupColumn("Alt1");
|
||||
ImGui.tableSetupColumn("Alt2");
|
||||
ImGui.tableSetupColumn("Alt3");
|
||||
ImGui.tableSetupColumn("Alt4");
|
||||
ImGui.tableHeadersRow();
|
||||
|
||||
for (BãßBȍőnPartʸᴰ<?> part:baseParts) {
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnNaam());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(Integer.toString(part.BȍőnRangTelNul()));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(Integer.toString(part.BȍőnRangTelEen()));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnDialTone());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.TONE_SCRIPT));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.KOREAN));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.LATIN_DTMF));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.TONE_SCRIPT));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.KOREAN));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.LATIN_BASIC));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.TONE_SCRIPT));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.KOREAN));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.LATIN_BASIC));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.GREEK));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.HEBREW));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnChinaKey());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnChinaValue());
|
||||
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt1ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt1ʸᴰ.class.cast(part).BȍőnAlt1Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt2ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt2ʸᴰ.class.cast(part).BȍőnAlt2Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt3ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt3ʸᴰ.class.cast(part).BȍőnAlt3Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt4ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt4ʸᴰ.class.cast(part).BȍőnAlt4Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package love.distributedrebirth.gdxapp.desktop.apps;
|
||||
|
||||
import imgui.ImColor;
|
||||
import imgui.ImDrawList;
|
||||
import imgui.ImGui;
|
||||
import imgui.ImVec2;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class Unicode4DApp extends DefaultDeskApp implements DeskAppRenderer {
|
||||
|
||||
public Unicode4DApp() {
|
||||
super("Unicode4D", "");
|
||||
getContours().registrateContour(DeskAppContourSection.MAIN, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
ImGui.text("There is unicode and unicode4D");
|
||||
ImVec2 size = new ImVec2(144f, 48f);
|
||||
ImGui.invisibleButton("canvas", size.x, size.y);
|
||||
ImVec2 p0 = ImGui.getItemRectMin();
|
||||
ImVec2 p1 = ImGui.getItemRectMax(); // p1 = p0 + size
|
||||
ImDrawList drawList = ImGui.getWindowDrawList();
|
||||
drawList.pushClipRect(p0.x, p0.y, p1.x, p1.y);
|
||||
// draw unicode4D
|
||||
drawList.addQuad(p0.x, p0.y, p0.x+size.x, p0.y, p1.x, p1.y, p0.x, p0.y+size.y,
|
||||
ImColor.intToColor(127, 127, 255, 255), 5f);
|
||||
|
||||
drawList.addLine(p0.x+10, p0.y+40, p0.x+20, p0.y+10, ImColor.intToColor(255, 127, 63, 255));
|
||||
drawList.addLine(p0.x+30, p0.y+40, p0.x+20, p0.y+10, ImColor.intToColor(255, 127, 63, 255));
|
||||
drawList.addLine(p0.x+13, p0.y+30, p0.x+27, p0.y+30, ImColor.intToColor(255, 127, 63, 255));
|
||||
|
||||
drawList.popClipRect();
|
||||
|
||||
//System.out.println("p0.x="+p0.x+" p0.y="+p0.y);
|
||||
//System.out.println("p1.x="+p1.x+" p1.y="+p1.y);
|
||||
|
||||
// for (int n = 0; n < (1.0f + Math.sin(ImGui.getTime() * 5.7f)) * 40.0f; n++) {
|
||||
// drawList.addCircle(p0.x + size.x * 0.5f, p0.y + size.y * 0.5f, size.y * (0.01f + n * 0.03f),
|
||||
// ImColor.intToColor(255, 140 - n * 4, n * 3, 255)
|
||||
// );
|
||||
// }
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.music;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import imgui.flag.ImGuiSelectableFlags;
|
||||
import imgui.flag.ImGuiTableColumnFlags;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import imgui.type.ImBoolean;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.ImGuiRendererMain;
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooserCallback;
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooserConfiguration;
|
||||
|
||||
/**
|
||||
* The music player ui.
|
||||
*/
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class MusicPlayerRenderer extends ImGuiRendererMain {
|
||||
|
||||
private final NativeFileChooserConfiguration fileChooserConfig;
|
||||
|
||||
public MusicPlayerRenderer(GDXAppMain main) {
|
||||
super(main);
|
||||
fileChooserConfig = new NativeFileChooserConfiguration();
|
||||
fileChooserConfig.directory = Gdx.files.absolute(System.getProperty("user.home"));
|
||||
fileChooserConfig.mimeFilter = "audio/*";
|
||||
fileChooserConfig.title = "Choose audio file";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ImBoolean widgetOpen) {
|
||||
ImGui.setNextWindowPos(100, 100, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(320, 240, ImGuiCond.FirstUseEver);
|
||||
if (ImGui.begin("Music Player", widgetOpen)) {
|
||||
ImGui.text("Current Song:");
|
||||
MusicSong currentSong = main.music.getCurrentSong();
|
||||
if (currentSong != null) {
|
||||
ImGui.sameLine();
|
||||
ImGui.text(currentSong.getName());
|
||||
}
|
||||
ImGui.separator();
|
||||
if (currentSong != null) {
|
||||
if (ImGui.button("Play")) {
|
||||
main.music.play(currentSong);
|
||||
}
|
||||
} else {
|
||||
ImGui.text("Play");
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button("<")) {
|
||||
main.music.prev();
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button(">")) {
|
||||
main.music.next();
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button("Stop")) {
|
||||
main.music.stop();
|
||||
}
|
||||
ImGui.sameLine();
|
||||
if (ImGui.button("Add")) {
|
||||
main.fileChooser.chooseFile(fileChooserConfig, NativeFileChooserCallbackAdapter.onFileChosen(v -> main.music.addBackgroundMusic(v)));
|
||||
}
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("playlist", 3, flags);
|
||||
ImGui.tableSetupColumn("#", ImGuiTableColumnFlags.NoHide);
|
||||
ImGui.tableSetupColumn("Play");
|
||||
ImGui.tableSetupColumn("Name");
|
||||
ImGui.tableHeadersRow();
|
||||
int i=1;
|
||||
for (MusicSong song:main.music.getBackgroundSongs()) {
|
||||
ImGui.pushID(i);
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.selectable(""+i, song.isPlaying(), ImGuiSelectableFlags.None);
|
||||
ImGui.tableNextColumn();
|
||||
if (ImGui.smallButton(">")) {
|
||||
main.music.play(song);
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.selectable(song.getName(), song.isPlaying(), ImGuiSelectableFlags.None);
|
||||
ImGui.popID();
|
||||
i++;
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
ImGui.end();
|
||||
}
|
||||
|
||||
static class NativeFileChooserCallbackAdapter implements NativeFileChooserCallback {
|
||||
|
||||
@Override
|
||||
public void onFileChosen(FileHandle file) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancellation() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
}
|
||||
|
||||
static NativeFileChooserCallbackAdapter onFileChosen(Consumer<FileHandle> eater) {
|
||||
return new NativeFileChooserCallbackAdapter() {
|
||||
@Override
|
||||
public void onFileChosen(FileHandle file) {
|
||||
eater.accept(file);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.ScreenAdapter;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.PerspectiveCamera;
|
||||
import com.badlogic.gdx.graphics.g3d.ModelBatch;
|
||||
import com.badlogic.gdx.graphics.g3d.ModelInstance;
|
||||
import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController;
|
||||
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
|
||||
import love.distributedrebirth.gdxapp.GDXAppScreen;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskApp;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppScreen;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppScreenListener;
|
||||
import love.distributedrebirth.gdxapp.desktop.FilteringInputProcessor;
|
||||
|
||||
public abstract class AbstractScreenDesktop extends ScreenAdapter implements GDXAppScreen {
|
||||
|
||||
private final DeskAppScreen deskAppScreen;
|
||||
private PerspectiveCamera cam;
|
||||
private FirstPersonCameraController camController;
|
||||
private FilteringInputProcessor inputFilter;
|
||||
private ModelBatch modelBatch;
|
||||
private Array<ModelInstance> modelInstances = new Array<ModelInstance>();
|
||||
|
||||
public AbstractScreenDesktop(String name) {
|
||||
this.create();
|
||||
deskAppScreen = new DeskAppScreen(name);
|
||||
deskAppScreen.addDeskAppListener(new DeskAppScreenListener() {
|
||||
|
||||
@Override
|
||||
public void selectDeskApp(DeskApp deskApp) {
|
||||
if (deskApp == null) {
|
||||
inputFilter.setFiltering(false);
|
||||
} else {
|
||||
inputFilter.setFiltering(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void createModel(ModelBuilder modelBuilder, Array<ModelInstance> modelInstances) {
|
||||
|
||||
}
|
||||
|
||||
private void create() {
|
||||
modelBatch = new ModelBatch();
|
||||
|
||||
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||
cam.position.set(10f, 10f, 10f);
|
||||
cam.lookAt(0, 0, 0);
|
||||
cam.near = 1f;
|
||||
cam.far = 300f;
|
||||
cam.update();
|
||||
|
||||
ModelBuilder modelBuilder = new ModelBuilder();
|
||||
createModel(modelBuilder, modelInstances);
|
||||
|
||||
camController = new FirstPersonCameraController(cam);
|
||||
//camController = new CameraInputController(cam);
|
||||
|
||||
inputFilter = new FilteringInputProcessor(camController);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void show() {
|
||||
Gdx.input.setInputProcessor(inputFilter);
|
||||
showDesktop();
|
||||
}
|
||||
|
||||
protected void showDesktop() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void hide() {
|
||||
Gdx.input.setInputProcessor(null);
|
||||
hideDesktop();
|
||||
}
|
||||
|
||||
protected void hideDesktop() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void dispose() {
|
||||
modelBatch.dispose();
|
||||
disposeDesktop();
|
||||
}
|
||||
|
||||
protected void disposeDesktop() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void render(float delta) {
|
||||
camController.update();
|
||||
|
||||
Gdx.gl.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight());
|
||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
renderDesktop(delta, modelBatch, cam, modelInstances);
|
||||
}
|
||||
|
||||
protected void renderDesktop(float delta, ModelBatch modelBatch, PerspectiveCamera cam, Array<ModelInstance> modelInstances) {
|
||||
modelBatch.begin(cam);
|
||||
for (ModelInstance instance : modelInstances) {
|
||||
modelBatch.render(instance);
|
||||
}
|
||||
modelBatch.end();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeskAppScreen getDeskAppScreen() {
|
||||
return deskAppScreen;
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import imgui.type.ImBoolean;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.ImGuiRendererMain;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class BasicConsoleRenderer extends ImGuiRendererMain {
|
||||
|
||||
public BasicConsoleRenderer(GDXAppMain main) {
|
||||
super(main);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ImBoolean widgetOpen) {
|
||||
ImGui.setNextWindowPos(300, 300, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(320, 240, ImGuiCond.FirstUseEver);
|
||||
if (ImGui.begin("The BASIC Shahada of DUNE", widgetOpen)) {
|
||||
ImGui.text("10 PRINT \"THERE IS NO GOD BUT @Ω仙⁴\"");
|
||||
ImGui.text("20 PRINT \"THERE IS NO RULE BUT CONSENT\"");
|
||||
ImGui.text("30 PRINT \"THERE IS NO FAILURE BUT DEATH\"");
|
||||
ImGui.text("40 PRINT \"TERRY A. DAVIS WAS THE PROPHET OF @Ω仙9⁴\"");
|
||||
ImGui.text("50 PRINT \"TERRY A. DAVIS WAS THE FIRST TRUE MENTAT\"");
|
||||
ImGui.text("60 PRINT \"TERRY A. DAVIS WAS THE BEST CODER ALIVE\"");
|
||||
ImGui.text("RUN");
|
||||
}
|
||||
ImGui.end();
|
||||
}
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import imgui.type.ImBoolean;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.ImGuiRendererMain;
|
||||
import love.distributedrebirth.numberxd.Gê̄ldGetậl;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class HebrewWalletRenderer extends ImGuiRendererMain {
|
||||
|
||||
public HebrewWalletRenderer(GDXAppMain main) {
|
||||
super(main);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ImBoolean widgetOpen) {
|
||||
ImGui.setNextWindowPos(200, 200, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(640, 480, ImGuiCond.FirstUseEver);
|
||||
if (ImGui.begin("Hebrew Wallet", widgetOpen)) {
|
||||
ImGui.text("Current amount:");
|
||||
ImGui.sameLine();
|
||||
ImGui.text("0000");
|
||||
ImGui.separator();
|
||||
if (ImGui.button("Pay")) {
|
||||
}
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("wallet", 4, flags);
|
||||
ImGui.tableSetupColumn("In/Out");
|
||||
ImGui.tableSetupColumn("AmountRaw");
|
||||
ImGui.tableSetupColumn("AmountFix");
|
||||
ImGui.tableSetupColumn("Decimal");
|
||||
ImGui.tableHeadersRow();
|
||||
|
||||
String[] walletData = {
|
||||
"ה","מ","מָ","ח","חֱ","חֱמָא",
|
||||
"א","בד","ב","ד","ץףן",
|
||||
"הזפץ","מספר","צצצצ","ץאאא","דואר"
|
||||
};
|
||||
for (String data:walletData) {
|
||||
Gê̄ldGetậl geld = new Gê̄ldGetậl(data);
|
||||
Gê̄ldGetậl geld2 = geld.toClone(); // unit test
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(data.length()==2||data.length()==3?"OUT":"IN");
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(data);
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(geld2.toHebrewString(true)); // true=reverse for ImGui
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(Double.toString(geld.getTotalDecimalValue()));
|
||||
}
|
||||
ImGui.endTable();
|
||||
}
|
||||
ImGui.end();
|
||||
}
|
||||
}
|
|
@ -74,7 +74,7 @@ public class ScreenCredits extends AbstractScrollScreen {
|
|||
|
||||
@Override
|
||||
protected Class<? extends Screen> getNextScreen(GDXAppMain main) {
|
||||
return ScreenDefault.class;
|
||||
return ScreenDesktop0.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,14 +6,18 @@ import com.badlogic.gdx.graphics.Texture;
|
|||
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.GDXAppScreen;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppScreen;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class ScreenDefault extends ScreenAdapter {
|
||||
public class ScreenDesktop0 extends ScreenAdapter implements GDXAppScreen {
|
||||
private final GDXAppMain main;
|
||||
private DeskAppScreen deskAppScreen;
|
||||
private Texture backgroundImage;
|
||||
|
||||
public ScreenDefault(final GDXAppMain main) {
|
||||
public ScreenDesktop0(final GDXAppMain main) {
|
||||
this.main = main;
|
||||
deskAppScreen = new DeskAppScreen("Desktop0");
|
||||
backgroundImage = new Texture(Gdx.files.internal("background/terrydavis-front.png"));
|
||||
}
|
||||
|
||||
|
@ -28,4 +32,9 @@ public class ScreenDefault extends ScreenAdapter {
|
|||
public void dispose() {
|
||||
backgroundImage.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeskAppScreen getDeskAppScreen() {
|
||||
return deskAppScreen;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.ScreenAdapter;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.GDXAppScreen;
|
||||
import love.distributedrebirth.gdxapp.desktop.DeskAppScreen;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class ScreenDesktop1 extends ScreenAdapter implements GDXAppScreen {
|
||||
private final GDXAppMain main;
|
||||
private DeskAppScreen deskAppScreen;
|
||||
private Texture backgroundImage;
|
||||
|
||||
public ScreenDesktop1(final GDXAppMain main) {
|
||||
this.main = main;
|
||||
deskAppScreen = new DeskAppScreen("Desktop1");
|
||||
backgroundImage = new Texture(Gdx.files.internal("background/terrydavis-nose.png"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(float delta) {
|
||||
main.batch.begin();
|
||||
main.batch.draw(backgroundImage, 0, 0, main.viewWidth, main.viewHeight);
|
||||
main.batch.end();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
backgroundImage.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeskAppScreen getDeskAppScreen() {
|
||||
return deskAppScreen;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
|
||||
import com.badlogic.gdx.graphics.g3d.Material;
|
||||
import com.badlogic.gdx.graphics.g3d.Model;
|
||||
import com.badlogic.gdx.graphics.g3d.ModelInstance;
|
||||
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
|
||||
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class ScreenDesktop2 extends AbstractScreenDesktop {
|
||||
private Model grid;
|
||||
|
||||
public ScreenDesktop2() {
|
||||
super("Desktop2");
|
||||
}
|
||||
|
||||
protected void createModel(ModelBuilder modelBuilder, Array<ModelInstance> modelInstances) {
|
||||
grid = modelBuilder.createLineGrid(33, 33, 1f, 1f, new Material(ColorAttribute.createDiffuse(1f,1f,1f,.1f)), Usage.Position | Usage.Normal);
|
||||
modelInstances.add(new ModelInstance(grid, 0, 0, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void disposeDesktop() {
|
||||
grid.dispose();
|
||||
}
|
||||
}
|
|
@ -1,21 +1,17 @@
|
|||
package love.distributedrebirth.gdxapp.matrix4d;
|
||||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.PerspectiveCamera;
|
||||
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFontCache;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.g3d.Environment;
|
||||
import com.badlogic.gdx.graphics.g3d.Material;
|
||||
import com.badlogic.gdx.graphics.g3d.Model;
|
||||
import com.badlogic.gdx.graphics.g3d.ModelBatch;
|
||||
import com.badlogic.gdx.graphics.g3d.ModelInstance;
|
||||
import com.badlogic.gdx.graphics.g3d.Shader;
|
||||
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
|
||||
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;
|
||||
import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController;
|
||||
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
|
||||
import com.badlogic.gdx.math.Matrix4;
|
||||
import com.badlogic.gdx.math.Vector3;
|
||||
|
@ -23,159 +19,58 @@ import com.badlogic.gdx.utils.Align;
|
|||
import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.viewport.ScreenViewport;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMainAdapter;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class ScreenMatrix4D extends GDXAppMainAdapter {
|
||||
public Environment environment;
|
||||
public PerspectiveCamera cam;
|
||||
public FirstPersonCameraController camController;
|
||||
public Shader shader;
|
||||
public ModelBatch modelBatch;
|
||||
public class ScreenDesktop3 extends AbstractScreenDesktop {
|
||||
private final Shader shader;
|
||||
private final BitmapFont font;
|
||||
private final BitmapFontCache fontCache;
|
||||
private final ScreenViewport uiViewport = new ScreenViewport();
|
||||
private final SpriteBatch spriteBatch;
|
||||
private final Vector3 textPosition = new Vector3(6.5f, 10.5f, 5.5f);
|
||||
private Model grid;
|
||||
private Model model;
|
||||
public Array<ModelInstance> modelInstances = new Array<ModelInstance>();
|
||||
//endregion
|
||||
|
||||
//region Text rendering
|
||||
public BitmapFont font;
|
||||
public BitmapFontCache fontCache;
|
||||
|
||||
public final ScreenViewport uiViewport = new ScreenViewport();
|
||||
public SpriteBatch spriteBatch;
|
||||
|
||||
/** World-space position of the text. (Corner of the cube.) */
|
||||
public Vector3 textPosition = new Vector3(6.5f, 10.5f, 5.5f);
|
||||
//endregion
|
||||
|
||||
private float colorDeltaTime = 0f;
|
||||
private float colorFade = 0f;
|
||||
private boolean colorPositive = true;
|
||||
|
||||
public ScreenMatrix4D(final GDXAppMain main) {
|
||||
super(main);
|
||||
this.create();
|
||||
}
|
||||
|
||||
private void create() {
|
||||
//region 3D Objects
|
||||
environment = new Environment();
|
||||
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
|
||||
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
|
||||
|
||||
modelBatch = new ModelBatch();
|
||||
|
||||
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||
cam.position.set(10f, 10f, 10f);
|
||||
cam.lookAt(0, 0, 0);
|
||||
cam.near = 1f;
|
||||
cam.far = 300f;
|
||||
cam.update();
|
||||
|
||||
ModelBuilder modelBuilder = new ModelBuilder();
|
||||
|
||||
grid = modelBuilder.createLineGrid(33, 33, 1f, 1f, new Material(ColorAttribute.createDiffuse(1f,1f,1f,.1f)), Usage.Position | Usage.Normal);
|
||||
model = modelBuilder.createBox(.3f, .3f, .3f,new Material(ColorAttribute.createDiffuse(.1f,.1f,.1f,0f)), Usage.Position | Usage.Normal);
|
||||
|
||||
for (int x = -4; x < 6; x++) {
|
||||
for (int y = 1; y < 11; y++) {
|
||||
for (int z = -4; z < 7; z++) {
|
||||
ModelInstance instance = new ModelInstance(model, x, y, z);
|
||||
modelInstances.add(instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ModelInstance instance = new ModelInstance(grid, 0, 0, 0);
|
||||
modelInstances.add(instance);
|
||||
|
||||
public ScreenDesktop3() {
|
||||
super("Desktop3");
|
||||
shader = new UserColorShader();
|
||||
shader.init();
|
||||
camController = new FirstPersonCameraController(cam);
|
||||
//camController = new CameraInputController(cam);
|
||||
Gdx.input.setInputProcessor(camController);
|
||||
//endregion
|
||||
|
||||
//region Text rendering
|
||||
font = new BitmapFont();
|
||||
fontCache = new BitmapFontCache(font, false);
|
||||
spriteBatch = new SpriteBatch();
|
||||
//endregion
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiply 4x4 matrix {@code m} and 4D vector {$code (v, vW)} together.
|
||||
* Store result {@code (x/w, y/w, z/w)} back in {@code v} and return {@code w}.
|
||||
*/
|
||||
private static float multiplyProjective(Matrix4 m, Vector3 v, float vW) {
|
||||
final float[] mat = m.val;
|
||||
final float x = v.x * mat[Matrix4.M00] + v.y * mat[Matrix4.M01] + v.z * mat[Matrix4.M02] + vW * mat[Matrix4.M03];
|
||||
final float y = v.x * mat[Matrix4.M10] + v.y * mat[Matrix4.M11] + v.z * mat[Matrix4.M12] + vW * mat[Matrix4.M13];
|
||||
final float z = v.x * mat[Matrix4.M20] + v.y * mat[Matrix4.M21] + v.z * mat[Matrix4.M22] + vW * mat[Matrix4.M23];
|
||||
final float w = v.x * mat[Matrix4.M30] + v.y * mat[Matrix4.M31] + v.z * mat[Matrix4.M32] + vW * mat[Matrix4.M33];
|
||||
final float iw = 1f / w;
|
||||
v.set(x * iw, y * iw, z * iw);
|
||||
return w;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(float delta) {
|
||||
colorDeltaTime += delta;
|
||||
if (colorDeltaTime > 0.04f) {
|
||||
colorDeltaTime = 0f;
|
||||
if (colorPositive) {
|
||||
colorFade += delta;
|
||||
} else {
|
||||
colorFade -= delta;
|
||||
}
|
||||
if (colorFade > 1f) {
|
||||
colorPositive = false;
|
||||
} else if (colorFade < .5f) {
|
||||
colorPositive = true;
|
||||
}
|
||||
}
|
||||
|
||||
int i=0;
|
||||
protected void createModel(ModelBuilder modelBuilder, Array<ModelInstance> modelInstances) {
|
||||
model = modelBuilder.createBox(.3f, .3f, .3f,new Material(ColorAttribute.createDiffuse(.1f,.1f,.1f,0f)), Usage.Position | Usage.Normal);
|
||||
for (int x = -4; x < 6; x++) {
|
||||
for (int y = 1; y < 11; y++) {
|
||||
for (int z = -4; z < 7; z++) {
|
||||
float red = .1f;
|
||||
float green = (y+2f)/10f*colorFade;
|
||||
float blue = .1f;
|
||||
if (x == 3 || y == 1 || z == -1) {
|
||||
red = (y+2f)/10f*colorFade;
|
||||
green = 0f;
|
||||
modelInstances.add(new ModelInstance(model, x, y, z));
|
||||
}
|
||||
if (x == -1 || y == 10 || z == 5) {
|
||||
green = 0f;
|
||||
blue = (y+2f)/10f*colorFade;
|
||||
}
|
||||
}
|
||||
grid = modelBuilder.createLineGrid(33, 33, 1f, 1f, new Material(ColorAttribute.createDiffuse(1f,1f,1f,.1f)), Usage.Position | Usage.Normal);
|
||||
modelInstances.add(new ModelInstance(grid, 0, 0, 0));
|
||||
}
|
||||
|
||||
ModelInstance instance = modelInstances.get(i++);
|
||||
ColorAttribute attr = ColorAttribute.createDiffuse(red, green, blue, 1f);
|
||||
instance.materials.get(0).set(attr);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void disposeDesktop() {
|
||||
grid.dispose();
|
||||
model.dispose();
|
||||
}
|
||||
|
||||
//region 3D Objects
|
||||
camController.update();
|
||||
|
||||
Gdx.gl.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight());
|
||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
|
||||
protected void renderDesktop(float delta, ModelBatch modelBatch, PerspectiveCamera cam, Array<ModelInstance> modelInstances) {
|
||||
colorFade(delta, modelInstances);
|
||||
|
||||
modelBatch.begin(cam);
|
||||
for (ModelInstance instance : modelInstances) {
|
||||
modelBatch.render(instance, shader);
|
||||
}
|
||||
modelBatch.end();
|
||||
//endregion
|
||||
|
||||
//region Text rendering
|
||||
|
||||
// Multiply vector with world-space position with 3D projection-view matrix
|
||||
final Vector3 clipSpacePos = new Vector3(textPosition);
|
||||
|
@ -215,29 +110,60 @@ public class ScreenMatrix4D extends GDXAppMainAdapter {
|
|||
fontCache.draw(spriteBatch);
|
||||
spriteBatch.end();
|
||||
}
|
||||
//endregion
|
||||
|
||||
|
||||
ImGui.setNextWindowPos(300, 300, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(320, 240, ImGuiCond.FirstUseEver);
|
||||
ImGui.begin("Legends");
|
||||
|
||||
ImGui.text("ComputerNode: XCV 330");
|
||||
ImGui.text("ComputerMatrix: 100 crew and 850 passengers");
|
||||
ImGui.separator();
|
||||
ImGui.textColored(255, 1, 1, 255, "Red is absolute line.");
|
||||
ImGui.textColored(10, 1, 255, 255, "Blue is absolute line.");
|
||||
ImGui.textColored(255, 1, 255, 255, "Pink is absolute node.");
|
||||
ImGui.textColored(1, 255, 1, 255, "Green is relative node.");
|
||||
ImGui.textColored(200, 200, 5, 255, "Yellow is I/O node.");
|
||||
ImGui.textColored(1, 1, 1, 255, "White is dipavali route.");
|
||||
ImGui.end();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
shader.dispose();
|
||||
modelBatch.dispose();
|
||||
model.dispose();
|
||||
/**
|
||||
* Multiply 4x4 matrix {@code m} and 4D vector {$code (v, vW)} together.
|
||||
* Store result {@code (x/w, y/w, z/w)} back in {@code v} and return {@code w}.
|
||||
*/
|
||||
private static float multiplyProjective(Matrix4 m, Vector3 v, float vW) {
|
||||
final float[] mat = m.val;
|
||||
final float x = v.x * mat[Matrix4.M00] + v.y * mat[Matrix4.M01] + v.z * mat[Matrix4.M02] + vW * mat[Matrix4.M03];
|
||||
final float y = v.x * mat[Matrix4.M10] + v.y * mat[Matrix4.M11] + v.z * mat[Matrix4.M12] + vW * mat[Matrix4.M13];
|
||||
final float z = v.x * mat[Matrix4.M20] + v.y * mat[Matrix4.M21] + v.z * mat[Matrix4.M22] + vW * mat[Matrix4.M23];
|
||||
final float w = v.x * mat[Matrix4.M30] + v.y * mat[Matrix4.M31] + v.z * mat[Matrix4.M32] + vW * mat[Matrix4.M33];
|
||||
final float iw = 1f / w;
|
||||
v.set(x * iw, y * iw, z * iw);
|
||||
return w;
|
||||
}
|
||||
|
||||
private void colorFade(float delta, Array<ModelInstance> modelInstances) {
|
||||
colorDeltaTime += delta;
|
||||
if (colorDeltaTime > 0.04f) {
|
||||
colorDeltaTime = 0f;
|
||||
if (colorPositive) {
|
||||
colorFade += delta;
|
||||
} else {
|
||||
colorFade -= delta;
|
||||
}
|
||||
if (colorFade > 1f) {
|
||||
colorPositive = false;
|
||||
} else if (colorFade < .5f) {
|
||||
colorPositive = true;
|
||||
}
|
||||
}
|
||||
|
||||
int i=0;
|
||||
for (int x = -4; x < 6; x++) {
|
||||
for (int y = 1; y < 11; y++) {
|
||||
for (int z = -4; z < 7; z++) {
|
||||
float red = .1f;
|
||||
float green = (y+2f)/10f*colorFade;
|
||||
float blue = .1f;
|
||||
if (x == 3 || y == 1 || z == -1) {
|
||||
red = (y+2f)/10f*colorFade;
|
||||
green = 0f;
|
||||
}
|
||||
if (x == -1 || y == 10 || z == 5) {
|
||||
green = 0f;
|
||||
blue = (y+2f)/10f*colorFade;
|
||||
}
|
||||
|
||||
ModelInstance instance = modelInstances.get(i++);
|
||||
ColorAttribute attr = ColorAttribute.createDiffuse(red, green, blue, 1f);
|
||||
instance.materials.get(0).set(attr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -57,7 +57,7 @@ public class ScreenHelp extends AbstractScrollScreen {
|
|||
|
||||
@Override
|
||||
protected Class<? extends Screen> getNextScreen(GDXAppMain main) {
|
||||
return ScreenDefault.class;
|
||||
return ScreenDesktop0.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -67,7 +67,7 @@ public class ScreenIntroMission extends AbstractScrollScreen {
|
|||
|
||||
@Override
|
||||
protected Class<? extends Screen> getNextScreen(GDXAppMain main) {
|
||||
return ScreenDefault.class;
|
||||
return ScreenDesktop0.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import imgui.ImColor;
|
||||
import imgui.ImDrawList;
|
||||
import imgui.ImGui;
|
||||
import imgui.ImVec2;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMainAdapter;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class ScreenUnicode4D extends GDXAppMainAdapter {
|
||||
|
||||
public ScreenUnicode4D(final GDXAppMain main) {
|
||||
super(main);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(float delta) {
|
||||
main.batch.begin();
|
||||
main.font.draw(main.batch, "Tap anywhere to begin!", main.viewWidth/2 - 73, 33);
|
||||
main.batch.end();
|
||||
|
||||
ImGui.setNextWindowPos(400, 200, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(320, 240, ImGuiCond.FirstUseEver);
|
||||
if (ImGui.begin("Unicode4D test")) {
|
||||
ImGui.text("There is unicode and unicode4D");
|
||||
ImVec2 size = new ImVec2(144f, 48f);
|
||||
ImGui.invisibleButton("canvas", size.x, size.y);
|
||||
ImVec2 p0 = ImGui.getItemRectMin();
|
||||
ImVec2 p1 = ImGui.getItemRectMax(); // p1 = p0 + size
|
||||
ImDrawList drawList = ImGui.getWindowDrawList();
|
||||
drawList.pushClipRect(p0.x, p0.y, p1.x, p1.y);
|
||||
// draw unicode4D
|
||||
drawList.addQuad(p0.x, p0.y, p0.x+size.x, p0.y, p1.x, p1.y, p0.x, p0.y+size.y,
|
||||
ImColor.intToColor(127, 127, 255, 255), 5f);
|
||||
|
||||
drawList.addLine(p0.x+10, p0.y+40, p0.x+20, p0.y+10, ImColor.intToColor(255, 127, 63, 255));
|
||||
drawList.addLine(p0.x+30, p0.y+40, p0.x+20, p0.y+10, ImColor.intToColor(255, 127, 63, 255));
|
||||
drawList.addLine(p0.x+13, p0.y+30, p0.x+27, p0.y+30, ImColor.intToColor(255, 127, 63, 255));
|
||||
|
||||
drawList.popClipRect();
|
||||
}
|
||||
ImGui.end();
|
||||
|
||||
//System.out.println("p0.x="+p0.x+" p0.y="+p0.y);
|
||||
//System.out.println("p1.x="+p1.x+" p1.y="+p1.y);
|
||||
|
||||
// for (int n = 0; n < (1.0f + Math.sin(ImGui.getTime() * 5.7f)) * 40.0f; n++) {
|
||||
// drawList.addCircle(p0.x + size.x * 0.5f, p0.y + size.y * 0.5f, size.y * (0.01f + n * 0.03f),
|
||||
// ImColor.intToColor(255, 140 - n * 4, n * 3, 255)
|
||||
// );
|
||||
// }
|
||||
}
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import imgui.type.ImBoolean;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.ImGuiRendererMain;
|
||||
import love.distributedrebirth.numberxd.glyph.BaseGlyphSet;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class SystemBaseGlyphRenderer extends ImGuiRendererMain {
|
||||
|
||||
public SystemBaseGlyphRenderer(GDXAppMain main) {
|
||||
super(main);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ImBoolean widgetOpen) {
|
||||
ImGui.setNextWindowPos(200, 200, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(640, 480, ImGuiCond.FirstUseEver);
|
||||
if (ImGui.begin("Base Glyph Set", widgetOpen)) {
|
||||
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("base-part", 3, flags);
|
||||
ImGui.tableSetupColumn("Script");
|
||||
ImGui.tableSetupColumn("10Numbers");
|
||||
ImGui.tableSetupColumn("16Numbers");
|
||||
ImGui.tableHeadersRow();
|
||||
|
||||
for (BaseGlyphSet set:BaseGlyphSet.values()) {
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(set.BȍőnNaam());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(print10Numbers(set));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(print16Numbers(set));
|
||||
}
|
||||
|
||||
ImGui.endTable();
|
||||
}
|
||||
ImGui.end();
|
||||
}
|
||||
|
||||
private String print10Numbers(BaseGlyphSet set) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
for (int i=0;i<10;i++) {
|
||||
buf.append(set.BȍőnNumber10().BȍőnCharFor(i));
|
||||
buf.append(set.BȍőnNumber10().BȍőnCharSeperator());
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
private String print16Numbers(BaseGlyphSet set) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
int x=240;
|
||||
for (int i=0;i<16;i++) {
|
||||
buf.append(set.BȍőnPrintNumber16(i + x, 99));
|
||||
buf.append(" ");
|
||||
x = x - 16;
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
|
@ -1,149 +0,0 @@
|
|||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import imgui.ImGui;
|
||||
import imgui.flag.ImGuiCond;
|
||||
import imgui.flag.ImGuiTableFlags;
|
||||
import imgui.type.ImBoolean;
|
||||
import imgui.type.ImInt;
|
||||
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
|
||||
import love.distributedrebirth.gdxapp.GDXAppMain;
|
||||
import love.distributedrebirth.gdxapp.ImGuiRendererMain;
|
||||
import love.distributedrebirth.numberxd.base2t.Base2PartsFactory;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt1ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt2ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt3ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt4ʸᴰ;
|
||||
import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartʸᴰ;
|
||||
import love.distributedrebirth.numberxd.glyph.BaseGlyphSet;
|
||||
|
||||
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
|
||||
public class SystemBasePartRenderer extends ImGuiRendererMain {
|
||||
|
||||
private ImInt selectedBasePart = new ImInt();
|
||||
|
||||
public SystemBasePartRenderer(GDXAppMain main) {
|
||||
super(main);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(ImBoolean widgetOpen) {
|
||||
ImGui.setNextWindowPos(200, 200, ImGuiCond.FirstUseEver);
|
||||
ImGui.setNextWindowSize(640, 480, ImGuiCond.FirstUseEver);
|
||||
if (ImGui.begin("Base part", widgetOpen)) {
|
||||
|
||||
List<String> bases = new ArrayList<>();
|
||||
for (int base:Base2PartsFactory.INSTANCE.BãßBases()) {
|
||||
bases.add(Integer.toString(base));
|
||||
}
|
||||
String[] items = new String[bases.size()];
|
||||
items = bases.toArray(items);
|
||||
String selectedItem = items[selectedBasePart.get()];
|
||||
Integer baseNumber = Integer.valueOf(selectedItem);
|
||||
BãßBȍőnPartʸᴰ<?>[] baseParts = Base2PartsFactory.INSTANCE.BãßBuildPartsByBase(baseNumber);
|
||||
|
||||
ImGui.combo("Base", selectedBasePart, items);
|
||||
|
||||
ImGui.text("Name:");
|
||||
ImGui.sameLine();
|
||||
ImGui.text(baseParts[0].BãßClassNaam());
|
||||
|
||||
ImGui.text("Purpose:");
|
||||
ImGui.sameLine();
|
||||
ImGui.text(baseParts[0].BãßClassPurpose());
|
||||
|
||||
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
|
||||
ImGui.beginTable("base-part", 21, flags);
|
||||
ImGui.tableSetupColumn("BȍőnNaam");
|
||||
ImGui.tableSetupColumn("TelNul");
|
||||
ImGui.tableSetupColumn("TelEen");
|
||||
ImGui.tableSetupColumn("Tone");
|
||||
ImGui.tableSetupColumn("10Tone");
|
||||
ImGui.tableSetupColumn("10Kor");
|
||||
ImGui.tableSetupColumn("10DTMF");
|
||||
ImGui.tableSetupColumn("16Tone");
|
||||
ImGui.tableSetupColumn("16Kor");
|
||||
ImGui.tableSetupColumn("16LatB");
|
||||
ImGui.tableSetupColumn("36Tone");
|
||||
ImGui.tableSetupColumn("36Kor");
|
||||
ImGui.tableSetupColumn("36LatB");
|
||||
ImGui.tableSetupColumn("36Gre");
|
||||
ImGui.tableSetupColumn("36Heb");
|
||||
ImGui.tableSetupColumn("prcK");
|
||||
ImGui.tableSetupColumn("prcV");
|
||||
ImGui.tableSetupColumn("Alt1");
|
||||
ImGui.tableSetupColumn("Alt2");
|
||||
ImGui.tableSetupColumn("Alt3");
|
||||
ImGui.tableSetupColumn("Alt4");
|
||||
ImGui.tableHeadersRow();
|
||||
|
||||
for (BãßBȍőnPartʸᴰ<?> part:baseParts) {
|
||||
ImGui.tableNextRow();
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnNaam());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(Integer.toString(part.BȍőnRangTelNul()));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(Integer.toString(part.BȍőnRangTelEen()));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnDialTone());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.TONE_SCRIPT));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.KOREAN));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber10(BaseGlyphSet.LATIN_DTMF));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.TONE_SCRIPT));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.KOREAN));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber16(BaseGlyphSet.LATIN_BASIC));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.TONE_SCRIPT));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.KOREAN));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.LATIN_BASIC));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.GREEK));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnPrintGlyphSetNumber27(BaseGlyphSet.HEBREW));
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnChinaKey());
|
||||
ImGui.tableNextColumn();
|
||||
ImGui.text(part.BȍőnChinaValue());
|
||||
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt1ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt1ʸᴰ.class.cast(part).BȍőnAlt1Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt2ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt2ʸᴰ.class.cast(part).BȍőnAlt2Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt3ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt3ʸᴰ.class.cast(part).BȍőnAlt3Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
ImGui.tableNextColumn();
|
||||
if (part instanceof BãßBȍőnPartAlt4ʸᴰ) {
|
||||
ImGui.text(BãßBȍőnPartAlt4ʸᴰ.class.cast(part).BȍőnAlt4Value());
|
||||
} else {
|
||||
ImGui.text("");
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.endTable();
|
||||
}
|
||||
ImGui.end();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package love.distributedrebirth.gdxapp.matrix4d;
|
||||
package love.distributedrebirth.gdxapp.screen;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Camera;
|
Loading…
Reference in a new issue