summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-01-24 02:39:25 +0500
committerilotterytea <iltsu@alright.party>2025-01-24 02:39:25 +0500
commit758d93d9d6b4ec39368bd7f32b06ffac64475059 (patch)
treed03365c77d55ab67b202f28ab44cbd1872d4c719
parent54a3d7b3177b3875532d2bed376a96e2dde0d92d (diff)
feat: splash screen
-rw-r--r--assets/sprites/gui/ilotterytea.pngbin0 -> 2259 bytes
-rw-r--r--assets/sprites/gui/ui.skin14
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/assets/Assets.java1
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/screens/SplashScreen.java66
4 files changed, 75 insertions, 6 deletions
diff --git a/assets/sprites/gui/ilotterytea.png b/assets/sprites/gui/ilotterytea.png
new file mode 100644
index 0000000..4c3d24b
--- /dev/null
+++ b/assets/sprites/gui/ilotterytea.png
Binary files differ
diff --git a/assets/sprites/gui/ui.skin b/assets/sprites/gui/ui.skin
index 5f9df6c..533d7c0 100644
--- a/assets/sprites/gui/ui.skin
+++ b/assets/sprites/gui/ui.skin
@@ -118,6 +118,14 @@
color: { hex: "#222222ff" },
name: tile
},
+ loading-screen-progressbar-bg: {
+ color: { hex: "#ddddddff" },
+ name: tile
+ },
+ loading-screen-progressbar-fg: {
+ color: { hex: "#1f2220ff" },
+ name: tile
+ },
},
// TODO: Test this file path on Android platform
com.badlogic.gdx.graphics.g2d.BitmapFont: {
@@ -336,7 +344,11 @@
default-horizontal: {
background: bar_bg,
knobBefore: bar_fg
- }
+ },
+ loading-screen: {
+ background: loading-screen-progressbar-bg,
+ knobBefore: loading-screen-progressbar-fg
+ },
},
com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: {
default-horizontal: {
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();
}
}