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