diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-21 01:10:35 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-21 01:10:35 +0500 |
| commit | 962289ebb660e51574aff136665674f0bbca5409 (patch) | |
| tree | 73a86a3b26d08ee0d35f9d55c31d6dc744072f72 | |
| parent | c2924f54c1d5a533dcf83728c38a719f88ef0a06 (diff) | |
feat: menu screen
| -rw-r--r-- | core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java | 133 |
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(); + } +} |
