From 09e7a1ae79718935e0c4a1d2b25740ca816415c3 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Mon, 4 Nov 2024 08:15:15 +0500 Subject: feat: credits --- assets/i18n/en_us.json | 9 ++ assets/i18n/ru_ru.json | 9 ++ assets/sprites/gui/brand.atlas | 10 +- assets/sprites/gui/brand.png | Bin 125831 -> 130602 bytes assets/sprites/gui/ui.skin | 12 ++ .../kz/ilotterytea/maxon/localization/LineId.java | 9 ++ .../kz/ilotterytea/maxon/screens/MenuScreen.java | 128 +++++++++++++++++++++ 7 files changed, 173 insertions(+), 4 deletions(-) diff --git a/assets/i18n/en_us.json b/assets/i18n/en_us.json index 38d9d34..910c942 100644 --- a/assets/i18n/en_us.json +++ b/assets/i18n/en_us.json @@ -9,6 +9,15 @@ "sounds.music": "Music", "sounds.sfx": "SFX", + "credits.title": "Those who contributed", + "credits.maxon": "Maxon himself", + "credits.developer": "Developer", + "credits.contributor": "Contributor", + "credits.music": "Music", + "credits.idea": "Idea dispenser", + "credits.tester": "Tester", + "credits.moral": "Moral supporter", + "giftbox.open": "You got", "minigame.slots.nothing": "YOU WON NOTHINGG", diff --git a/assets/i18n/ru_ru.json b/assets/i18n/ru_ru.json index 6f84954..9608889 100644 --- a/assets/i18n/ru_ru.json +++ b/assets/i18n/ru_ru.json @@ -9,6 +9,15 @@ "sounds.music": "Музыка", "sounds.sfx": "SFX", + "credits.title": "Те, кто внёс вклад", + "credits.maxon": "Максон", + "credits.developer": "Разработчик", + "credits.contributor": "Внёс вклад", + "credits.music": "Музыка", + "credits.idea": "Раздатчик идей", + "credits.tester": "Тестер", + "credits.moral": "Моральная помощь", + "giftbox.open": "Ты получил", "minigame.slots.nothing": "ТЫ НИЧЕГО НЕ ВЫИГРАЛ", diff --git a/assets/sprites/gui/brand.atlas b/assets/sprites/gui/brand.atlas index 5fe2897..0f69dba 100644 --- a/assets/sprites/gui/brand.atlas +++ b/assets/sprites/gui/brand.atlas @@ -2,10 +2,12 @@ brand.png size:1024,512 repeat:none beta -bounds:565,176,380,174 +bounds:565,226,380,174 brand -bounds:0,0,565,175 +bounds:0,50,565,175 +engine +bounds:0,0,300,50 online -bounds:0,175,565,175 +bounds:0,225,565,175 update -bounds:565,2,236,174 +bounds:565,52,236,174 diff --git a/assets/sprites/gui/brand.png b/assets/sprites/gui/brand.png index 9604fd7..41328fd 100644 Binary files a/assets/sprites/gui/brand.png and b/assets/sprites/gui/brand.png differ diff --git a/assets/sprites/gui/ui.skin b/assets/sprites/gui/ui.skin index 3a6af61..dbdeb79 100644 --- a/assets/sprites/gui/ui.skin +++ b/assets/sprites/gui/ui.skin @@ -93,6 +93,10 @@ slots: { file: fnt/FontText.fnt, scaledSize: 16 + }, + credits: { + file: fnt/FontText.fnt, + scaledSize: 16 } }, com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: { @@ -204,6 +208,14 @@ slots: { font: slots, fontColor: white + }, + credits_name: { + font: credits, + fontColor: white + }, + credits_role: { + font: credits, + fontColor: yellow } }, com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: { 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 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 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); + } } -- cgit v1.2.3