diff options
| author | ilotterytea <iltsu@alright.party> | 2024-06-09 17:03:54 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2024-06-09 19:27:47 +0500 |
| commit | b417e7a2efa52c94071f084c2e90d54728124505 (patch) | |
| tree | 1cf7e4662ce95338edef32deff162eb30050dcfa | |
| parent | 04f488fe120791f541781837dbcb20c3d9b57789 (diff) | |
upd: cancel tasks on hide call
| -rw-r--r-- | core/src/kz/ilotterytea/maxon/screens/GameScreen.java | 138 | ||||
| -rw-r--r-- | core/src/kz/ilotterytea/maxon/screens/MenuScreen.java | 11 |
2 files changed, 20 insertions, 129 deletions
diff --git a/core/src/kz/ilotterytea/maxon/screens/GameScreen.java b/core/src/kz/ilotterytea/maxon/screens/GameScreen.java index 52bcce9..5754dab 100644 --- a/core/src/kz/ilotterytea/maxon/screens/GameScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/GameScreen.java @@ -41,7 +41,6 @@ import net.mgsx.gltf.scene3d.scene.SceneManager; import net.mgsx.gltf.scene3d.scene.SceneSkybox; import net.mgsx.gltf.scene3d.utils.IBLBuilder; -import java.io.IOException; import java.util.ArrayList; import java.util.Map; @@ -80,6 +79,8 @@ public class GameScreen implements Screen, InputProcessor { private ArrayList<Decal> decals; private DecalPlayer decalPlayer; + private final ArrayList<Timer.Task> tasks = new ArrayList<>(); + public GameScreen() { this.savegame = Savegame.load(); @@ -113,134 +114,12 @@ public class GameScreen implements Screen, InputProcessor { @Override public void show() { - Timer.schedule(new Timer.Task() { + tasks.add(Timer.schedule(new Timer.Task() { @Override public void run() { savegame.save(); } - }, 10, 10); - - Timer.schedule(new Timer.Task() { - @Override - public void run() { - float multiplier = 0; - - for (MaxonItem item : items) { - multiplier += item.multiplier; - } - - savegame.increaseMoney(multiplier); - - 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) - )); - - Timer.schedule(new Timer.Task() { - @Override - public void run() { - label.remove(); - } - }, 10f); - - stage.addActor(label); - } - }, 5, 5); - - // Random gifts: - Timer.schedule(new Timer.Task() { - @Override - public void run() { - final ImageButton gift = new ImageButton(skin, "gift"); - gift.setPosition(stage.getWidth() + gift.getWidth(), Math.getRandomNumber((int) gift.getHeight(), (int) stage.getHeight() - (int) gift.getHeight())); - gift.addAction( - Actions.repeat( - 3, - Actions.sequence( - Actions.moveTo(-gift.getWidth(), gift.getY(), 15f, Interpolation.linear), - Actions.moveTo(stage.getWidth() + gift.getWidth(), Math.getRandomNumber((int) gift.getHeight(), (int) stage.getHeight() - (int) gift.getHeight()), 15f, Interpolation.linear) - ) - ) - ); - - - gift.addListener(new ClickListener() { - @Override - public void clicked(InputEvent event, float x, float y) { - int giftId = Math.getRandomNumber(0, 25); - final TypingLabel label = new TypingLabel(game.locale.TranslatableText("gifts.empty"), skin); - - switch (giftId) { - // Points - case 0: - int randPoints = Math.getRandomNumber(150, 3000); - label.setText(game.locale.FormattedText("gifts.points", String.valueOf(randPoints))); - savegame.increaseMoney(randPoints); - break; - - // Multiplier - case 1: - int randMp = Math.getRandomNumber(1, 10); - label.setText(game.locale.FormattedText("gifts.multiplier", String.valueOf(randMp))); - savegame.increaseMoney(randMp); - break; - - - // Random pet - case 2: - int randPet = Math.getRandomNumber(0, 1); - assert MaxonItemRegister.get(randPet) != null; - String name = MaxonItemRegister.get(randPet).name; - label.setText(game.locale.FormattedText("gifts.new_pet", name)); - savegame.getPurchasedPets().add(randPet); - if (invItems.containsKey(randPet)) { - invItems.put(randPet, invItems.get(randPet) + 1); - } else { - invItems.put(randPet, 1); - } - break; - // Default - default: - break; - } - - label.setPosition( - gift.getX(), - gift.getY() - ); - - label.addAction(Actions.sequence( - Actions.delay(3f), - Actions.fadeOut(2f) - )); - - stage.addActor(label); - gift.remove(); - - Timer.schedule(new Timer.Task() { - @Override - public void run() { - label.remove(); - } - }, 5f); - } - }); - - stage.addActor(gift); - } - }, 600, 600); + }, 10, 10)); camera.update(); render(Gdx.graphics.getDeltaTime()); @@ -357,6 +236,11 @@ public class GameScreen implements Screen, InputProcessor { @Override public void resume() {} @Override public void hide() { + for (Timer.Task task : tasks) { + task.cancel(); + } + tasks.clear(); + playlist.getPlayingNow().stop(); dispose(); } @@ -404,12 +288,12 @@ public class GameScreen implements Screen, InputProcessor { label.getX(), label.getY() + Math.getRandomNumber(10, 156), 5f, Interpolation.exp5Out) )); - Timer.schedule(new Timer.Task() { + tasks.add(Timer.schedule(new Timer.Task() { @Override public void run() { label.remove(); } - }, 10f); + }, 10f)); stage.addActor(label); } diff --git a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java index 032e9d3..50c9d05 100644 --- a/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java +++ b/core/src/kz/ilotterytea/maxon/screens/MenuScreen.java @@ -46,6 +46,8 @@ public class MenuScreen implements Screen { private SceneManager sceneManager; private PerspectiveCamera camera; + private final ArrayList<Timer.Task> tasks = new ArrayList<>(); + public MenuScreen() { this.game = MaxonGame.getInstance(); this.savegame = Savegame.load(); @@ -133,7 +135,7 @@ public class MenuScreen implements Screen { final int[] developerIndex = {MaxonConstants.GAME_DEVELOPERS.length}; developerImage.setSize(64, 64); - Timer.schedule(new Timer.Task() { + tasks.add(Timer.schedule(new Timer.Task() { @Override public void run() { developerIndex[0]++; @@ -168,7 +170,7 @@ public class MenuScreen implements Screen { } }); } - }, 0, 5); + }, 0, 5)); rightGameControlTable.add(developerImage).padRight(16f); @@ -322,6 +324,11 @@ public class MenuScreen implements Screen { @Override public void pause() {} @Override public void resume() {} @Override public void hide() { + for (Timer.Task task : tasks) { + task.cancel(); + } + tasks.clear(); + menuMusic.stop(); dispose(); } |
