summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-01-21 01:10:35 +0500
committerilotterytea <iltsu@alright.party>2025-01-21 01:10:35 +0500
commit962289ebb660e51574aff136665674f0bbca5409 (patch)
tree73a86a3b26d08ee0d35f9d55c31d6dc744072f72 /core
parentc2924f54c1d5a533dcf83728c38a719f88ef0a06 (diff)
feat: menu screen
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java b/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java
new file mode 100644
index 0000000..761835e
--- /dev/null
+++ b/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java
@@ -0,0 +1,133 @@
+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.math.Interpolation;
+import com.badlogic.gdx.scenes.scene2d.InputEvent;
+import com.badlogic.gdx.scenes.scene2d.Stage;
+import com.badlogic.gdx.scenes.scene2d.actions.Actions;
+import com.badlogic.gdx.scenes.scene2d.actions.RepeatAction;
+import com.badlogic.gdx.scenes.scene2d.ui.*;
+import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+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 MenuScreen implements Screen {
+ private FrogarthaGame game;
+ private Stage stage;
+
+ @Override
+ public void show() {
+ game = FrogarthaGame.getInstance();
+
+ createStage();
+
+ Gdx.input.setInputProcessor(stage);
+ }
+
+ @Override
+ public void render(float delta) {
+ Gdx.gl.glClearColor(0f, 0f, 0f, 1f);
+ Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
+
+ stage.act(delta);
+ stage.draw();
+
+ if (game.getIdentityClient().isAuthorized()) {
+ game.setScreen(new GameScreen());
+ }
+ }
+
+ @Override
+ public void resize(int width, int height) {
+ stage.getViewport().update(width, height, true);
+ }
+
+ @Override
+ public void pause() {
+ hide();
+ }
+
+ @Override
+ public void resume() {
+ show();
+ }
+
+ @Override
+ public void hide() {
+ dispose();
+ }
+
+ @Override
+ public void dispose() {
+ stage.dispose();
+ }
+
+ private void createStage() {
+ stage = new Stage(new ScreenViewport());
+ Skin skin = game.getAssetManager().get(Assets.Skins.SKIN_UI);
+
+ // Creating main table
+ Table mainTable = new Table();
+ mainTable.setFillParent(true);
+ stage.addActor(mainTable);
+
+ // --- Brand ---
+ // Logo
+ Table logoTable = new Table();
+ Image logoImage = new Image(game.getAssetManager().get(Assets.Sprites.SPRITE_LOGO, Texture.class));
+ logoImage.setOrigin(logoImage.getWidth() / 2f, logoImage.getHeight() / 2f);
+
+ logoImage.addAction(
+ Actions.repeat(
+ RepeatAction.FOREVER,
+ Actions.sequence(
+ Actions.parallel(
+ Actions.rotateTo(-5f, 5f, Interpolation.smoother),
+ Actions.scaleTo(0.9f, 0.9f, 5f, Interpolation.smoother)
+ ),
+ Actions.parallel(
+ Actions.rotateTo(5f, 5f, Interpolation.smoother),
+ Actions.scaleTo(1.1f, 1.1f, 5f, Interpolation.smoother)
+ )
+ )
+ )
+ );
+
+ logoTable.add(logoImage).center();
+ mainTable.add(logoTable).grow().row();
+
+ // --- Credentials ---
+ Table credentialsMainTable = new Table();
+ credentialsMainTable.align(Align.center);
+ mainTable.add(credentialsMainTable).grow();
+
+ Table credentialsTable = new Table();
+ credentialsMainTable.add(credentialsTable).grow().maxWidth(384f);
+
+ // Username
+ Label usernameLabel = new Label("Username", skin);
+ credentialsTable.add(usernameLabel).grow().row();
+
+ TextField usernameField = new TextField("", skin);
+ usernameField.setMessageText("...");
+ usernameField.setTextFieldFilter((tf, c) -> Character.toString(c).matches("^[a-zA-Z0-9]"));
+ usernameField.setMaxLength(25);
+ credentialsTable.add(usernameField).padBottom(15f).grow().row();
+
+ // Login button
+ TextButton loginButton = new TextButton("Login", skin);
+ loginButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ super.clicked(event, x, y);
+ FrogarthaGame.getInstance().getIdentityClient().authorize(usernameField.getText());
+ }
+ });
+ credentialsTable.add(loginButton).grow().row();
+ }
+}