mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Dump/Setup game state will now save current game turn.
Needed to test cards and AI that care about how many turns it have been since the start of the game.
This commit is contained in:
@@ -82,6 +82,8 @@ public abstract class GameState {
|
||||
private String precastHuman = null;
|
||||
private String precastAI = null;
|
||||
|
||||
private int turn;
|
||||
|
||||
// Targeting for precast spells in a game state (mostly used by Puzzle Mode game states)
|
||||
private final int TARGET_NONE = -1; // untargeted spell (e.g. Joraga Invocation)
|
||||
private final int TARGET_HUMAN = -2;
|
||||
@@ -110,6 +112,7 @@ public abstract class GameState {
|
||||
|
||||
sb.append(TextUtil.concatNoSpace("humanlife=", String.valueOf(humanLife), "\n"));
|
||||
sb.append(TextUtil.concatNoSpace("ailife=", String.valueOf(computerLife), "\n"));
|
||||
sb.append(TextUtil.concatNoSpace("turn=", String.valueOf(turn), "\n"));
|
||||
|
||||
if (!humanCounters.isEmpty()) {
|
||||
sb.append(TextUtil.concatNoSpace("humancounters=", humanCounters, "\n"));
|
||||
@@ -149,6 +152,7 @@ public abstract class GameState {
|
||||
|
||||
tChangePlayer = game.getPhaseHandler().getPlayerTurn() == ai ? "ai" : "human";
|
||||
tChangePhase = game.getPhaseHandler().getPhase().toString();
|
||||
turn = game.getPhaseHandler().getTurn();
|
||||
aiCardTexts.clear();
|
||||
humanCardTexts.clear();
|
||||
|
||||
@@ -392,6 +396,9 @@ public abstract class GameState {
|
||||
|
||||
boolean isHuman = categoryName.startsWith("human");
|
||||
|
||||
if (categoryName.endsWith("turn")) {
|
||||
turn = Integer.parseInt(categoryValue);
|
||||
}
|
||||
if (categoryName.endsWith("life")) {
|
||||
if (isHuman)
|
||||
humanLife = Integer.parseInt(categoryValue);
|
||||
@@ -499,7 +506,7 @@ public abstract class GameState {
|
||||
applyCountersToGameEntity(ai, computerCounters);
|
||||
}
|
||||
|
||||
game.getPhaseHandler().devModeSet(newPhase, newPlayerTurn);
|
||||
game.getPhaseHandler().devModeSet(newPhase, newPlayerTurn, turn);
|
||||
|
||||
game.getTriggerHandler().setSuppressAllTriggers(true);
|
||||
|
||||
@@ -530,7 +537,7 @@ public abstract class GameState {
|
||||
private void handleCombat(final Game game, final Player attackingPlayer, final Player defendingPlayer, final boolean toDeclareBlockers) {
|
||||
// First we need to ensure that all attackers are declared in the Declare Attackers step,
|
||||
// even if proceeding straight to Declare Blockers
|
||||
game.getPhaseHandler().devModeSet(PhaseType.COMBAT_DECLARE_ATTACKERS, attackingPlayer);
|
||||
game.getPhaseHandler().devModeSet(PhaseType.COMBAT_DECLARE_ATTACKERS, attackingPlayer, turn);
|
||||
|
||||
if (game.getPhaseHandler().getCombat() == null) {
|
||||
game.getPhaseHandler().setCombat(new Combat(attackingPlayer));
|
||||
|
||||
@@ -98,7 +98,7 @@ public class GameCopier {
|
||||
|
||||
PhaseHandler origPhaseHandler = origGame.getPhaseHandler();
|
||||
Player newPlayerTurn = playerMap.get(origPhaseHandler.getPlayerTurn());
|
||||
newGame.getPhaseHandler().devModeSet(origPhaseHandler.getPhase(), newPlayerTurn);
|
||||
newGame.getPhaseHandler().devModeSet(origPhaseHandler.getPhase(), newPlayerTurn, origPhaseHandler.getTurn());
|
||||
newGame.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
|
||||
for (Player p : newGame.getPlayers()) {
|
||||
((PlayerZoneBattlefield) p.getZone(ZoneType.Battlefield)).setTriggers(false);
|
||||
|
||||
@@ -1054,13 +1054,14 @@ public class PhaseHandler implements java.io.Serializable {
|
||||
|
||||
// this is a hack for the setup game state mode, do not use outside of devSetupGameState code
|
||||
// as it avoids calling any of the phase effects that may be necessary in a less enforced context
|
||||
public final void devModeSet(final PhaseType phase0, final Player player0, boolean endCombat) {
|
||||
public final void devModeSet(final PhaseType phase0, final Player player0, boolean endCombat, int cturn) {
|
||||
if (phase0 != null) {
|
||||
setPhase(phase0);
|
||||
}
|
||||
if (player0 != null) {
|
||||
setPlayerTurn(player0);
|
||||
}
|
||||
turn = cturn;
|
||||
|
||||
game.fireEvent(new GameEventTurnPhase(playerTurn, phase, ""));
|
||||
if (endCombat) {
|
||||
@@ -1068,9 +1069,18 @@ public class PhaseHandler implements java.io.Serializable {
|
||||
}
|
||||
}
|
||||
public final void devModeSet(final PhaseType phase0, final Player player0) {
|
||||
devModeSet(phase0, player0, true);
|
||||
devModeSet(phase0, player0, true, 1);
|
||||
}
|
||||
|
||||
public final void devModeSet(final PhaseType phase0, final Player player0, int cturn) {
|
||||
devModeSet(phase0, player0, true, cturn);
|
||||
}
|
||||
|
||||
public final void devModeSet(final PhaseType phase0, final Player player0, boolean endCombat) {
|
||||
devModeSet(phase0, player0, endCombat, 0);
|
||||
}
|
||||
|
||||
|
||||
public final void endTurnByEffect() {
|
||||
endCombat();
|
||||
extraPhases.clear();
|
||||
|
||||
Reference in New Issue
Block a user