summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2024-11-04 08:15:15 +0500
committerilotterytea <iltsu@alright.party>2024-11-04 08:15:15 +0500
commit09e7a1ae79718935e0c4a1d2b25740ca816415c3 (patch)
tree158af5f177ba52aa996a2c3b3ff2c8fca0607e5a /core/src
parent1f3f89a83a2fbd87065d5027bf3fd4dd11ac45e2 (diff)
feat: credits
Diffstat (limited to 'core/src')
-rw-r--r--core/src/kz/ilotterytea/maxon/localization/LineId.java9
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/MenuScreen.java128
2 files changed, 137 insertions, 0 deletions
diff --git a/core/src/kz/ilotterytea/maxon/localization/LineId.java b/core/src/kz/ilotterytea/maxon/localization/LineId.java
index b6241de..2ef671a 100644
--- a/core/src/kz/ilotterytea/maxon/localization/LineId.java
+++ b/core/src/kz/ilotterytea/maxon/localization/LineId.java
@@ -15,6 +15,15 @@ public enum LineId {
SoundsMusic,
SoundsSfx,
+ CreditsTitle,
+ CreditsMaxon,
+ CreditsDeveloper,
+ CreditsContributor,
+ CreditsMusic,
+ CreditsIdea,
+ CreditsTester,
+ CreditsMoral,
+
GiftboxOpen,
MinigameSlotsSpinbutton,
diff --git a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java
index 3498be1..0998cb2 100644
--- a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java
+++ b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java
@@ -20,6 +20,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
+import kz.ilotterytea.javaextra.tuples.Triple;
import kz.ilotterytea.maxon.MaxonConstants;
import kz.ilotterytea.maxon.MaxonGame;
import kz.ilotterytea.maxon.localization.LineId;
@@ -124,6 +125,14 @@ public class MenuScreen implements Screen {
brandTable.add(logo);
}
+ logo.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ super.clicked(event, x, y);
+ openCredits();
+ }
+ });
+
Image updateLogo;
if (OsUtils.isMobile) {
@@ -519,4 +528,123 @@ public class MenuScreen implements Screen {
contentTable.add(slider).grow().row();
}
}
+
+ private void openCredits() {
+ Image bgTint = new Image(uiSkin, "halftransparentblack");
+ bgTint.setFillParent(true);
+ stage.addActor(bgTint);
+
+ // Table
+ Table table = new Table();
+ table.setFillParent(true);
+ table.align(Align.center);
+
+ stage.addActor(table);
+
+ // Window
+ Table window = new Table(uiSkin);
+ window.setBackground("bg");
+ window.align(Align.center);
+ Cell<Table> tableCell = table.add(window);
+
+ if (OsUtils.isMobile) {
+ tableCell.growX();
+ } else {
+ tableCell.size(650f, 450f);
+ }
+
+ // Table for title and close button
+ Table titleTable = new Table(uiSkin);
+ titleTable.setBackground("bg2");
+ window.add(titleTable).growX().row();
+
+ // Title
+ Label titleLabel = new Label(game.getLocale().getLine(LineId.CreditsTitle), uiSkin);
+ titleTable.add(titleLabel).pad(8f, 16f, 8f, 16f).growX();
+
+ // Close button
+ TextButton closeButton = new TextButton(" X ", uiSkin);
+ closeButton.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ super.clicked(event, x, y);
+ table.remove();
+ bgTint.remove();
+ clickSound.play(soundVolume);
+ }
+ });
+ titleTable.add(closeButton).pad(8f, 16f, 8f, 16f);
+
+ // Table for contributors
+ Table contributorTable = new Table();
+ ScrollPane contributorPane = new ScrollPane(contributorTable, uiSkin);
+ contributorPane.setScrollingDisabled(true, false);
+ contributorPane.setFadeScrollBars(false);
+ window.add(contributorPane).pad(16f).grow().row();
+
+ // Creating contributors
+ Skin friendSkin = game.assetManager.get("sprites/gui/friends.skin");
+ for (int i = 0; i < MaxonConstants.GAME_DEVELOPERS.size(); i++) {
+ Triple<String, String, Integer> contributor = MaxonConstants.GAME_DEVELOPERS.get(i);
+
+ // Widget
+ Table widget = new Table();
+ widget.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ super.clicked(event, x, y);
+ Gdx.net.openURI(contributor.getSecond());
+ clickSound.play(soundVolume);
+ }
+ });
+ widget.align(Align.center);
+ contributorTable.add(widget).padBottom(16f);
+
+ // Name
+ Label name = new Label(contributor.getFirst(), uiSkin, "credits_name");
+ name.setAlignment(Align.center);
+ widget.add(name).grow().padBottom(8f).row();
+
+ // Icon
+ Image icon = new Image(friendSkin.getDrawable(contributor.getFirst()));
+ widget.add(icon).padBottom(8f).row();
+
+ // Role
+ LineId id = switch (contributor.getThird()) {
+ case 1 -> LineId.CreditsDeveloper;
+ case 2 -> LineId.CreditsContributor;
+ case 3 -> LineId.CreditsMusic;
+ case 4 -> LineId.CreditsIdea;
+ case 5 -> LineId.CreditsTester;
+ case 6 -> LineId.CreditsMoral;
+ default -> LineId.CreditsMaxon;
+ };
+
+ Label role = new Label(game.getLocale().getLine(id), uiSkin, "credits_role");
+ role.setAlignment(Align.center);
+ widget.add(role).grow().row();
+
+ if (i % 3 == 2) contributorTable.row();
+ }
+
+ // Game engine credits
+ Table engineCredits = new Table(uiSkin);
+ engineCredits.setBackground("bg2");
+ window.add(engineCredits).growX().row();
+
+ Label engineLabel = new Label("Made with", uiSkin);
+ engineCredits.add(engineLabel).padRight(16f);
+
+ TextureAtlas brandAtlas = game.assetManager.get("sprites/gui/brand.atlas");
+ Image engineImage = new Image(brandAtlas.findRegion("engine"));
+ engineImage.addListener(new ClickListener() {
+ @Override
+ public void clicked(InputEvent event, float x, float y) {
+ super.clicked(event, x, y);
+ Gdx.net.openURI("https://libgdx.com");
+ clickSound.play(soundVolume);
+ }
+ });
+ engineCredits.add(engineImage).height(32f).width(180f);
+ }
}