From 096f52f6b5b86ef433339e56abcecb925096195e Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Mon, 28 Oct 2024 01:12:18 +0500 Subject: feat: earn points while spinning the slots --- .../maxon/screens/SlotsMinigameScreen.kt | 14 ++++++-- .../ilotterytea/maxon/screens/game/GameScreen.java | 25 ++------------- .../kz/ilotterytea/maxon/tasks/MultiplierTask.java | 37 ++++++++++++++++++++++ 3 files changed, 50 insertions(+), 26 deletions(-) create mode 100644 core/src/kz/ilotterytea/maxon/tasks/MultiplierTask.java (limited to 'core') diff --git a/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt b/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt index 4f489ac..54bdfea 100644 --- a/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt +++ b/core/src/kz/ilotterytea/maxon/screens/SlotsMinigameScreen.kt @@ -26,6 +26,7 @@ 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.tasks.MultiplierTask import kz.ilotterytea.maxon.utils.formatters.NumberFormatter import kotlin.math.roundToInt import kotlin.math.roundToLong @@ -76,6 +77,8 @@ class SlotsMinigameScreen : Screen { private val audioLoop: Music = game.assetManager.get("mus/minigames/slots/slots_loop.mp3") + private val multiplierTask = MultiplierTask(savegame) + override fun show() { // Skins val skin = game.assetManager.get("sprites/gui/ui.skin", Skin::class.java) @@ -205,6 +208,8 @@ class SlotsMinigameScreen : Screen { audioLoop.isLooping = true + Timer.schedule(multiplierTask, 0.1f, 0.1f) + Gdx.input.inputProcessor = stage } @@ -214,6 +219,8 @@ class SlotsMinigameScreen : Screen { stage.act(delta) stage.draw() + + moneyLabel?.setText(NumberFormatter.format(savegame.money, false)) } private fun reRoll() { @@ -325,7 +332,7 @@ class SlotsMinigameScreen : Screen { val prizeText = if (prize == 0.0) { game.locale.getLine(LineId.MinigameSlotsNothing) } else { - game.locale.getFormattedLine(LineId.MinigameSlotsPrize, NumberFormatter.format(prize)) + game.locale.getFormattedLine(LineId.MinigameSlotsPrize, NumberFormatter.format(prize, false)) } prizeLabel?.setText(prizeText) @@ -336,13 +343,13 @@ class SlotsMinigameScreen : Screen { val stakeText = if (savegame.money.roundToInt() <= 0) { "---" } else { - NumberFormatter.format(savegame.money) + savegame.money.roundToInt().toString() } stakeField?.text = stakeText } - moneyLabel?.setText(NumberFormatter.format(savegame.money)) + moneyLabel?.setText(NumberFormatter.format(savegame.money, false)) } private fun disableSlotMachineIfNoStake() { @@ -400,6 +407,7 @@ class SlotsMinigameScreen : Screen { } tasks.clear() + multiplierTask.cancel() stage.dispose() audioLoop.stop() } diff --git a/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java b/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java index be6f840..35cd821 100644 --- a/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/game/GameScreen.java @@ -25,6 +25,7 @@ import kz.ilotterytea.maxon.player.DecalPlayer; import kz.ilotterytea.maxon.player.Savegame; import kz.ilotterytea.maxon.screens.MenuScreen; import kz.ilotterytea.maxon.screens.game.shop.ShopUI; +import kz.ilotterytea.maxon.tasks.MultiplierTask; import kz.ilotterytea.maxon.ui.*; import kz.ilotterytea.maxon.ui.game.QuickActionsTable; import kz.ilotterytea.maxon.utils.OsUtils; @@ -105,29 +106,7 @@ public class GameScreen implements Screen, InputProcessor { }, 10, 10)); // Add a 1/10th multiplier to the money every 1/10th of a second. - tasks.add(Timer.schedule(new Timer.Task() { - @Override - public void run() { - double multiplier = 0.0f; - - for (String id : savegame.getPurchasedPets().keySet()) { - Pet pet = game.getPetManager().getPet(id); - - if (pet == null) { - continue; - } - - int amount = savegame.getPurchasedPets().get(id); - - double m = pet.getMultiplier() * amount; - multiplier += m; - } - - multiplier /= 10f; - - savegame.increaseMoney(multiplier); - } - }, 0.1f, 0.1f)); + tasks.add(Timer.schedule(new MultiplierTask(savegame), 0.1f, 0.1f)); camera.update(); render(Gdx.graphics.getDeltaTime()); diff --git a/core/src/kz/ilotterytea/maxon/tasks/MultiplierTask.java b/core/src/kz/ilotterytea/maxon/tasks/MultiplierTask.java new file mode 100644 index 0000000..4d52388 --- /dev/null +++ b/core/src/kz/ilotterytea/maxon/tasks/MultiplierTask.java @@ -0,0 +1,37 @@ +package kz.ilotterytea.maxon.tasks; + +import com.badlogic.gdx.utils.Timer; +import kz.ilotterytea.maxon.MaxonGame; +import kz.ilotterytea.maxon.pets.Pet; +import kz.ilotterytea.maxon.player.Savegame; + +public class MultiplierTask extends Timer.Task { + private final MaxonGame game = MaxonGame.getInstance(); + private final Savegame savegame; + + public MultiplierTask(Savegame savegame) { + this.savegame = savegame; + } + + @Override + public void run() { + double multiplier = 0.0f; + + for (String id : savegame.getPurchasedPets().keySet()) { + Pet pet = game.getPetManager().getPet(id); + + if (pet == null) { + continue; + } + + int amount = savegame.getPurchasedPets().get(id); + + double m = pet.getMultiplier() * amount; + multiplier += m; + } + + multiplier /= 10f; + + savegame.increaseMoney(multiplier); + } +} -- cgit v1.2.3