From d3a3c5ae698d6da42eb051e2575be83dcd032b42 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 28 Jun 2023 11:37:24 +0800 Subject: [PATCH 1/3] restrict menus when DuelScene or RewardScene is loading --- forge-gui-mobile/src/forge/Forge.java | 2 +- .../src/forge/adventure/scene/DuelScene.java | 2 ++ .../src/forge/adventure/scene/RewardScene.java | 1 + .../src/forge/adventure/stage/GameHUD.java | 10 ++++++++++ .../src/forge/adventure/stage/GameStage.java | 3 ++- .../src/forge/adventure/stage/MapStage.java | 2 ++ .../src/forge/adventure/stage/WorldStage.java | 2 ++ 7 files changed, 20 insertions(+), 2 deletions(-) diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 001979a773d..5957d90ef78 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -62,6 +62,7 @@ public class Forge implements ApplicationListener { static Batch animationBatch; static TextureRegion lastScreenTexture; private static boolean sceneWasSwapped = false; + public static boolean restrictAdvMenus = false; private static Clipboard clipboard; private static IDeviceAdapter deviceAdapter; private static int screenWidth; @@ -1060,7 +1061,6 @@ public class Forge implements ApplicationListener { } public static Scene switchToLast() { - if (lastScene.size != 0) { storeScreen(); currentScene = lastScene.get(lastScene.size - 1); diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index c23f4989d44..095b7598f99 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -151,6 +151,8 @@ public class DuelScene extends ForgeScene { } Runnable endRunnable = null; void afterGameEnd(String enemyName, boolean winner) { + if (winner) + Forge.restrictAdvMenus = true; endRunnable = () -> Gdx.app.postRunnable(()-> { if (GameScene.instance().isNotInWorldMap()) { SoundSystem.instance.pause(); diff --git a/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java b/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java index 54fd5febf0b..4712ae69627 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/RewardScene.java @@ -133,6 +133,7 @@ public class RewardScene extends UIScene { } //save RAM ImageCache.unloadCardTextures(true); + Forge.restrictAdvMenus = false; Forge.switchToLast(); } public void reactivateInputs() { diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index 2fc837eac90..e154db9ae5b 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -156,12 +156,16 @@ public class GameHUD extends Stage { private void openMap() { if (console.isVisible()) return; + if (Forge.restrictAdvMenus) + return; Forge.switchScene(MapViewScene.instance()); } private void logbook() { if (console.isVisible()) return; + if (Forge.restrictAdvMenus) + return; Forge.switchScene(QuestLogScene.instance(Forge.getCurrentScene())); } @@ -484,12 +488,16 @@ public class GameHUD extends Stage { private void openDeck() { if (console.isVisible()) return; + if (Forge.restrictAdvMenus) + return; Forge.switchScene(DeckSelectScene.instance()); } private void openInventory() { if (console.isVisible()) return; + if (Forge.restrictAdvMenus) + return; WorldSave.getCurrentSave().header.createPreview(); Forge.switchScene(InventoryScene.instance()); } @@ -525,6 +533,8 @@ public class GameHUD extends Stage { private void menu() { if (console.isVisible()) return; + if (Forge.restrictAdvMenus) + return; gameStage.openMenu(); } diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java index 97473016300..9348d410283 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java @@ -376,7 +376,8 @@ public abstract class GameStage extends Stage { } public void openMenu() { - + if (Forge.restrictAdvMenus) + return; WorldSave.getCurrentSave().header.createPreview(); Forge.switchScene(StartScene.instance()); } diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index 35c9136f019..8454f675c25 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -1125,10 +1125,12 @@ public class MapStage extends GameStage { int duration = mob.getData().boss ? 400 : 200; if (Controllers.getCurrent() != null && Controllers.getCurrent().canVibrate()) Controllers.getCurrent().startVibration(duration, 1); + Forge.restrictAdvMenus = true; startPause(0.8f, () -> { Forge.setCursor(null, Forge.magnifyToggle ? "1" : "2"); SoundSystem.instance.play(SoundEffectType.ManaBurn, false); DuelScene duelScene = DuelScene.instance(); + Forge.restrictAdvMenus = false; FThreads.invokeInEdtNowOrLater(() -> { if (!isLoadingMatch) { isLoadingMatch = true; diff --git a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java index 1d0479a1719..f6b6b76f9d5 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java @@ -116,10 +116,12 @@ public class WorldStage extends GameStage implements SaveFileContent { int duration = mob.getData().boss ? 400 : 200; if (Controllers.getCurrent() != null && Controllers.getCurrent().canVibrate()) Controllers.getCurrent().startVibration(duration, 1); + Forge.restrictAdvMenus = true; startPause(0.8f, () -> { Forge.setCursor(null, Forge.magnifyToggle ? "1" : "2"); SoundSystem.instance.play(SoundEffectType.ManaBurn, false); DuelScene duelScene = DuelScene.instance(); + Forge.restrictAdvMenus = false; FThreads.invokeInEdtNowOrLater(() -> { Forge.setTransitionScreen(new TransitionScreen(() -> { duelScene.initDuels(player, mob); From cc4342b35684bf6e1bd6a768afa89f97fcf39aef Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 28 Jun 2023 11:58:01 +0800 Subject: [PATCH 2/3] update --- forge-gui-mobile/src/forge/adventure/scene/DuelScene.java | 2 ++ forge-gui-mobile/src/forge/adventure/stage/MapStage.java | 1 - forge-gui-mobile/src/forge/adventure/stage/WorldStage.java | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 095b7598f99..e8943a98b44 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -153,6 +153,8 @@ public class DuelScene extends ForgeScene { void afterGameEnd(String enemyName, boolean winner) { if (winner) Forge.restrictAdvMenus = true; + else + Forge.restrictAdvMenus = false; endRunnable = () -> Gdx.app.postRunnable(()-> { if (GameScene.instance().isNotInWorldMap()) { SoundSystem.instance.pause(); diff --git a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java index 8454f675c25..d92c87dabbf 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/MapStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/MapStage.java @@ -1130,7 +1130,6 @@ public class MapStage extends GameStage { Forge.setCursor(null, Forge.magnifyToggle ? "1" : "2"); SoundSystem.instance.play(SoundEffectType.ManaBurn, false); DuelScene duelScene = DuelScene.instance(); - Forge.restrictAdvMenus = false; FThreads.invokeInEdtNowOrLater(() -> { if (!isLoadingMatch) { isLoadingMatch = true; diff --git a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java index f6b6b76f9d5..9a2d7125508 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java @@ -121,7 +121,6 @@ public class WorldStage extends GameStage implements SaveFileContent { Forge.setCursor(null, Forge.magnifyToggle ? "1" : "2"); SoundSystem.instance.play(SoundEffectType.ManaBurn, false); DuelScene duelScene = DuelScene.instance(); - Forge.restrictAdvMenus = false; FThreads.invokeInEdtNowOrLater(() -> { Forge.setTransitionScreen(new TransitionScreen(() -> { duelScene.initDuels(player, mob); From dd1d5d09fe0916a912aa1a2b41c25fcfef5238c4 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 28 Jun 2023 12:01:00 +0800 Subject: [PATCH 3/3] simplify --- forge-gui-mobile/src/forge/adventure/scene/DuelScene.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index e8943a98b44..0f5462ae7d7 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -151,10 +151,7 @@ public class DuelScene extends ForgeScene { } Runnable endRunnable = null; void afterGameEnd(String enemyName, boolean winner) { - if (winner) - Forge.restrictAdvMenus = true; - else - Forge.restrictAdvMenus = false; + Forge.restrictAdvMenus = winner; endRunnable = () -> Gdx.app.postRunnable(()-> { if (GameScene.instance().isNotInWorldMap()) { SoundSystem.instance.pause();