diff --git a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java index 840509881a6..1e0a45aa8b2 100644 --- a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java +++ b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java @@ -1160,20 +1160,20 @@ public class AdventurePlayer implements Serializable, SaveFileContent { questFlags.clear(); } - public void addQuest(String questID) { + public void addQuest(String questID, boolean isNewGame) { int id = Integer.parseInt(questID); - addQuest(id); + addQuest(id, isNewGame); } - public void addQuest(int questID) { + public void addQuest(int questID, boolean isNewGame) { AdventureQuestData toAdd = AdventureQuestController.instance().generateQuest(questID); if (toAdd != null) { - addQuest(toAdd); + addQuest(toAdd, isNewGame); } } - public void addQuest(AdventureQuestData q) { + public void addQuest(AdventureQuestData q, boolean isNewGame) { //TODO: add a config flag for this boolean noTrackedQuests = true; for (AdventureQuestData existing : quests) { @@ -1186,7 +1186,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent { if (noTrackedQuests || q.autoTrack) AdventureQuestController.trackQuest(q); q.activateNextStages(); - AdventureQuestController.instance().showQuestDialogs(MapStage.getInstance()); + if (!isNewGame) + AdventureQuestController.instance().showQuestDialogs(MapStage.getInstance()); } public List getQuests() { diff --git a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java index 652c6174179..774f710c309 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/NewGameScene.java @@ -268,7 +268,7 @@ public class NewGameScene extends MenuScene { SoundSystem.instance.changeBackgroundTrack(); WorldStage.getInstance().enterSpawnPOI(); if (AdventurePlayer.current().getQuests().stream().noneMatch(q -> q.getID() == 28)) { - AdventurePlayer.current().addQuest("28"); //Temporary link to Shandalar main questline + AdventurePlayer.current().addQuest("28", true); //Temporary link to Shandalar main questline } Forge.switchScene(GameScene.instance()); }; diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index fba3703912d..4635c0d1022 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -254,7 +254,7 @@ public class SaveLoadScene extends UIScene { Current.player().resetQuestFlags(); Current.player().setCharacterFlag("newGamePlus", 1); Current.player().removeAllQuestItems(); - AdventurePlayer.current().addQuest("28"); + AdventurePlayer.current().addQuest("28", true); WorldSave.getCurrentSave().clearBookmarks(); WorldStage.getInstance().enterSpawnPOI(); SoundSystem.instance.changeBackgroundTrack(); diff --git a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java index 640e85523b3..b65a2695d65 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/TileMapScene.java @@ -98,10 +98,24 @@ public class TileMapScene extends HudScene { if (Current.player().fullHeal()) autoheal = true; // to play sound/effect on act } + if (WorldSave.getCurrentSave().getPlayer().hasAnnounceFantasy()) { + WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy(); + MapStage.getInstance().showDeckAwardDialog("{BLINK=WHITE;RED}Chaos Mode!{ENDBLINK}\n" + + "Enemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.", + WorldSave.getCurrentSave().getPlayer().getSelectedDeck(), this::initializeDialogs); + } else if (WorldSave.getCurrentSave().getPlayer().hasAnnounceCustom()) { + WorldSave.getCurrentSave().getPlayer().clearAnnounceCustom(); + MapStage.getInstance().showDeckAwardDialog("{GRADIENT}Custom Deck Mode!{ENDGRADIENT}\n" + + "Some enemies will use Genetic AI Decks randomly.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck(), this::initializeDialogs); + } else { + initializeDialogs(); + } + } + + private void initializeDialogs() { AdventureQuestController.instance().updateEnteredPOI(rootPoint); AdventureQuestController.instance().showQuestDialogs(stage); } - @Override public boolean leave() { // clear player collision on WorldStage and the GameHUD will restore it after the flicker animation. diff --git a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java index ceccdffda23..324e5888405 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java +++ b/forge-gui-mobile/src/forge/adventure/stage/ConsoleCommandInterpreter.java @@ -178,7 +178,7 @@ public class ConsoleCommandInterpreter { catch (Exception e){ return "Can not convert " +s[0]+" to number"; } - Current.player().addQuest(ID); + Current.player().addQuest(ID, false); return "Quest generated"; }); registerCommand(new String[]{"give", "shards"}, s -> { diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java index 880c2f544ac..930931ef16d 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameStage.java @@ -191,7 +191,7 @@ public abstract class GameStage extends Stage { showDialog(); } - public void showDeckAwardDialog(String message, Deck deck) { + public void showDeckAwardDialog(String message, Deck deck, Runnable runnable) { dialog.getContentTable().clear(); dialog.getButtonTable().clear(); dialog.clearListeners(); @@ -236,7 +236,11 @@ public abstract class GameStage extends Stage { L.skipToTheEnd(); dialog.getContentTable().add(L).width(250); - dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(240); + dialog.getButtonTable().add(Controls.newTextButton("OK", () -> { + hideDialog(); + if (runnable != null) + runnable.run(); + })).width(240); dialog.setKeepWithinStage(true); setDialogStage(GameHUD.getInstance()); showDialog(); diff --git a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java index cacfab7e10c..254f7d66a3f 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java +++ b/forge-gui-mobile/src/forge/adventure/stage/WorldStage.java @@ -364,16 +364,6 @@ public class WorldStage extends GameStage implements SaveFileContent { background.setPlayerPos(player.getX(), player.getY()); //spriteGroup.setCullingArea(new Rectangle(player.getX()-getViewport().getWorldHeight()/2,player.getY()-getViewport().getWorldHeight()/2,getViewport().getWorldHeight(),getViewport().getWorldHeight())); super.draw(); - if (WorldSave.getCurrentSave().getPlayer().hasAnnounceFantasy()) { - MapStage.getInstance().showDeckAwardDialog("{BLINK=WHITE;RED}Chaos Mode!{ENDBLINK}\n" + - "Enemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.", - WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); - WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy(); - } else if (WorldSave.getCurrentSave().getPlayer().hasAnnounceCustom()) { - MapStage.getInstance().showDeckAwardDialog("{GRADIENT}Custom Deck Mode!{ENDGRADIENT}\n" + - "Some enemies will use Genetic AI Decks randomly.", WorldSave.getCurrentSave().getPlayer().getSelectedDeck()); - WorldSave.getCurrentSave().getPlayer().clearAnnounceCustom(); - } } public void enterSpawnPOI(){ diff --git a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java index df5b2d1a447..aabe5e24030 100644 --- a/forge-gui-mobile/src/forge/adventure/util/MapDialog.java +++ b/forge-gui-mobile/src/forge/adventure/util/MapDialog.java @@ -92,10 +92,10 @@ public class MapDialog { @Override public void changed(ChangeEvent changeEvent, Actor actor) { if (prebuiltQuestData != null && Integer.parseInt(questAccepted) == prebuiltQuestData.getID()) { - Current.player().addQuest(prebuiltQuestData); + Current.player().addQuest(prebuiltQuestData, false); } else { - Current.player().addQuest(questAccepted); + Current.player().addQuest(questAccepted, false); } } };