mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Merge branch 'DumpTurn' into 'master'
Dump/Setup game state will now save current game turn. See merge request core-developers/forge!209
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,11 @@ public abstract class GameState {
|
||||
|
||||
boolean isHuman = categoryName.startsWith("human");
|
||||
|
||||
if (categoryName.equals("turn")) {
|
||||
turn = Integer.parseInt(categoryValue);
|
||||
} else {
|
||||
turn = 1;
|
||||
}
|
||||
if (categoryName.endsWith("life")) {
|
||||
if (isHuman)
|
||||
humanLife = Integer.parseInt(categoryValue);
|
||||
@@ -499,7 +508,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 +539,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));
|
||||
|
||||
@@ -97,7 +97,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