diff --git a/forge-ai/pom.xml b/forge-ai/pom.xml index 3f5cc7a4880..088df599180 100644 --- a/forge-ai/pom.xml +++ b/forge-ai/pom.xml @@ -18,6 +18,11 @@ forge-core ${project.version} + + forge + forge-game + ${project.version} + diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index a699e9cc5f4..7be7d09f24d 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1474,7 +1474,6 @@ public class GameAction { public void startGame(GameOutcome lastGameOutcome) { Player first = determineFirstTurnPlayer(lastGameOutcome); - List variants = game.getRules().getAppliedVariants(); GameType gameType = game.getRules().getGameType(); do { if (game.isGameOver()) { break; } // conceded during "play or draw" @@ -1494,7 +1493,7 @@ public class GameAction { game.setAge(GameStage.Play); // - if (variants.contains(GameType.Planechase)) { + if (game.getRules().hasAppliedVariant(GameType.Planechase)) { first.initPlane(); } diff --git a/forge-game/src/main/java/forge/game/GameRules.java b/forge-game/src/main/java/forge/game/GameRules.java index a5dc2d1fd90..532133db4a5 100644 --- a/forge-game/src/main/java/forge/game/GameRules.java +++ b/forge-game/src/main/java/forge/game/GameRules.java @@ -1,6 +1,6 @@ package forge.game; -import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; public class GameRules { @@ -10,7 +10,7 @@ public class GameRules { private int gamesPerMatch = 3; private int gamesToWinMatch = 2; private boolean playForAnte = false; - private List appliedVariants = new ArrayList(4); + private EnumSet appliedVariants = EnumSet.noneOf(GameType.class); public GameRules(GameType type) { this.gameType = type; @@ -67,11 +67,11 @@ public class GameRules { } public void setAppliedVariants(List appliedVariants) { - this.appliedVariants = appliedVariants; + this.appliedVariants = EnumSet.copyOf(appliedVariants); } - public List getAppliedVariants() { - return appliedVariants; + public boolean hasAppliedVariant(GameType variant) { + return appliedVariants.contains(variant); } // it's a preference, not rule... but I could hardly find a better place for it diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index e2d4898585d..acfdcaed5f1 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -751,7 +751,7 @@ public class PhaseHandler implements java.io.Serializable { Player next = getNextActivePlayer(); - if (game.getRules().getAppliedVariants().contains(GameType.Planechase)) { + if (game.getRules().hasAppliedVariant(GameType.Planechase)) { for (Card p :game.getActivePlanes()) { if (p != null) { p.setController(next, 0); diff --git a/forge-gui/src/main/java/forge/control/FControl.java b/forge-gui/src/main/java/forge/control/FControl.java index c3408e172e7..387b818bc71 100644 --- a/forge-gui/src/main/java/forge/control/FControl.java +++ b/forge-gui/src/main/java/forge/control/FControl.java @@ -567,7 +567,7 @@ public enum FControl implements KeyEventDispatcher { } public void startMatch(GameType gameType, List players) { - startMatch(gameType, new ArrayList(0), players); + startMatch(gameType, null, players); } public void startMatch(GameType gameType, List appliedVariants, List players) { @@ -577,7 +577,8 @@ public enum FControl implements KeyEventDispatcher { } GameRules rules = new GameRules(gameType); - rules.setAppliedVariants(appliedVariants); + if( null != appliedVariants ) + rules.setAppliedVariants(appliedVariants); rules.setPlayForAnte(Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ANTE)); rules.setManaBurn(Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_MANABURN)); rules.canCloneUseTargetsImage = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE); diff --git a/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java b/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java index dd3df21f75a..32783220dc1 100644 --- a/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/forge-gui/src/main/java/forge/gui/GuiDisplayUtil.java @@ -445,7 +445,7 @@ public final class GuiDisplayUtil { public static void devModePlaneswalkTo() { final Game game = getGame(); - if (!game.getRules().getAppliedVariants().contains(GameType.Planechase)) { return; } + if (!game.getRules().hasAppliedVariant(GameType.Planechase)) { return; } final Player p = game.getPhaseHandler().getPlayerTurn(); final List allPlanars = new ArrayList();