summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2024-06-09 17:03:54 +0500
committerilotterytea <iltsu@alright.party>2024-06-09 19:27:47 +0500
commitb417e7a2efa52c94071f084c2e90d54728124505 (patch)
tree1cf7e4662ce95338edef32deff162eb30050dcfa
parent04f488fe120791f541781837dbcb20c3d9b57789 (diff)
upd: cancel tasks on hide call
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/GameScreen.java138
-rw-r--r--core/src/kz/ilotterytea/maxon/screens/MenuScreen.java11
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();
}