Merge pull request #8145 from kevlahnota/newMaster

fix Rewarded Deck dialogs
This commit is contained in:
kevlahnota
2025-07-21 18:42:22 +08:00
committed by GitHub
8 changed files with 33 additions and 24 deletions

View File

@@ -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<AdventureQuestData> getQuests() {

View File

@@ -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());
};

View File

@@ -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();

View File

@@ -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.

View File

@@ -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 -> {

View File

@@ -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();

View File

@@ -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(){

View File

@@ -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);
}
}
};