diff options
| author | ilotterytea <iltsu@alright.party> | 2024-10-25 12:16:44 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2024-10-25 12:16:44 +0500 |
| commit | 354e2876e93bf45ca6b748e9eb23093fe9bffaa6 (patch) | |
| tree | 8637b646a6176b4808695d714443839c2624a961 /core | |
| parent | f416c899aa619b21fad2f96f5f5a4475024557db (diff) | |
feat: LocalizationManager + removed unused lines and classes
Diffstat (limited to 'core')
11 files changed, 177 insertions, 340 deletions
diff --git a/core/src/kz/ilotterytea/maxon/MaxonGame.java b/core/src/kz/ilotterytea/maxon/MaxonGame.java index f457270..2dbe324 100644 --- a/core/src/kz/ilotterytea/maxon/MaxonGame.java +++ b/core/src/kz/ilotterytea/maxon/MaxonGame.java @@ -6,18 +6,18 @@ import com.badlogic.gdx.Preferences; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; +import kz.ilotterytea.maxon.localization.LocalizationManager; import kz.ilotterytea.maxon.pets.PetManager; import kz.ilotterytea.maxon.screens.SplashScreen; import kz.ilotterytea.maxon.utils.GameUpdater; -import kz.ilotterytea.maxon.utils.I18N; public class MaxonGame extends Game { public SpriteBatch batch; public ShapeRenderer shapeRenderer; public AssetManager assetManager; public Preferences prefs; - public I18N locale; + private LocalizationManager locale; private PetManager petManager; private static MaxonGame instance; @@ -33,6 +33,14 @@ public class MaxonGame extends Game { return petManager; } + public LocalizationManager getLocale() { + return locale; + } + + public void setLocale(LocalizationManager locale) { + this.locale = locale; + } + @Override public void create () { // Check the latest version @@ -41,7 +49,7 @@ public class MaxonGame extends Game { batch = new SpriteBatch(); shapeRenderer = new ShapeRenderer(); prefs = Gdx.app.getPreferences(MaxonConstants.GAME_APP_PACKAGE); - locale = new I18N(Gdx.files.internal("i18n/" + prefs.getString("lang", "en_us") + ".json")); + locale = new LocalizationManager(Gdx.files.internal("i18n/" + prefs.getString("lang", "en_us") + ".json")); Gdx.graphics.setVSync(prefs.getBoolean("vsync", true)); diff --git a/core/src/kz/ilotterytea/maxon/localization/LineId.java b/core/src/kz/ilotterytea/maxon/localization/LineId.java new file mode 100644 index 0000000..3fe2203 --- /dev/null +++ b/core/src/kz/ilotterytea/maxon/localization/LineId.java @@ -0,0 +1,75 @@ +package kz.ilotterytea.maxon.localization; + +import org.slf4j.LoggerFactory; + +import java.util.Locale; + +public enum LineId { + UpdaterInfo, + + MenuContinue, + MenuReset, + + GiftboxOpen, + + MinigameSlotsSpinbutton, + MinigameSlotsExitbutton, + MinigameSlotsBet, + MinigameSlotsNothing, + MinigameSlotsPrize, + + PetBrorName, + PetBrorDesc, + PetSandwichName, + PetSandwichDesc, + PetManlooshkaName, + PetManlooshkaDesc, + PetThirstyName, + PetThirstyDesc, + PetFuriosName, + PetFuriosDesc, + PetTvcatName, + PetTvcatDesc, + PetProgcatName, + PetProgcatDesc, + PetScreamcatName, + PetScreamcatDesc, + PetHellcatName, + PetHellcatDesc, + PetLurkerName, + PetLurkerDesc, + PetPianoName, + PetPianoDesc, + PetBeeName, + PetBeeDesc, + PetBusyName, + PetBusyDesc, + PetAeaeName, + PetAeaeDesc, + PetSuccatName, + PetSuccatDesc, + ; + + public static LineId fromJson(String value) { + StringBuilder result = new StringBuilder(); + String[] chunks = value.split("\\."); + + for (String chunk : chunks) { + chunk = chunk.replace("_", ""); + + String firstLetter = chunk.substring(0, 1).toUpperCase(Locale.ROOT); + String otherPart = chunk.substring(1); + + result.append(firstLetter).append(otherPart); + } + + value = result.toString(); + + try { + return LineId.valueOf(value); + } catch (Exception e) { + LoggerFactory.getLogger(LineId.class.getName()).error("The key '{}' not registered in LineId enum", value); + return null; + } + } +} diff --git a/core/src/kz/ilotterytea/maxon/localization/LocalizationManager.java b/core/src/kz/ilotterytea/maxon/localization/LocalizationManager.java new file mode 100644 index 0000000..afa2841 --- /dev/null +++ b/core/src/kz/ilotterytea/maxon/localization/LocalizationManager.java @@ -0,0 +1,70 @@ +package kz.ilotterytea.maxon.localization; + +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.utils.JsonReader; +import com.badlogic.gdx.utils.JsonValue; +import com.badlogic.gdx.utils.StringBuilder; + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +public class LocalizationManager { + private final Map<LineId, String> lines = new HashMap<>(); + private final FileHandle handle; + + public LocalizationManager(FileHandle localizationFile) { + this.handle = localizationFile; + + JsonValue json = new JsonReader().parse(handle); + for (JsonValue val : json.iterator()) { + LineId key = LineId.fromJson(val.name); + if (key == null) continue; + String value; + + try { + value = json.getString(val.name); + } catch (Exception e) { + value = val.name; + } + + lines.put(key, value); + } + } + + public String getLine(LineId id) { + return lines.get(id); + } + + public String getFormattedLine(LineId id, CharSequence... params) { + String line = this.getLine(id); + + if (line == null) return null; + + Scanner scanner = new Scanner(line); + StringBuilder result = new StringBuilder(); + int index = 0; + + while (scanner.hasNext()) { + String next = scanner.next(); + + if (next.contains("%s")) { + next = next.replace("%s", params[index]); + + if (index + 1 < params.length) index++; + } + + result.append(next).append(' '); + } + + return result.substring(0, result.length - 1); + } + + public FileHandle getHandle() { + return handle; + } + + public Map<LineId, String> getLines() { + return lines; + } +} diff --git a/core/src/kz/ilotterytea/maxon/pets/Pet.java b/core/src/kz/ilotterytea/maxon/pets/Pet.java index 521df0c..0106439 100644 --- a/core/src/kz/ilotterytea/maxon/pets/Pet.java +++ b/core/src/kz/ilotterytea/maxon/pets/Pet.java @@ -7,6 +7,7 @@ import com.badlogic.gdx.utils.GdxRuntimeException; import kz.ilotterytea.maxon.MaxonConstants; import kz.ilotterytea.maxon.MaxonGame; import kz.ilotterytea.maxon.anim.SpriteUtils; +import kz.ilotterytea.maxon.localization.LineId; import kz.ilotterytea.maxon.ui.AnimatedImage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,12 +53,12 @@ public class Pet { AnimatedImage icon = new AnimatedImage(regions, 5); - String name = game.locale.TranslatableText("pet." + id + ".name"); + String name = game.getLocale().getLine(LineId.fromJson("pet." + id + ".name")); if (name == null) { name = "pet." + id + ".name"; } - String description = game.locale.TranslatableText("pet." + id + ".desc"); + String description = game.getLocale().getLine(LineId.fromJson("pet." + id + ".desc")); if (description == null) { description = "pet." + id + ".desc"; } diff --git a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java index 153a5bd..14dabf8 100644 --- a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java @@ -22,10 +22,11 @@ import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.utils.viewport.ScreenViewport; import kz.ilotterytea.maxon.MaxonConstants; import kz.ilotterytea.maxon.MaxonGame; +import kz.ilotterytea.maxon.localization.LineId; +import kz.ilotterytea.maxon.localization.LocalizationManager; import kz.ilotterytea.maxon.player.Savegame; import kz.ilotterytea.maxon.ui.*; import kz.ilotterytea.maxon.utils.GameUpdater; -import kz.ilotterytea.maxon.utils.I18N; import kz.ilotterytea.maxon.utils.OsUtils; import net.mgsx.gltf.scene3d.attributes.PBRCubemapAttribute; import net.mgsx.gltf.scene3d.attributes.PBRTextureAttribute; @@ -235,7 +236,7 @@ public class MenuScreen implements Screen { }, 5, 5)); // Localization - String[] fh4Locale = game.locale.getFileHandle().nameWithoutExtension().split("_"); + String[] fh4Locale = game.getLocale().getHandle().nameWithoutExtension().split("_"); String localeButtonStyleName = "locale_" + fh4Locale[0]; ShakingImageButton localeButton = new ShakingImageButton(widgetSkin, localeButtonStyleName); @@ -249,13 +250,13 @@ public class MenuScreen implements Screen { fhArray.add(MaxonConstants.FILE_RU_RU); fhArray.add(MaxonConstants.FILE_EN_US); - if (fhArray.indexOf(game.locale.getFileHandle()) + 1 < fhArray.size()) { - index = fhArray.indexOf(game.locale.getFileHandle()) + 1; + if (fhArray.indexOf(game.getLocale().getHandle()) + 1 < fhArray.size()) { + index = fhArray.indexOf(game.getLocale().getHandle()) + 1; } FileHandle fhNext = fhArray.get(index); - game.locale = new I18N(fhNext); + game.setLocale(new LocalizationManager(fhNext)); game.prefs.putString("lang", fhNext.nameWithoutExtension()); game.prefs.flush(); @@ -359,7 +360,7 @@ public class MenuScreen implements Screen { // Suggest an update if (!GameUpdater.CLIENT_IS_ON_LATEST_VERSION && OsUtils.isPC) { - TextButton updateButton = new TextButton(game.locale.TranslatableText("updater.info"), uiSkin, "link"); + TextButton updateButton = new TextButton(game.getLocale().getLine(LineId.UpdaterInfo), uiSkin, "link"); updateButton.setPosition(8f, stage.getHeight() - 32f); diff --git a/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt b/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt index 863f295..6de252f 100644 --- a/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt +++ b/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt @@ -29,6 +29,7 @@ import com.badlogic.gdx.utils.Timer.Task import com.badlogic.gdx.utils.viewport.FitViewport import com.badlogic.gdx.utils.viewport.ScreenViewport import kz.ilotterytea.maxon.MaxonGame +import kz.ilotterytea.maxon.localization.LineId import kz.ilotterytea.maxon.player.Savegame import kz.ilotterytea.maxon.screens.game.GameScreen import kz.ilotterytea.maxon.utils.formatters.NumberFormatter @@ -97,7 +98,7 @@ class SlotsMinigameScreen : Screen { table.add(background) // Buttons - spinButton = TextButton(game.locale.TranslatableText("minigame.slots.spin_button"), skin) + spinButton = TextButton(game.locale.getLine(LineId.MinigameSlotsSpinbutton), skin) spinButton?.isDisabled = true spinButton?.width = 420f spinButton?.setPosition(62f, 60f) @@ -110,7 +111,7 @@ class SlotsMinigameScreen : Screen { }) stage.addActor(spinButton) - exitButton = TextButton(game.locale.TranslatableText("minigame.slots.exit_button"), skin) + exitButton = TextButton(game.locale.getLine(LineId.MinigameSlotsExitbutton), skin) exitButton?.setPosition(62f, stage.height / 2f - 150f) exitButton?.addListener(object : ClickListener() { override fun clicked(event: InputEvent?, x: Float, y: Float) { @@ -138,7 +139,7 @@ class SlotsMinigameScreen : Screen { moneyLabel?.setPosition(stage.width / 2f, stage.height / 2f - 180f) stage.addActor(moneyLabel) - val stakeLabel = Label(game.locale.TranslatableText("minigame.slots.bet"), skin, "slots") + val stakeLabel = Label(game.locale.getLine(LineId.MinigameSlotsBet), skin, "slots") stakeLabel.setAlignment(Align.center) stakeLabel.setPosition(stage.width / 2f - 40f, stage.height / 2f - 100f) stage.addActor(stakeLabel) @@ -325,9 +326,9 @@ class SlotsMinigameScreen : Screen { private fun updateLabels() { val prizeText = if (prize == 0.0) { - game.locale.TranslatableText("minigame.slots.nothing") + game.locale.getLine(LineId.MinigameSlotsNothing) } else { - game.locale.FormattedText("minigame.slots.prize", NumberFormatter.format(prize.toLong())) + game.locale.getFormattedLine(LineId.MinigameSlotsPrize, NumberFormatter.format(prize.toLong())) } prizeLabel?.setText(prizeText) diff --git a/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java b/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java index 3f8c19b..65b2dde 100644 --- a/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java @@ -251,61 +251,6 @@ public class GameScreen implements Screen, InputProcessor { this.shopUI.update(); } - private void showInventory() { - // - - - - - - I N V E N T O R Y T A B L E - - - - - - : - final Table inventoryTable = new Table(skin); - inventoryTable.setBackground("bg"); - inventoryTable.setSize(stage.getWidth() - 20f, stage.getHeight() - (boardTable.getHeight() + quickTable.getHeight() + 20f)); - inventoryTable.setPosition(10f, quickTable.getHeight() + 10f); - inventoryTable.align(Align.top | Align.center); - - stage.addActor(inventoryTable); - - // Header table: - Table headInventoryTable = new Table(); - inventoryTable.add(headInventoryTable).width(inventoryTable.getWidth()).row(); - - // - - - S H O P T I T L E - - -: - Label inventoryTitle = new Label(game.locale.TranslatableText("game.inventory.title"), skin); - headInventoryTable.add(inventoryTitle).expandX(); - - // - - - C L O S E B U T T O N - - - : - TextButton closeButton = new TextButton("X", skin); - - closeButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - inventoryTable.remove(); - isInventoryEnabled = !isInventoryEnabled; - } - }); - - headInventoryTable.add(closeButton).row(); - - // - - - I N V E N T O R Y C O N T E N T - - - : - Table contentTable = new Table(); - contentTable.align(Align.left); - - // Adding items to inventory: - for (int i = 0; i < invItems.keySet().size(); i++) { - MaxonItem item = MaxonItemRegister.get(i); - - if (item != null) { - InventoryAnimatedItem invItem = new InventoryAnimatedItem(item, skin, invItems.get(i)); - Cell<InventoryAnimatedItem> cell = contentTable.add(invItem).size(64, 64).pad(5f); - - if (i != 0 && i % (inventoryTable.getWidth() / 69f) == 0) { - cell.row(); - } - } - }; - - // Scroll panel for content table: - ScrollPane contentPane = new ScrollPane(contentTable); - contentPane.setScrollingDisabled(true, false); - inventoryTable.add(contentPane); - } - @Override public void pause() {} @Override public void resume() {} @@ -341,39 +286,6 @@ public class GameScreen implements Screen, InputProcessor { return false; } - private void displayPointIncrease() { - cat.nextFrame(); - maxon.setDrawable(cat.getDrawable()); - - savegame.increaseMoney(savegame.getMultiplier()); - - final TypingLabel label = new TypingLabel(game.locale.FormattedText("game.newPoint", MaxonConstants.DECIMAL_FORMAT.format(savegame.getMultiplier())), skin, "default"); - - label.setPosition( - maxon.getX(), - maxon.getY() + maxon.getHeight() - ); - - label.setWidth(maxon.getWidth()); - - label.setAlignment(Align.center); - - label.addAction(Actions.parallel( - Actions.fadeOut(5f), - Actions.moveTo( - label.getX(), label.getY() + Math.getRandomNumber(10, 156), 5f, Interpolation.exp5Out) - )); - - tasks.add(Timer.schedule(new Timer.Task() { - @Override - public void run() { - label.remove(); - } - }, 10f)); - - stage.addActor(label); - } - private void create3D() { sceneManager = new SceneManager(); diff --git a/core/src/kz/ilotterytea/maxon/screens/game/Giftbox.java b/core/src/kz/ilotterytea/maxon/screens/game/Giftbox.java index 83ce8ab..752d7a1 100644 --- a/core/src/kz/ilotterytea/maxon/screens/game/Giftbox.java +++ b/core/src/kz/ilotterytea/maxon/screens/game/Giftbox.java @@ -24,6 +24,7 @@ import kz.ilotterytea.javaextra.tuples.Triple; import kz.ilotterytea.maxon.MaxonGame; import kz.ilotterytea.javaextra.comparators.MapValueKeyComparator; import kz.ilotterytea.maxon.anim.SpriteUtils; +import kz.ilotterytea.maxon.localization.LineId; import kz.ilotterytea.maxon.pets.Pet; import kz.ilotterytea.maxon.pets.PetManager; import kz.ilotterytea.maxon.player.Savegame; @@ -302,7 +303,7 @@ public class Giftbox implements Disposable { mainTable.add(table); // Adding the title - Label title = new Label(MaxonGame.getInstance().locale.TranslatableText("giftbox.open"), skin); + Label title = new Label(MaxonGame.getInstance().getLocale().getLine(LineId.GiftboxOpen), skin); table.add(title).row(); String regionName; diff --git a/core/src/kz/ilotterytea/maxon/ui/OptionsTable.java b/core/src/kz/ilotterytea/maxon/ui/OptionsTable.java deleted file mode 100644 index 8ce0720..0000000 --- a/core/src/kz/ilotterytea/maxon/ui/OptionsTable.java +++ /dev/null @@ -1,180 +0,0 @@ -package kz.ilotterytea.maxon.ui; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.audio.Music; -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.math.Interpolation; -import com.badlogic.gdx.scenes.scene2d.InputEvent; -import com.badlogic.gdx.scenes.scene2d.actions.Actions; -import com.badlogic.gdx.scenes.scene2d.ui.*; -import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import com.badlogic.gdx.utils.Align; -import kz.ilotterytea.maxon.MaxonConstants; -import kz.ilotterytea.maxon.MaxonGame; -import kz.ilotterytea.maxon.screens.SplashScreen; -import kz.ilotterytea.maxon.utils.I18N; - -import java.util.ArrayList; -import java.util.Locale; - -public class OptionsTable extends Table { - public OptionsTable( - final MaxonGame game, - Skin skin, - Skin widgetSkin, - final Music music, - final Table menuTable, - final Image bgImage, - final Image brandLogo - ) { - super(); - - Label optionsLabel = new Label(game.locale.TranslatableText("options.title"), skin); - optionsLabel.setAlignment(Align.center); - super.add(optionsLabel).fillX().pad(81f).row(); - - Table lidlOptionsTable = new Table(); - - // Music button: - final TextButton musicButton = new TextButton(game.locale.FormattedText("options.music", (game.prefs.getBoolean("music", true)) ? "ON" : "OFF"), widgetSkin, "default"); - - musicButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - game.prefs.putBoolean("music", !game.prefs.getBoolean("music", true)); - game.prefs.flush(); - - if (game.prefs.getBoolean("music", true)) { - music.setVolume(1f); - music.setLooping(true); - music.play(); - } else { - music.stop(); - } - - musicButton.setText(game.locale.FormattedText("options.music", (game.prefs.getBoolean("music", true)) ? "ON" : "OFF")); - } - }); - - lidlOptionsTable.add(musicButton).size(512f, 81f).pad(10f).left(); - - final TextButton soundButton = new TextButton(game.locale.FormattedText("options.sound", (game.prefs.getBoolean("sound", true)) ? "ON" : "OFF"), widgetSkin, "default"); - - soundButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - game.prefs.putBoolean("sound", !game.prefs.getBoolean("sound", true)); - game.prefs.flush(); - - soundButton.setText(game.locale.FormattedText("options.sound", (game.prefs.getBoolean("sound", true)) ? "ON" : "OFF")); - } - }); - - lidlOptionsTable.add(soundButton).size(512f, 81f).pad(10f).right().row(); - - final TextButton vsyncButton = new TextButton(game.locale.FormattedText("options.vsync", (game.prefs.getBoolean("vsync", true)) ? "ON" : "OFF"), widgetSkin, "default"); - - vsyncButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - game.prefs.putBoolean("vsync", !game.prefs.getBoolean("vsync", true)); - game.prefs.flush(); - - if (game.prefs.getBoolean("vsync", true)) { - Gdx.graphics.setVSync(true); - } else { - Gdx.graphics.setVSync(false); - } - - vsyncButton.setText(game.locale.FormattedText("options.vsync", (game.prefs.getBoolean("vsync", true)) ? "ON" : "OFF")); - } - }); - - lidlOptionsTable.add(vsyncButton).size(512f, 81f).pad(10f).left(); - - final TextButton fullscreenButton = new TextButton(game.locale.FormattedText("options.fullscreen", (game.prefs.getBoolean("fullscreen", false)) ? "ON" : "OFF"), widgetSkin, "default"); - - fullscreenButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - game.prefs.putBoolean("fullscreen", !game.prefs.getBoolean("fullscreen", false)); - game.prefs.flush(); - - if (game.prefs.getBoolean("fullscreen", false)) { - Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); - } else { - Gdx.graphics.setWindowedMode(game.prefs.getInteger("width", Gdx.graphics.getWidth()), game.prefs.getInteger("height", Gdx.graphics.getHeight())); - } - - fullscreenButton.setText(game.locale.FormattedText("options.fullscreen", (game.prefs.getBoolean("fullscreen", false)) ? "ON" : "OFF")); - } - }); - - lidlOptionsTable.add(fullscreenButton).size(512f, 81f).pad(10f).right().row(); - - super.add(lidlOptionsTable).center().row(); - - String[] fh4Locale = game.locale.getFileHandle().nameWithoutExtension().split("_"); - Locale locale = new Locale(fh4Locale[0], fh4Locale[1]); - - final TextButton switchLangButton = new TextButton(game.locale.FormattedText("options.language", locale.getDisplayLanguage(), locale.getDisplayCountry()), widgetSkin, "default"); - - switchLangButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - int index = 0; - ArrayList<FileHandle> fhArray = new ArrayList<>(); - fhArray.add(MaxonConstants.FILE_RU_RU); - fhArray.add(MaxonConstants.FILE_EN_US); - - if (fhArray.indexOf(game.locale.getFileHandle()) + 1 < fhArray.size()) { - index = fhArray.indexOf(game.locale.getFileHandle()) + 1; - } - - FileHandle fhNext = fhArray.get(index); - - game.locale = new I18N(fhNext); - game.prefs.putString("lang", fhNext.nameWithoutExtension()); - game.prefs.flush(); - - String[] fh4Locale = fhNext.nameWithoutExtension().split("_"); - Locale locale = new Locale(fh4Locale[0], fh4Locale[1]); - - switchLangButton.setText(game.locale.FormattedText("options.language", locale.getDisplayLanguage(), locale.getDisplayCountry())); - game.setScreen(new SplashScreen()); - music.stop(); - } - }); - - super.add(switchLangButton).size(1024f, 81f).padTop(91f).center().row(); - - final TextButton optionsCloseButton = new TextButton(game.locale.TranslatableText("options.close"), widgetSkin, "default"); - - optionsCloseButton.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - close(menuTable, bgImage, brandLogo); - } - }); - - super.add(optionsCloseButton).size(1024f, 81f).pad(91f).center().row(); - - super.setPosition(0, 0); - super.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); - } - - private void close(Table menu, Image bg, Image logo) { - super.clearActions(); - super.addAction(Actions.moveTo(Gdx.graphics.getWidth(), super.getY(), 0.75f, Interpolation.sine)); - - menu.clearActions(); - menu.addAction(Actions.moveTo(0, menu.getY(), 0.75f, Interpolation.sine)); - - bg.clearActions(); - bg.addAction(Actions.alpha(0.25f)); - - logo.addAction( - Actions.moveTo(logo.getX(), logo.getY() - 512f, 0.5f, Interpolation.sine) - ); - } -} diff --git a/core/src/kz/ilotterytea/maxon/ui/SavegameWidget.java b/core/src/kz/ilotterytea/maxon/ui/SavegameWidget.java index ea6587c..245e11f 100644 --- a/core/src/kz/ilotterytea/maxon/ui/SavegameWidget.java +++ b/core/src/kz/ilotterytea/maxon/ui/SavegameWidget.java @@ -12,6 +12,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Disposable; import kz.ilotterytea.maxon.MaxonGame; +import kz.ilotterytea.maxon.localization.LineId; import kz.ilotterytea.maxon.player.Savegame; import kz.ilotterytea.maxon.screens.game.GameScreen; import kz.ilotterytea.maxon.screens.WelcomeScreen; @@ -128,7 +129,7 @@ public class SavegameWidget extends Table implements Disposable { this.dataTable.add(data).grow(); // - - - C O N T R O L - - - - TextButton playButton = new TextButton(game.locale.TranslatableText("menu.continue"), skin, styleName); + TextButton playButton = new TextButton(game.getLocale().getLine(LineId.MenuContinue), skin, styleName); playButton.addListener(new ClickListener() { @Override @@ -139,7 +140,7 @@ public class SavegameWidget extends Table implements Disposable { } }); - TextButton resetButton = new TextButton(game.locale.TranslatableText("menu.reset"), skin, styleName); + TextButton resetButton = new TextButton(game.getLocale().getLine(LineId.MenuReset), skin, styleName); resetButton.addListener(new ClickListener() { @Override diff --git a/core/src/kz/ilotterytea/maxon/utils/I18N.java b/core/src/kz/ilotterytea/maxon/utils/I18N.java deleted file mode 100644 index 7d4013e..0000000 --- a/core/src/kz/ilotterytea/maxon/utils/I18N.java +++ /dev/null @@ -1,53 +0,0 @@ -package kz.ilotterytea.maxon.utils; - -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.utils.JsonReader; -import com.badlogic.gdx.utils.JsonValue; - -import java.lang.StringBuilder; -import java.util.*; - -public class I18N { - private Map<String, String> language = new HashMap<>(); - private FileHandle fileHandle; - - public I18N(FileHandle fh) { - fileHandle = fh; - - JsonValue json = new JsonReader().parse(fileHandle); - - for (JsonValue val : json.iterator()) { - this.language.put(val.name, json.getString(val.name)); - } - } - - public FileHandle getFileHandle() { return fileHandle; } - public Map<String, String> getLanguage() { return language; } - - public String TranslatableText(String id) { - if (language.containsKey(id)) { - return language.get(id); - } - return null; - } - - public String FormattedText(String id, CharSequence... params) { - if (!language.containsKey(id)) { return null; } - Scanner scan = new Scanner(language.get(id)); - StringBuilder result = new StringBuilder(); - int index = 0; - - while (scan.hasNext()) { - String next = scan.next(); - - if (next.contains("%s")) { - next = next.replace("%s", params[index]); - if (index + 1 < params.length) { index++; } - } - - result.append(next).append(' '); - } - - return result.toString(); - } -} |
