From 758d93d9d6b4ec39368bd7f32b06ffac64475059 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Fri, 24 Jan 2025 02:39:25 +0500 Subject: feat: splash screen --- .../kz/ilotterytea/frogartha/assets/Assets.java | 1 + .../frogartha/screens/SplashScreen.java | 66 ++++++++++++++++++++-- 2 files changed, 62 insertions(+), 5 deletions(-) (limited to 'core') diff --git a/core/src/main/java/kz/ilotterytea/frogartha/assets/Assets.java b/core/src/main/java/kz/ilotterytea/frogartha/assets/Assets.java index a004c5b..44f651b 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/assets/Assets.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/assets/Assets.java @@ -7,5 +7,6 @@ public class Assets { public static class Sprites { public static final String SPRITE_LOGO = "sprites/gui/logo.png"; + public static final String SPRITE_ILOTTERYTEA = "sprites/gui/ilotterytea.png"; } } diff --git a/core/src/main/java/kz/ilotterytea/frogartha/screens/SplashScreen.java b/core/src/main/java/kz/ilotterytea/frogartha/screens/SplashScreen.java index cd1762f..4d6ae7c 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/screens/SplashScreen.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/screens/SplashScreen.java @@ -3,29 +3,83 @@ package kz.ilotterytea.frogartha.screens; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.scenes.scene2d.Action; +import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.scenes.scene2d.actions.Actions; +import com.badlogic.gdx.scenes.scene2d.ui.Image; +import com.badlogic.gdx.scenes.scene2d.ui.ProgressBar; +import com.badlogic.gdx.scenes.scene2d.ui.Skin; +import com.badlogic.gdx.scenes.scene2d.ui.Table; +import com.badlogic.gdx.utils.Align; +import com.badlogic.gdx.utils.viewport.ScreenViewport; import kz.ilotterytea.frogartha.FrogarthaGame; +import kz.ilotterytea.frogartha.assets.Assets; public class SplashScreen implements Screen { private FrogarthaGame game; + private Stage stage; + private Skin skin; + private Texture texture; + + private ProgressBar bar; + private Table table; + + private boolean areAssetsLoaded; @Override public void show() { game = FrogarthaGame.getInstance(); + + stage = new Stage(new ScreenViewport()); + skin = new Skin(Gdx.files.internal(Assets.Skins.SKIN_UI)); + texture = new Texture(Gdx.files.internal(Assets.Sprites.SPRITE_ILOTTERYTEA)); + + float stageWidth = Math.min(700f, stage.getWidth()); + + table = new Table(); + table.align(Align.center); + table.setFillParent(true); + stage.addActor(table); + + Image image = new Image(texture); + float difference = stageWidth / image.getWidth(); + image.setSize(stageWidth, image.getHeight() * difference); + table.add(image).size(image.getWidth(), image.getHeight()).padBottom(30f).row(); + + bar = new ProgressBar(0f, 100f, 1f, false, skin, "loading-screen"); + table.add(bar).width(image.getWidth()); } @Override public void render(float delta) { - Gdx.gl.glClearColor(0f, 0f, 0f, 1f); + Gdx.gl.glClearColor(1f, 1f, 1f, 1f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - if (game.getAssetManager().update()) { - game.setScreen(new MenuScreen()); + bar.setValue(100f / (game.getAssetManager().getQueuedAssets() + 1)); + + stage.act(delta); + stage.draw(); + + if (game.getAssetManager().update() && !areAssetsLoaded) { + table.addAction(Actions.sequence( + Actions.alpha(1f, 1f), + Actions.alpha(0f, 1f), + new Action() { + @Override + public boolean act(float v) { + game.setScreen(new MenuScreen()); + return false; + } + } + )); + areAssetsLoaded = true; } } @Override public void resize(int width, int height) { - + stage.getViewport().update(width, height, true); } @Override @@ -45,6 +99,8 @@ public class SplashScreen implements Screen { @Override public void dispose() { - + texture.dispose(); + skin.dispose(); + stage.dispose(); } } -- cgit v1.2.3