diff --git a/demo4d-gdxapp/assets/background/gdxapp-loading.png b/demo4d-gdxapp/assets/background/gdxapp-loading.png new file mode 100644 index 00000000..2e6f43da Binary files /dev/null and b/demo4d-gdxapp/assets/background/gdxapp-loading.png differ diff --git a/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/Demo4DMain.java b/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/Demo4DMain.java index b0e27d5f..5266e84c 100644 --- a/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/Demo4DMain.java +++ b/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/Demo4DMain.java @@ -28,6 +28,7 @@ import love.distributedrebirth.gdxapp.screen.ScreenDefault; 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.numberxd.base2t.part.warp.TOSWarpCore; import net.spookygames.gdx.nativefilechooser.NativeFileChooser; @@ -37,6 +38,7 @@ import net.spookygames.gdx.nativefilechooser.NativeFileChooser; */ @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class Demo4DMain extends Game { + private int lazyIntCnt = 33; private List args; public NativeFileChooser fileChooser; public SpriteBatch batch; @@ -61,6 +63,32 @@ public class Demo4DMain extends Game { this.fileChooser = fileChooser; } + private void lazyInit() { + if (lazyIntCnt > 0) { + lazyIntCnt--; + return; + } + ImGuiSetup.init(); + + int fileArgu = args.indexOf("warpcore-load"); + if (fileArgu != -1) { + // TODO: load warpcore + } + if (!args.contains("warpcore-nolock")) { + TOSWarpCore.INSTANCE.BãßLockWarpCipher(); + } + + if (args.contains("full-screen")) { + Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); + } + if (args.contains("no-intro")) { + selectScreen(ScreenDefault.class); + music.play(MusicSongType.BACKGROUND); + } else { + selectScreen(ScreenIntro.class); + } + } + public void create() { batch = new SpriteBatch(); font = new BitmapFont(); @@ -73,14 +101,15 @@ public class Demo4DMain extends Game { music = new MusicManager(); music.init(args.contains("no-music")); - ImGuiSetup.init(); + screens = new HashMap<>(); widgets = new HashMap<>(); + putWidget(new MusicPlayerRenderer(this)); putWidget(new HebrewWalletRenderer(this)); putWidget(new BasePartRenderer(this)); putWidget(new BasicConsoleRenderer(this)); - screens = new HashMap<>(); + putScreen(new ScreenLoading(this)); putScreen(new ScreenIntro(this)); putScreen(new ScreenIntroMission(this)); putScreen(new ScreenDefault(this)); @@ -89,22 +118,7 @@ public class Demo4DMain extends Game { putScreen(new ScreenMatrix4D(this)); putScreen(new ScreenUnicode4D(this)); - if (args.contains("no-intro")) { - selectScreen(ScreenDefault.class); - music.play(MusicSongType.BACKGROUND); - } else { - selectScreen(ScreenIntro.class); - } - if (args.contains("full-screen")) { - Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); - } - int fileArgu = args.indexOf("warpcore-load"); - if (fileArgu != -1) { - // TODO: load warpcore - } - if (!args.contains("warpcore-nolock")) { - TOSWarpCore.INSTANCE.BãßLockWarpCipher(); - } + selectScreen(ScreenLoading.class); } @Override @@ -137,6 +151,11 @@ public class Demo4DMain extends Game { @Override public void render() { ScreenUtils.clear(0f, 0f, 0f, 1f, true); + if (screen instanceof ScreenLoading) { + screen.render(Gdx.graphics.getDeltaTime()); + lazyInit(); + return; + } ImGuiSetup.imGuiImp.newFrame(); ImGui.newFrame(); if (hasMainMenu()) { diff --git a/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenDefault.java b/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenDefault.java index b6cfae32..307c1cf6 100644 --- a/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenDefault.java +++ b/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenDefault.java @@ -3,7 +3,6 @@ package love.distributedrebirth.gdxapp.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.ScreenAdapter; import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.utils.ScreenUtils; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; import love.distributedrebirth.gdxapp.Demo4DMain; @@ -20,7 +19,6 @@ public class ScreenDefault extends ScreenAdapter { @Override public void render(float delta) { - ScreenUtils.clear(0f, 0f, 0f, 1f); main.batch.begin(); main.batch.draw(backgroundImage, 0, 0, main.viewWidth, main.viewHeight); main.batch.end(); diff --git a/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenLoading.java b/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenLoading.java new file mode 100644 index 00000000..53835233 --- /dev/null +++ b/demo4d-gdxapp/src/main/love/distributedrebirth/gdxapp/screen/ScreenLoading.java @@ -0,0 +1,31 @@ +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.Demo4DMain; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class ScreenLoading extends ScreenAdapter { + private final Demo4DMain main; + private Texture backgroundImage; + + public ScreenLoading(final Demo4DMain main) { + this.main = main; + backgroundImage = new Texture(Gdx.files.internal("background/gdxapp-loading.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(); + } +}