diff --git a/.gitattributes b/.gitattributes
index 81ab91e1027..ea8fec4ed84 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -11251,7 +11251,9 @@ src/main/java/forge/error/package-info.java svneol=native#text/plain
src/main/java/forge/game/GameEndReason.java -text
src/main/java/forge/game/GameFormat.java -text
src/main/java/forge/game/GameLossReason.java -text
+src/main/java/forge/game/GameNew.java -text
src/main/java/forge/game/GamePlayerRating.java -text
+src/main/java/forge/game/GameState.java -text
src/main/java/forge/game/GameSummary.java svneol=native#text/plain
src/main/java/forge/game/GameType.java -text
src/main/java/forge/game/limited/BoosterDraft.java svneol=native#text/plain
@@ -11317,7 +11319,6 @@ src/main/java/forge/item/ItemPoolView.java -text
src/main/java/forge/item/PreconDeck.java -text
src/main/java/forge/item/package-info.java -text
src/main/java/forge/model/BuildInfo.java -text
-src/main/java/forge/model/FGameState.java -text
src/main/java/forge/model/FMatchState.java svneol=native#text/plain
src/main/java/forge/model/FModel.java svneol=native#text/plain
src/main/java/forge/model/MultipleForgeJarsFoundError.java -text
@@ -11472,7 +11473,6 @@ src/test/java/forge/BoosterDraft1Test.java svneol=native#text/plain
src/test/java/forge/BoosterDraftTest.java svneol=native#text/plain
src/test/java/forge/CardColorTest.java svneol=native#text/plain
src/test/java/forge/CardReaderTest.java svneol=native#text/plain
-src/test/java/forge/GameActionTest.java svneol=native#text/plain
src/test/java/forge/GuiDownloadPicturesLQTest.java svneol=native#text/plain
src/test/java/forge/GuiDownloadSetPicturesLQTest.java svneol=native#text/plain
src/test/java/forge/GuiMigrateLocalMWSSetPicturesHQTest.java svneol=native#text/plain
diff --git a/src/main/java/forge/AIPlayer.java b/src/main/java/forge/AIPlayer.java
index e582c397a61..b995b7846e8 100644
--- a/src/main/java/forge/AIPlayer.java
+++ b/src/main/java/forge/AIPlayer.java
@@ -112,7 +112,7 @@ public class AIPlayer extends Player {
// //////////////////////////////
// /
- // / replaces AllZone.getGameAction().draw* methods
+ // / replaces Singletons.getModel().getGameAction().draw* methods
// /
// //////////////////////////////
@@ -151,11 +151,11 @@ public class AIPlayer extends Player {
// rule 702.49a
if (this.getDredgeNumber(c) <= this.getCardsIn(Zone.Library).size()) {
// dredge library, put card in hand
- AllZone.getGameAction().moveToHand(c);
+ Singletons.getModel().getGameAction().moveToHand(c);
// put dredge number in graveyard
for (int i = 0; i < this.getDredgeNumber(c); i++) {
final Card c2 = this.getCardsIn(Zone.Library).get(0);
- AllZone.getGameAction().moveToGraveyard(c2);
+ Singletons.getModel().getGameAction().moveToGraveyard(c2);
}
return true;
}
@@ -165,7 +165,7 @@ public class AIPlayer extends Player {
// //////////////////////////////
// /
- // / replaces AllZone.getGameAction().discard* methods
+ // / replaces Singletons.getModel().getGameAction().discard* methods
// /
// //////////////////////////////
@@ -230,17 +230,17 @@ public class AIPlayer extends Player {
if (blIH.size() > 0) {
final Card card = blIH.get(CardUtil.getRandomIndex(blIH));
- AllZone.getGameAction().moveToLibrary(card, position);
+ Singletons.getModel().getGameAction().moveToLibrary(card, position);
} else {
CardListUtil.sortAttackLowFirst(hand);
CardListUtil.sortNonFlyingFirst(hand);
- AllZone.getGameAction().moveToLibrary(hand.get(0), position);
+ Singletons.getModel().getGameAction().moveToLibrary(hand.get(0), position);
}
} else {
CardListUtil.sortCMC(hand);
- AllZone.getGameAction().moveToLibrary(hand.get(0), position);
+ Singletons.getModel().getGameAction().moveToLibrary(hand.get(0), position);
}
}
}
@@ -286,7 +286,7 @@ public class AIPlayer extends Player {
}
if (bottom) {
final Card c = topN.get(i);
- AllZone.getGameAction().moveToBottomOfLibrary(c);
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(c);
// topN.remove(c);
}
}
@@ -296,7 +296,7 @@ public class AIPlayer extends Player {
final Random rndm = MyRandom.getRandom();
final int r = rndm.nextInt(topN.size());
final Card c = topN.get(r);
- AllZone.getGameAction().moveToLibrary(c);
+ Singletons.getModel().getGameAction().moveToLibrary(c);
topN.remove(r);
}
}
@@ -307,7 +307,7 @@ public class AIPlayer extends Player {
if (choices.size() > 0) {
// TODO - this could probably use better AI
final Card c = CardFactoryUtil.getWorstPermanentAI(choices, false, false, false, false);
- AllZone.getGameAction().sacrificeDestroy(c);
+ Singletons.getModel().getGameAction().sacrificeDestroy(c);
}
}
@@ -316,7 +316,7 @@ public class AIPlayer extends Player {
protected final void clashMoveToTopOrBottom(final Card c) {
// computer just puts the card back until such time it can make a
// smarter decision
- AllZone.getGameAction().moveToLibrary(c);
+ Singletons.getModel().getGameAction().moveToLibrary(c);
}
/*
diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java
index 015e1de7f13..d9a4d90bc11 100644
--- a/src/main/java/forge/AllZone.java
+++ b/src/main/java/forge/AllZone.java
@@ -26,11 +26,10 @@ import forge.card.cardfactory.CardFactoryInterface;
import forge.card.cardfactory.PreloadingCardFactory;
import forge.card.replacement.ReplacementHandler;
import forge.card.trigger.TriggerHandler;
-import forge.deck.CardCollections;
import forge.control.input.InputControl;
+import forge.deck.CardCollections;
+import forge.game.GameState;
import forge.game.limited.CardRatings;
-import forge.model.FGameState;
-import forge.model.FMatchState;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import forge.quest.data.QuestData;
@@ -78,9 +77,6 @@ public final class AllZone {
/** Constant inputControl. */
private static InputControl inputControl = null;
- /** */
- private static FMatchState matchState = new FMatchState();
-
// initialized at Runtime since it has to be the last object constructed
// shared between Input_Attack, Input_Block, Input_CombatDamage ,
@@ -110,10 +106,8 @@ public final class AllZone {
* @since 1.0.15
*/
public static Player getHumanPlayer() {
- final FGameState gameState = Singletons.getModel().getGameState();
-
- if (gameState != null) {
- return gameState.getHumanPlayer();
+ if (Singletons.getModel() != null) {
+ return Singletons.getModel().getGameState().getHumanPlayer();
}
return null;
@@ -294,10 +288,8 @@ public final class AllZone {
* @since 1.0.15
*/
public static PhaseHandler getPhaseHandler() {
- final FGameState gameState = Singletons.getModel().getGameState();
-
- if (gameState != null) {
- return gameState.getPhaseHandler();
+ if (Singletons.getModel() != null) {
+ return Singletons.getModel().getGameState().getPhaseHandler();
}
return null;
@@ -312,7 +304,7 @@ public final class AllZone {
* @since 1.2.0
*/
public static GameLog getGameLog() {
- final FGameState gameState = Singletons.getModel().getGameState();
+ final GameState gameState = Singletons.getModel().getGameState();
if (gameState != null) {
return gameState.getGameLog();
@@ -360,10 +352,8 @@ public final class AllZone {
* @since 1.0.15
*/
public static MagicStack getStack() {
- final FGameState gameState = Singletons.getModel().getGameState();
-
- if (gameState != null) {
- return gameState.getStack();
+ if (Singletons.getModel() != null) {
+ return Singletons.getModel().getGameState().getStack();
}
return null;
@@ -386,26 +376,6 @@ public final class AllZone {
AllZone.inputControl = i0;
}
- /**
- *
- * getGameAction. - *
- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.GameAction} object. - * @since 1.0.15 - */ - public static GameAction getGameAction() { - final FGameState gameState = Singletons.getModel().getGameState(); - - if (gameState != null) { - return gameState.getGameAction(); - } - - return null; - } - /** ** getStaticEffects. @@ -417,7 +387,7 @@ public final class AllZone { * @since 1.0.15 */ public static StaticEffects getStaticEffects() { - final FGameState gameState = Singletons.getModel().getGameState(); + final GameState gameState = Singletons.getModel().getGameState(); if (gameState != null) { return gameState.getStaticEffects(); @@ -502,7 +472,7 @@ public final class AllZone { * @return a {@link forge.PlayerZone} object. */ public static PlayerZone getZoneOf(final Card c) { - final FGameState gameState = Singletons.getModel().getGameState(); + final GameState gameState = Singletons.getModel().getGameState(); if (gameState == null) { return null; } @@ -534,7 +504,7 @@ public final class AllZone { * @return boolean */ public static boolean isCardInZone(final Card c, final Constant.Zone zone) { - final FGameState gameState = Singletons.getModel().getGameState(); + final GameState gameState = Singletons.getModel().getGameState(); if (gameState == null) { return false; } @@ -560,7 +530,7 @@ public final class AllZone { *
*/ public static void resetZoneMoveTracking() { - final FGameState gameState = Singletons.getModel().getGameState(); + final GameState gameState = Singletons.getModel().getGameState(); if (gameState == null) { return; } @@ -582,30 +552,6 @@ public final class AllZone { return Singletons.getModel().getGameState().getNextTimestamp(); } - /** - *- * Resets everything possible to set a new game. - *
- */ - public static void newGameCleanup() { - Singletons.getModel().getGameState().newGameCleanup(); - - Singletons.getControl().getControlMatch().showCombat(""); - Singletons.getModel().loadPrefs(); - AllZone.getInputControl().clearInput(); - AllZone.getColorChanger().reset(); - Singletons.getControl().getControlMatch().showStack(); - } - - /** - * Getter for matchState. - * - * @return the matchState - */ - public static FMatchState getMatchState() { - return AllZone.matchState; - } - /** * Getter for colorChanger. * diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index d5eb4ee75e1..a4fde6947b9 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -1557,7 +1557,7 @@ public class Card extends GameEntity implements Comparable
* addReceivedDamageFromThisTurn.
@@ -8203,7 +8203,7 @@ public class Card extends GameEntity implements Comparable
- * GameAction class.
- *
* resetActivationsPerTurn.
@@ -135,7 +114,7 @@ public class GameAction {
if (AllZone.getReplacementHandler().run(repParams)) {
if (AllZone.getStack().isResolving(c) && !zone.is(Constant.Zone.Graveyard)) {
- return AllZone.getGameAction().moveToGraveyard(c);
+ return Singletons.getModel().getGameAction().moveToGraveyard(c);
}
return c;
}
@@ -449,7 +428,7 @@ public class GameAction {
@Override
public void execute() {
- AllZone.getGameAction().moveToHand(recoverable);
+ Singletons.getModel().getGameAction().moveToHand(recoverable);
}
};
@@ -458,14 +437,14 @@ public class GameAction {
@Override
public void execute() {
- AllZone.getGameAction().exile(recoverable);
+ Singletons.getModel().getGameAction().exile(recoverable);
}
};
final SpellAbility abRecover = new Ability(recoverable, recoverCost) {
@Override
public void resolve() {
- AllZone.getGameAction().moveToHand(recoverable);
+ Singletons.getModel().getGameAction().moveToHand(recoverable);
}
@Override
@@ -490,7 +469,7 @@ public class GameAction {
if (ComputerUtil.canPayCost(abRecover)) {
ComputerUtil.playNoStack(abRecover);
} else {
- AllZone.getGameAction().exile(recoverable);
+ Singletons.getModel().getGameAction().exile(recoverable);
}
}
}
@@ -652,7 +631,7 @@ public class GameAction {
final PlayerZone removed = c.getOwner().getZone(Constant.Zone.Exile);
- return AllZone.getGameAction().moveTo(removed, c);
+ return Singletons.getModel().getGameAction().moveTo(removed, c);
}
/**
@@ -819,7 +798,7 @@ public class GameAction {
game.getPlayerRating(computer.getName()).setLossReason(computer.getLossState(),
computer.getLossConditionSource());
game.getPlayerRating(human.getName()).setLossReason(human.getLossState(), human.getLossConditionSource());
- AllZone.getMatchState().addGamePlayed(game);
+ Singletons.getModel().getMatchState().addGamePlayed(game);
}
return isGameDone;
@@ -900,10 +879,8 @@ public class GameAction {
return;
}
- if (this.canShowWinLose && this.checkEndGameState()) {
+ if (this.checkEndGameState()) {
new ViewWinLose();
- this.canShowWinLose = false;
- return;
}
// do this twice, sometimes creatures/permanents will survive when they
@@ -1057,7 +1034,7 @@ public class GameAction {
c = list.get(i);
if (c.getCounters(Counters.LOYALTY) <= 0) {
- AllZone.getGameAction().moveToGraveyard(c);
+ Singletons.getModel().getGameAction().moveToGraveyard(c);
}
final ArrayList
- * smoothComputerManaCurve.
- *
- * seeWhoPlaysFirstCoinToss.
- *
- * seeWhoPlaysFirst.
- *
- * computerStartsGame.
- *
* setHumanCut.
@@ -2937,7 +2442,7 @@ public class GameAction {
}
/**
- * Sets the cost cutting get multi micker mana cost paid colored.
+ * Sets the cost cutting get multi kicker mana cost paid colored.
*
* @param costCuttingGetMultiMickerManaCostPaidColored0
* the costCuttingGetMultiMickerManaCostPaidColored to set
diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java
index 9ebc62fdda1..47aa130d98a 100644
--- a/src/main/java/forge/GameActionUtil.java
+++ b/src/main/java/forge/GameActionUtil.java
@@ -152,7 +152,7 @@ public final class GameActionUtil {
title.toString(), JOptionPane.YES_NO_OPTION);
if (answer == JOptionPane.YES_OPTION) {
- AllZone.getGameAction().playCardNoCost(cascadedCard);
+ Singletons.getModel().getGameAction().playCardNoCost(cascadedCard);
revealed.remove(cascadedCard);
}
} else {
@@ -178,7 +178,7 @@ public final class GameActionUtil {
}
revealed.shuffle();
for (final Card bottom : revealed) {
- AllZone.getGameAction().moveToBottomOfLibrary(bottom);
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(bottom);
}
}
};
@@ -279,7 +279,7 @@ public final class GameActionUtil {
JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
if (q.equals(0)) {
- AllZone.getGameAction().playCardNoCost(rippledCards[i]);
+ Singletons.getModel().getGameAction().playCardNoCost(rippledCards[i]);
revealed.remove(rippledCards[i]);
}
} else {
@@ -306,7 +306,7 @@ public final class GameActionUtil {
}
revealed.shuffle();
for (final Card bottom : revealed) {
- AllZone.getGameAction().moveToBottomOfLibrary(bottom);
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(bottom);
}
}
};
@@ -580,14 +580,14 @@ public final class GameActionUtil {
final Ability ability = new Ability(source, "0") {
@Override
public void resolve() {
- AllZone.getGameAction().destroy(affected);
+ Singletons.getModel().getGameAction().destroy(affected);
}
};
final Ability ability2 = new Ability(source, "0") {
@Override
public void resolve() {
- AllZone.getGameAction().destroyNoRegeneration(affected);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(affected);
}
};
@@ -863,7 +863,7 @@ public final class GameActionUtil {
private static void playerCombatDamageTreva(final Card c) {
final SpellAbility[] sa = c.getSpellAbility();
if (c.getController().isHuman()) {
- AllZone.getGameAction().playSpellAbility(sa[1]);
+ Singletons.getModel().getGameAction().playSpellAbility(sa[1]);
} else {
ComputerUtil.playNoStack(sa[1]);
}
@@ -1001,7 +1001,7 @@ public final class GameActionUtil {
for (int j = 0; j < max; j++) {
final Card c = libList.get(j);
- AllZone.getGameAction().exile(c);
+ Singletons.getModel().getGameAction().exile(c);
}
}
}; // ability
diff --git a/src/main/java/forge/GuiDisplayUtil.java b/src/main/java/forge/GuiDisplayUtil.java
index 1f43f75271b..ac73d48ab33 100644
--- a/src/main/java/forge/GuiDisplayUtil.java
+++ b/src/main/java/forge/GuiDisplayUtil.java
@@ -1353,13 +1353,13 @@ public final class GuiDisplayUtil {
AllZone.getCombat().reset();
for (final Card c : humanDevSetup) {
AllZone.getHumanPlayer().getZone(Zone.Hand).add(c);
- AllZone.getGameAction().moveToPlay(c);
+ Singletons.getModel().getGameAction().moveToPlay(c);
c.setSickness(false);
}
for (final Card c : computerDevSetup) {
AllZone.getComputerPlayer().getZone(Zone.Hand).add(c);
- AllZone.getGameAction().moveToPlay(c);
+ Singletons.getModel().getGameAction().moveToPlay(c);
c.setSickness(false);
}
@@ -1400,7 +1400,7 @@ public final class GuiDisplayUtil {
AllZone.getHumanPlayer().setLife(setHumanLife, null);
}
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
AllZone.getPhaseHandler().updateObservers();
AllZone.getHumanPlayer().getZone(Zone.Exile).updateObservers();
AllZone.getComputerPlayer().getZone(Zone.Exile).updateObservers();
@@ -1475,7 +1475,7 @@ public final class GuiDisplayUtil {
return;
} else {
final Card c = (Card) o;
- AllZone.getGameAction().moveToHand(c);
+ Singletons.getModel().getGameAction().moveToHand(c);
}
}
diff --git a/src/main/java/forge/HumanPlayer.java b/src/main/java/forge/HumanPlayer.java
index 0821bf3b4e6..a5267b88a19 100644
--- a/src/main/java/forge/HumanPlayer.java
+++ b/src/main/java/forge/HumanPlayer.java
@@ -143,11 +143,11 @@ public class HumanPlayer extends Player {
// might have to make this more sophisticated
// dredge library, put card in hand
- AllZone.getGameAction().moveToHand(c);
+ Singletons.getModel().getGameAction().moveToHand(c);
for (int i = 0; i < this.getDredgeNumber(c); i++) {
final Card c2 = AllZone.getHumanPlayer().getZone(Zone.Library).get(0);
- AllZone.getGameAction().moveToGraveyard(c2);
+ Singletons.getModel().getGameAction().moveToGraveyard(c2);
}
dredged = true;
} else {
@@ -214,7 +214,7 @@ public class HumanPlayer extends Player {
if (o != null) {
final Card c = (Card) o;
topN.remove(c);
- AllZone.getGameAction().moveToBottomOfLibrary(c);
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(c);
} else {
// no card chosen for the bottom
break;
@@ -227,7 +227,7 @@ public class HumanPlayer extends Player {
if (o != null) {
final Card c = (Card) o;
topN.remove(c);
- AllZone.getGameAction().moveToLibrary(c);
+ Singletons.getModel().getGameAction().moveToLibrary(c);
}
// no else - a card must have been chosen
}
@@ -249,9 +249,9 @@ public class HumanPlayer extends Player {
choice = GuiUtils.getChoice(c.getName() + " - Top or bottom of Library", choices);
if (choice.equals("bottom")) {
- AllZone.getGameAction().moveToBottomOfLibrary(c);
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(c);
} else {
- AllZone.getGameAction().moveToLibrary(c);
+ Singletons.getModel().getGameAction().moveToLibrary(c);
}
}
diff --git a/src/main/java/forge/MagicStack.java b/src/main/java/forge/MagicStack.java
index bbaafc8ec94..fda9a466d2e 100644
--- a/src/main/java/forge/MagicStack.java
+++ b/src/main/java/forge/MagicStack.java
@@ -182,7 +182,7 @@ public class MagicStack extends MyObservable {
if (ability.isSpell()) {
final Card source = ability.getSourceCard();
if (!source.isCopiedSpell() && !source.isInZone(Constant.Zone.Stack)) {
- ability.setSourceCard(AllZone.getGameAction().moveToStack(source));
+ ability.setSourceCard(Singletons.getModel().getGameAction().moveToStack(source));
}
}
@@ -204,7 +204,7 @@ public class MagicStack extends MyObservable {
this.add(sa);
}
if (checkState) {
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
}
}
@@ -294,7 +294,7 @@ public class MagicStack extends MyObservable {
ManaCost manaCost = new ManaCost(sa.getManaCost());
String mana = manaCost.toString();
- int multiKickerPaid = AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaid();
+ int multiKickerPaid = Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaid();
String numberManaCost = " ";
@@ -313,12 +313,12 @@ public class MagicStack extends MyObservable {
if ((check - multiKickerPaid) < 0) {
multiKickerPaid = multiKickerPaid - check;
- AllZone.getGameAction().setCostCuttingGetMultiMickerManaCostPaid(multiKickerPaid);
+ Singletons.getModel().getGameAction().setCostCuttingGetMultiMickerManaCostPaid(multiKickerPaid);
mana = mana.replaceFirst(String.valueOf(check), "0");
} else {
mana = mana.replaceFirst(String.valueOf(check), String.valueOf(check - multiKickerPaid));
multiKickerPaid = 0;
- AllZone.getGameAction().setCostCuttingGetMultiMickerManaCostPaid(multiKickerPaid);
+ Singletons.getModel().getGameAction().setCostCuttingGetMultiMickerManaCostPaid(multiKickerPaid);
}
}
mana = mana.trim();
@@ -327,15 +327,15 @@ public class MagicStack extends MyObservable {
}
manaCost = new ManaCost(mana);
}
- final String colorCut = AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored();
+ final String colorCut = Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored();
for (int colorCutIx = 0; colorCutIx < colorCut.length(); colorCutIx++) {
if ("WUGRB".contains(colorCut.substring(colorCutIx, colorCutIx + 1))
&& !mana.equals(mana.replaceFirst((colorCut.substring(colorCutIx, colorCutIx + 1)), ""))) {
mana = mana.replaceFirst(colorCut.substring(colorCutIx, colorCutIx + 1), "");
- AllZone.getGameAction().setCostCuttingGetMultiMickerManaCostPaidColored(
- AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored()
+ Singletons.getModel().getGameAction().setCostCuttingGetMultiMickerManaCostPaidColored(
+ Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored()
.replaceFirst(colorCut.substring(colorCutIx, colorCutIx + 1), ""));
mana = mana.trim();
@@ -537,8 +537,8 @@ public class MagicStack extends MyObservable {
if (manaCost.isPaid()) {
this.execute();
} else {
- if ((AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaid() == 0)
- && AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored()
+ if ((Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaid() == 0)
+ && Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored()
.equals("")) {
AllZone.getInputControl().setInput(
@@ -553,13 +553,12 @@ public class MagicStack extends MyObservable {
+ sa.getSourceCard()
+ "\r\n"
+ "Mana in Reserve: "
- + ((AllZone.getGameAction()
- .getCostCuttingGetMultiMickerManaCostPaid() != 0) ? AllZone
- .getGameAction()
+ + ((Singletons.getModel().getGameAction()
+ .getCostCuttingGetMultiMickerManaCostPaid() != 0) ?
+ Singletons.getModel().getGameAction()
.getCostCuttingGetMultiMickerManaCostPaid()
: "")
- + AllZone
- .getGameAction()
+ + Singletons.getModel().getGameAction()
.getCostCuttingGetMultiMickerManaCostPaidColored()
+ "\r\n" + "Times Kicked: "
+ sa.getSourceCard().getMultiKickerMagnitude() + "\r\n",
@@ -575,8 +574,8 @@ public class MagicStack extends MyObservable {
if (manaCost.isPaid()) {
paidCommand.execute();
} else {
- if ((AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaid() == 0)
- && AllZone.getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored().equals("")) {
+ if ((Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaid() == 0)
+ && Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaidColored().equals("")) {
AllZone.getInputControl().setInput(
new InputPayManaCostAbility("Multikicker for " + sa.getSourceCard() + "\r\n"
+ "Times Kicked: " + sa.getSourceCard().getMultiKickerMagnitude() + "\r\n",
@@ -588,11 +587,11 @@ public class MagicStack extends MyObservable {
+ sa.getSourceCard()
+ "\r\n"
+ "Mana in Reserve: "
- + ((AllZone.getGameAction()
- .getCostCuttingGetMultiMickerManaCostPaid() != 0) ? AllZone
- .getGameAction().getCostCuttingGetMultiMickerManaCostPaid()
+ + ((Singletons.getModel().getGameAction()
+ .getCostCuttingGetMultiMickerManaCostPaid() != 0) ?
+ Singletons.getModel().getGameAction().getCostCuttingGetMultiMickerManaCostPaid()
: "")
- + AllZone.getGameAction()
+ + Singletons.getModel().getGameAction()
.getCostCuttingGetMultiMickerManaCostPaidColored() + "\r\n"
+ "Times Kicked: " + sa.getSourceCard().getMultiKickerMagnitude()
+ "\r\n", manaCost.toString(), paidCommand, unpaidCommand));
@@ -753,14 +752,14 @@ public class MagicStack extends MyObservable {
@Override
public void selectButtonCancel() {
AllZone.getStack().pop();
- AllZone.getGameAction().moveToGraveyard(sp.getSourceCard());
+ Singletons.getModel().getGameAction().moveToGraveyard(sp.getSourceCard());
this.stop();
}
@Override
public void selectCard(final Card c, final PlayerZone zone) {
if (zone.is(Constant.Zone.Battlefield) && c.getController().isHuman() && c.isLand()) {
- AllZone.getGameAction().sacrifice(c);
+ Singletons.getModel().getGameAction().sacrifice(c);
this.stop();
}
}
@@ -775,7 +774,7 @@ public class MagicStack extends MyObservable {
AllZone.getComputerPlayer().sacrificePermanent("prompt", lands);
} else {
AllZone.getStack().pop();
- AllZone.getGameAction().moveToGraveyard(sp.getSourceCard());
+ Singletons.getModel().getGameAction().moveToGraveyard(sp.getSourceCard());
}
}
}
@@ -920,7 +919,7 @@ public class MagicStack extends MyObservable {
final Ability haunterDiesWork = new Ability(source, "0") {
@Override
public void resolve() {
- AllZone.getGameAction().exile(source);
+ Singletons.getModel().getGameAction().exile(source);
this.getTargetCard().addHauntedBy(source);
}
};
@@ -992,9 +991,9 @@ public class MagicStack extends MyObservable {
}
// Handle cards that need to be moved differently
else if (sa.isBuyBackAbility() && !fizzle) {
- AllZone.getGameAction().moveToHand(source);
+ Singletons.getModel().getGameAction().moveToHand(source);
} else if (sa.isFlashBackAbility()) {
- AllZone.getGameAction().exile(source);
+ Singletons.getModel().getGameAction().exile(source);
sa.setFlashBackAbility(false);
} else if (source.hasKeyword("Rebound")
&& source.getCastFrom() == Zone.Hand
@@ -1003,7 +1002,7 @@ public class MagicStack extends MyObservable {
{
//Move rebounding card to exile
- AllZone.getGameAction().exile(source);
+ Singletons.getModel().getGameAction().exile(source);
System.out.println("rebound1: " + source);
//Setup a Rebound-trigger
@@ -1041,7 +1040,7 @@ public class MagicStack extends MyObservable {
return;
}
if (source.getOwner().isHuman()) {
- AllZone.getGameAction().playCardNoCost(source);
+ Singletons.getModel().getGameAction().playCardNoCost(source);
} else {
System.out.println("rebound: " + source);
for (SpellAbility s : source.getSpells()) {
@@ -1055,7 +1054,7 @@ public class MagicStack extends MyObservable {
}
}
- AllZone.getGameAction().moveToGraveyard(source);
+ Singletons.getModel().getGameAction().moveToGraveyard(source);
}
};
@@ -1068,7 +1067,7 @@ public class MagicStack extends MyObservable {
// replace its own movement
else if (!source.isCopiedSpell() && (source.isInstant() || source.isSorcery() || fizzle)
&& source.isInZone(Constant.Zone.Stack)) {
- AllZone.getGameAction().moveToGraveyard(source);
+ Singletons.getModel().getGameAction().moveToGraveyard(source);
}
}
@@ -1093,7 +1092,7 @@ public class MagicStack extends MyObservable {
this.unfreezeStack();
sa.resetOnceResolved();
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
AllZone.getPhaseHandler().setNeedToNextPhase(false);
@@ -1391,18 +1390,18 @@ public class MagicStack extends MyObservable {
activePlayerSAs.remove(next);
if (next.isTrigger()) {
- AllZone.getGameAction().playSpellAbility(next);
+ Singletons.getModel().getGameAction().playSpellAbility(next);
} else {
this.add(next);
}
}
if (activePlayerSAs.get(0).isTrigger()) {
- AllZone.getGameAction().playSpellAbility(activePlayerSAs.get(0));
+ Singletons.getModel().getGameAction().playSpellAbility(activePlayerSAs.get(0));
} else {
this.add(activePlayerSAs.get(0));
}
- // AllZone.getGameAction().playSpellAbility(activePlayerSAs.get(0));
+ // Singletons.getModel().getGameAction().playSpellAbility(activePlayerSAs.get(0));
}
}
diff --git a/src/main/java/forge/PhaseHandler.java b/src/main/java/forge/PhaseHandler.java
index 861bbad4913..7ab6c518e2b 100644
--- a/src/main/java/forge/PhaseHandler.java
+++ b/src/main/java/forge/PhaseHandler.java
@@ -314,7 +314,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
final String phase = AllZone.getPhaseHandler().getPhase();
final Player turn = AllZone.getPhaseHandler().getPlayerTurn();
AllZone.getPhaseHandler().setSkipPhase(true);
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
// UNTAP
if (phase.equals(Constant.Phase.UNTAP)) {
@@ -383,7 +383,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
Combat.dealAssignedDamage();
}
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
CombatUtil.showCombat();
}
}
@@ -401,7 +401,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
Combat.dealAssignedDamage();
}
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
CombatUtil.showCombat();
}
}
@@ -579,6 +579,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
// When consecutively skipping phases (like in combat) this section
// pushes through that block
this.updateObservers();
+
if ((AllZone.getPhaseHandler() != null) && AllZone.getPhaseHandler().isNeedToNextPhase()) {
AllZone.getPhaseHandler().setNeedToNextPhase(false);
AllZone.getPhaseHandler().nextPhase();
diff --git a/src/main/java/forge/PhaseUtil.java b/src/main/java/forge/PhaseUtil.java
index 9ee7fa6cc1b..0ab589da6f0 100644
--- a/src/main/java/forge/PhaseUtil.java
+++ b/src/main/java/forge/PhaseUtil.java
@@ -86,7 +86,7 @@ public class PhaseUtil {
}
turn.incrementTurn();
- AllZone.getGameAction().resetActivationsPerTurn();
+ Singletons.getModel().getGameAction().resetActivationsPerTurn();
final CardList lands = AllZoneUtil.getPlayerLandsInPlay(turn).filter(CardListFilter.UNTAPPED);
turn.setNumPowerSurgeLands(lands.size());
diff --git a/src/main/java/forge/Player.java b/src/main/java/forge/Player.java
index a29cbe6be46..d39f3f2618f 100644
--- a/src/main/java/forge/Player.java
+++ b/src/main/java/forge/Player.java
@@ -760,7 +760,7 @@ public abstract class Player extends GameEntity {
for (int i = 0; i < damage; i++) {
final CardList lib = this.getCardsIn(Zone.Library);
if (lib.size() > 0) {
- AllZone.getGameAction().exile(lib.get(0));
+ Singletons.getModel().getGameAction().exile(lib.get(0));
}
}
// return so things like Lifelink, etc do not trigger. This is a
@@ -1108,7 +1108,7 @@ public abstract class Player extends GameEntity {
// //////////////////////////////
// /
- // / replaces AllZone.getGameAction().draw* methods
+ // / replaces Singletons.getModel().getGameAction().draw* methods
// /
// //////////////////////////////
@@ -1258,7 +1258,7 @@ public abstract class Player extends GameEntity {
if (library.size() != 0) {
Card c = library.get(0);
- c = AllZone.getGameAction().moveToHand(c);
+ c = Singletons.getModel().getGameAction().moveToHand(c);
drawn.add(c);
if ((this.numDrawnThisTurn == 0) && this.isComputer()) {
@@ -1291,7 +1291,7 @@ public abstract class Player extends GameEntity {
// Condition
if (!this.cantLose()) {
this.loseConditionMet(GameLossReason.Milled, null);
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
}
}
return drawn;
@@ -1458,7 +1458,7 @@ public abstract class Player extends GameEntity {
// //////////////////////////////
// /
- // / replaces AllZone.getGameAction().discard* methods
+ // / replaces Singletons.getModel().getGameAction().discard* methods
// /
// //////////////////////////////
@@ -1527,7 +1527,7 @@ public abstract class Player extends GameEntity {
sa.addCostToHashList(c, "Discarded");
}
- AllZone.getGameAction().discardMadness(c);
+ Singletons.getModel().getGameAction().discardMadness(c);
if ((c.hasKeyword("If a spell or ability an opponent controls causes "
+ "you to discard CARDNAME, put it onto the battlefield instead of putting it into your graveyard.") || c
@@ -1535,9 +1535,9 @@ public abstract class Player extends GameEntity {
+ "you to discard CARDNAME, put it onto the battlefield with two +1/+1 "
+ "counters on it instead of putting it into your graveyard."))
&& (null != sa) && !c.getController().equals(sa.getSourceCard().getController())) {
- AllZone.getGameAction().discardPutIntoPlayInstead(c);
+ Singletons.getModel().getGameAction().discardPutIntoPlayInstead(c);
} else {
- AllZone.getGameAction().moveToGraveyard(c);
+ Singletons.getModel().getGameAction().moveToGraveyard(c);
}
// Run triggers
@@ -1673,9 +1673,9 @@ public abstract class Player extends GameEntity {
for (int i = 0; i < max; i++) {
if (bottom) {
- milled.add(AllZone.getGameAction().moveTo(destination, lib.get(lib.size() - 1)));
+ milled.add(Singletons.getModel().getGameAction().moveTo(destination, lib.get(lib.size() - 1)));
} else {
- milled.add(AllZone.getGameAction().moveTo(destination, lib.get(i)));
+ milled.add(Singletons.getModel().getGameAction().moveTo(destination, lib.get(i)));
}
}
@@ -1786,13 +1786,13 @@ public abstract class Player extends GameEntity {
public final void playLand(final Card land) {
if (this.canPlayLand()) {
land.addController(this);
- AllZone.getGameAction().moveTo(this.getZone(Constant.Zone.Battlefield), land);
+ Singletons.getModel().getGameAction().moveTo(this.getZone(Constant.Zone.Battlefield), land);
CardFactoryUtil.playLandEffects(land);
this.numLandsPlayed++;
// check state effects for static animate (Living Lands, Conversion,
// etc...)
- AllZone.getGameAction().checkStateEffects();
+ Singletons.getModel().getGameAction().checkStateEffects();
// add to log
AllZone.getGameLog().add("Land", this + " played " + land, 2);
diff --git a/src/main/java/forge/PlayerUtil.java b/src/main/java/forge/PlayerUtil.java
index a24a1a587b6..122e9fb7f84 100644
--- a/src/main/java/forge/PlayerUtil.java
+++ b/src/main/java/forge/PlayerUtil.java
@@ -288,7 +288,7 @@ public final class PlayerUtil {
@Override
public void selectCard(final Card card, final PlayerZone zone) {
if (zone.equals(AllZone.getHumanPlayer().getZone(Zone.Battlefield)) && list.contains(card)) {
- AllZone.getGameAction().sacrifice(card);
+ Singletons.getModel().getGameAction().sacrifice(card);
this.n++;
list.remove(card);
@@ -345,7 +345,7 @@ public final class PlayerUtil {
position = -1;
}
- AllZone.getGameAction().moveToLibrary(card, position);
+ Singletons.getModel().getGameAction().moveToLibrary(card, position);
this.n++;
if (this.n == num) {
diff --git a/src/main/java/forge/Untap.java b/src/main/java/forge/Untap.java
index 0624c715c67..59e95e9b286 100644
--- a/src/main/java/forge/Untap.java
+++ b/src/main/java/forge/Untap.java
@@ -98,7 +98,7 @@ public class Untap extends Phase implements java.io.Serializable {
for (final Card c : list) {
if (c.getBounceAtUntap() && c.getName().contains("Undiscovered Paradise")) {
- AllZone.getGameAction().moveToHand(c);
+ Singletons.getModel().getGameAction().moveToHand(c);
}
}
diff --git a/src/main/java/forge/Upkeep.java b/src/main/java/forge/Upkeep.java
index 9e35d159564..70bbb781e46 100644
--- a/src/main/java/forge/Upkeep.java
+++ b/src/main/java/forge/Upkeep.java
@@ -135,7 +135,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
} else if (GameActionUtil.showYesNoDialog(c, sb.toString())) {
abMana.produceMana();
} else {
- AllZone.getGameAction().sacrifice(c);
+ Singletons.getModel().getGameAction().sacrifice(c);
}
}
@@ -172,7 +172,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
@Override
public void execute() {
- AllZone.getGameAction().sacrifice(c);
+ Singletons.getModel().getGameAction().sacrifice(c);
}
};
@@ -191,7 +191,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (ComputerUtil.canPayCost(aiPaid)) {
ComputerUtil.playNoStack(aiPaid);
} else {
- AllZone.getGameAction().sacrifice(c);
+ Singletons.getModel().getGameAction().sacrifice(c);
}
}
}
@@ -290,7 +290,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (c.getName().equals("Cosmic Horror")) {
controller.addDamage(7, c);
}
- AllZone.getGameAction().destroy(c);
+ Singletons.getModel().getGameAction().destroy(c);
}
};
@@ -313,7 +313,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (c.getName().equals("Cosmic Horror")) {
controller.addDamage(7, c);
}
- AllZone.getGameAction().destroy(c);
+ Singletons.getModel().getGameAction().destroy(c);
}
}
}
@@ -350,7 +350,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
@Override
public void execute() {
- AllZone.getGameAction().sacrifice(c);
+ Singletons.getModel().getGameAction().sacrifice(c);
}
};
@@ -368,7 +368,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (ComputerUtil.canPayCost(aiPaid)) {
ComputerUtil.playNoStack(aiPaid);
} else {
- AllZone.getGameAction().sacrifice(c);
+ Singletons.getModel().getGameAction().sacrifice(c);
}
}
}
@@ -499,7 +499,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
// probably need to restrict by controller
// also
if (targets.contains(selected)) {
- AllZone.getGameAction().destroyNoRegeneration(selected);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(selected);
this.stop();
}
} // selectCard()
@@ -509,13 +509,13 @@ public class Upkeep extends Phase implements java.io.Serializable {
final CardList indestruct = targets.getKeyword("Indestructible");
if (indestruct.size() > 0) {
- AllZone.getGameAction().destroyNoRegeneration(indestruct.get(0));
+ Singletons.getModel().getGameAction().destroyNoRegeneration(indestruct.get(0));
} else if (targets.size() > 0) {
final Card target = CardFactoryUtil.getWorstCreatureAI(targets);
if (null == target) {
// must be nothing valid to destroy
} else {
- AllZone.getGameAction().destroyNoRegeneration(target);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(target);
}
}
}
@@ -576,7 +576,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
// probably need to restrict by controller also
if (artifact.isArtifact() && zone.is(Constant.Zone.Battlefield)
&& zone.getPlayer().isHuman()) {
- AllZone.getGameAction().sacrifice(artifact);
+ Singletons.getModel().getGameAction().sacrifice(artifact);
this.stop();
}
} // selectCard()
@@ -586,7 +586,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (null == target) {
this.tapAndDamage(player);
} else {
- AllZone.getGameAction().sacrifice(target);
+ Singletons.getModel().getGameAction().sacrifice(target);
}
}
} // resolve
@@ -635,7 +635,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
* PlayerUtil.inputSacrificePermanent(creatures, c.getName() +
* " - Select a creature to sacrifice.")); } else { // computer final Card
* target = CardFactoryUtil.getWorstCreatureAI(creatures);
- * AllZone.getGameAction().sacrifice(target); } } // resolve };
+ * Singletons.getModel().getGameAction().sacrifice(target); } } // resolve };
*
* final Ability sevenDamage = new Ability(c, "") {
*
@@ -693,7 +693,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
"Select creature with power: " + power + " to sacrifice."));
} else { // computer
final Card compyTarget = this.getCompyCardToDestroy(creatures);
- AllZone.getGameAction().destroyNoRegeneration(compyTarget);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(compyTarget);
}
}
} // resolve
@@ -770,7 +770,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
} else {
final Card target = CardFactoryUtil.getBestLandAI(playerLand);
- AllZone.getGameAction().sacrifice(target);
+ Singletons.getModel().getGameAction().sacrifice(target);
}
} // end resolve()
}; // end noPay ability
@@ -1083,7 +1083,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (wantToPlayCard) {
if (player.isHuman()) {
final Card c = library.get(0);
- AllZone.getGameAction().playCardNoCost(c);
+ Singletons.getModel().getGameAction().playCardNoCost(c);
}
// player isComputer()
else {
@@ -2029,7 +2029,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
public void resolve() {
final int fadeCounters = card.getCounters(Counters.FADE);
if (fadeCounters <= 0) {
- AllZone.getGameAction().sacrifice(card);
+ Singletons.getModel().getGameAction().sacrifice(card);
} else {
card.subtractCounter(Counters.FADE, 1);
}
@@ -2100,10 +2100,10 @@ public class Upkeep extends Phase implements java.io.Serializable {
final Card c = libraryList.get(i);
cardsToReveal.add(c);
if (c.isCreature()) {
- AllZone.getGameAction().moveTo(battlefield, c);
+ Singletons.getModel().getGameAction().moveTo(battlefield, c);
break;
} else {
- AllZone.getGameAction().moveToGraveyard(c);
+ Singletons.getModel().getGameAction().moveToGraveyard(c);
}
} // for loop
if (cardsToReveal.size() > 0) {
@@ -2155,12 +2155,12 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (o != null) {
final Card card = (Card) o;
- AllZone.getGameAction().moveToHand(card);
+ Singletons.getModel().getGameAction().moveToHand(card);
}
} else if (player.isComputer()) {
final Card card = graveyardCreatures.get(0);
- AllZone.getGameAction().moveToHand(card);
+ Singletons.getModel().getGameAction().moveToHand(card);
}
}
}
@@ -2456,7 +2456,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
@Override
public void selectButtonCancel() {
- AllZone.getGameAction().sacrifice(crd);
+ Singletons.getModel().getGameAction().sacrifice(crd);
this.stop();
}
}; // Input
@@ -2466,7 +2466,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
public void resolve() {
if (crd.getController().isHuman()) {
if (AllZone.getHumanPlayer().getZone(Zone.Hand).size() == 0) {
- AllZone.getGameAction().sacrifice(crd);
+ Singletons.getModel().getGameAction().sacrifice(crd);
} else {
AllZone.getInputControl().setInput(discard);
}
@@ -2476,7 +2476,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
if (list.size() != 0) {
list.get(0).getController().discard(list.get(0), this);
} else {
- AllZone.getGameAction().sacrifice(crd);
+ Singletons.getModel().getGameAction().sacrifice(crd);
}
} // else
} // resolve()
@@ -2511,7 +2511,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
final CardList creats = AllZoneUtil.getCreaturesInPlay(player);
if (creats.size() < 1) {
- AllZone.getGameAction().sacrifice(card);
+ Singletons.getModel().getGameAction().sacrifice(card);
return;
}
@@ -2522,10 +2522,10 @@ public class Upkeep extends Phase implements java.io.Serializable {
creats.shuffle();
sac = creats.get(0);
}
- AllZone.getGameAction().sacrifice(sac);
+ Singletons.getModel().getGameAction().sacrifice(sac);
} else { // computer
CardListUtil.sortAttackLowFirst(creats);
- AllZone.getGameAction().sacrifice(creats.get(0));
+ Singletons.getModel().getGameAction().sacrifice(creats.get(0));
}
}
}; // ability
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java
index 416771385d2..93b33420f83 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java
@@ -36,6 +36,7 @@ import forge.Constant;
import forge.Constant.Zone;
import forge.GameEntity;
import forge.Player;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.spellability.AbilityActivated;
@@ -91,7 +92,7 @@ public class AbilityFactoryAttach {
public void resolve() {
// The Spell_Permanent (Auras) version of this AF needs to
// move the card into play before Attaching
- final Card c = AllZone.getGameAction().moveToPlay(this.getSourceCard());
+ final Card c = Singletons.getModel().getGameAction().moveToPlay(this.getSourceCard());
this.setSourceCard(c);
AbilityFactoryAttach.attachResolve(this.af, this);
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java
index 7b091abe619..b812d330204 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java
@@ -32,11 +32,12 @@ import forge.CardUtil;
import forge.CombatUtil;
import forge.ComputerUtil;
import forge.Constant;
-import forge.GameEntity;
import forge.Constant.Zone;
import forge.GameActionUtil;
+import forge.GameEntity;
import forge.Player;
import forge.PlayerZone;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.cost.CostUtil;
@@ -887,7 +888,7 @@ public final class AbilityFactoryChangeZone {
if (origin.contains(Zone.Library) && (i < 1)) {
player.shuffle();
}
- movedCard = AllZone.getGameAction().moveToLibrary(c, libraryPos);
+ movedCard = Singletons.getModel().getGameAction().moveToLibrary(c, libraryPos);
} else if (destination.equals(Zone.Battlefield)) {
if (params.containsKey("Tapped")) {
c.setTapped(true);
@@ -916,14 +917,14 @@ public final class AbilityFactoryChangeZone {
AllZone.getCombat().addAttacker(c);
}
- movedCard = AllZone.getGameAction().moveTo(c.getController().getZone(destination), c);
+ movedCard = Singletons.getModel().getGameAction().moveTo(c.getController().getZone(destination), c);
} else if (destination.equals(Zone.Exile)) {
- movedCard = AllZone.getGameAction().exile(c);
+ movedCard = Singletons.getModel().getGameAction().exile(c);
if (params.containsKey("ExileFaceDown")) {
movedCard.setState("FaceDown");
}
} else {
- movedCard = AllZone.getGameAction().moveTo(destZone, c);
+ movedCard = Singletons.getModel().getGameAction().moveTo(destZone, c);
}
if (remember != null) {
@@ -1071,7 +1072,7 @@ public final class AbilityFactoryChangeZone {
if (Zone.Library.equals(destination)) {
final int libraryPos = params.containsKey("LibraryPosition") ? Integer.parseInt(params
.get("LibraryPosition")) : 0;
- AllZone.getGameAction().moveToLibrary(c, libraryPos);
+ Singletons.getModel().getGameAction().moveToLibrary(c, libraryPos);
} else if (Zone.Battlefield.equals(destination)) {
if (params.containsKey("Tapped")) {
c.tap();
@@ -1107,14 +1108,14 @@ public final class AbilityFactoryChangeZone {
}
}
- newCard = AllZone.getGameAction().moveTo(c.getController().getZone(destination), c);
+ newCard = Singletons.getModel().getGameAction().moveTo(c.getController().getZone(destination), c);
} else if (destination.equals(Zone.Exile)) {
- newCard = AllZone.getGameAction().exile(c);
+ newCard = Singletons.getModel().getGameAction().exile(c);
if (params.containsKey("ExileFaceDown")) {
newCard.setState("FaceDown");
}
} else {
- newCard = AllZone.getGameAction().moveTo(destZone, c);
+ newCard = Singletons.getModel().getGameAction().moveTo(destZone, c);
}
if (remember != null) {
@@ -1885,7 +1886,7 @@ public final class AbilityFactoryChangeZone {
final int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params
.get("LibraryPosition")) : 0;
- movedCard = AllZone.getGameAction().moveToLibrary(tgtC, libraryPosition);
+ movedCard = Singletons.getModel().getGameAction().moveToLibrary(tgtC, libraryPosition);
// for things like Gaea's Blessing
if (params.containsKey("Shuffle")) {
@@ -1923,14 +1924,14 @@ public final class AbilityFactoryChangeZone {
}
}
- movedCard = AllZone.getGameAction().moveTo(tgtC.getController().getZone(destination), tgtC);
+ movedCard = Singletons.getModel().getGameAction().moveTo(tgtC.getController().getZone(destination), tgtC);
if (params.containsKey("Ninjutsu") || params.containsKey("Attacking")) {
AllZone.getCombat().addAttacker(tgtC);
AllZone.getCombat().addUnblockedAttacker(tgtC);
}
} else {
- movedCard = AllZone.getGameAction().moveTo(pl.getZone(destination), tgtC);
+ movedCard = Singletons.getModel().getGameAction().moveTo(pl.getZone(destination), tgtC);
if (params.containsKey("ExileFaceDown")) {
movedCard.setState("FaceDown");
}
@@ -2349,9 +2350,9 @@ public final class AbilityFactoryChangeZone {
if (params.containsKey("GainControl")) {
c.addController(af.getHostCard());
- AllZone.getGameAction().moveToPlay(c, sa.getActivatingPlayer());
+ Singletons.getModel().getGameAction().moveToPlay(c, sa.getActivatingPlayer());
} else {
- final Card movedCard = AllZone.getGameAction().moveTo(destination, c, libraryPos);
+ final Card movedCard = Singletons.getModel().getGameAction().moveTo(destination, c, libraryPos);
if (params.containsKey("ExileFaceDown")) {
movedCard.setState("FaceDown");
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java
index a22d8634bd5..2529919e427 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java
@@ -33,6 +33,7 @@ import forge.ComputerUtil;
import forge.Constant;
import forge.Constant.Zone;
import forge.Player;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.Ability;
import forge.card.spellability.AbilityActivated;
@@ -431,7 +432,7 @@ public final class AbilityFactoryCopy {
if (c.isFaceDown()) {
c.setState("FaceDown");
}
- copy = AllZone.getGameAction().moveToPlay(copy);
+ copy = Singletons.getModel().getGameAction().moveToPlay(copy);
copy.setCloneOrigin(hostCard);
sa.getSourceCard().addClone(copy);
@@ -456,9 +457,9 @@ public final class AbilityFactoryCopy {
if (params.get("AtEOT").equals("Sacrifice")) {
// maybe do a setSacrificeAtEOT, but
// probably not.
- AllZone.getGameAction().sacrifice(target[index]);
+ Singletons.getModel().getGameAction().sacrifice(target[index]);
} else if (params.get("AtEOT").equals("Exile")) {
- AllZone.getGameAction().exile(target[index]);
+ Singletons.getModel().getGameAction().exile(target[index]);
}
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java
index 6f9ff67ccba..8baecf81e13 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
import forge.AllZone;
import forge.Card;
import forge.ComputerUtil;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.cost.CostUtil;
@@ -418,7 +419,7 @@ public class AbilityFactoryCounterMagic {
// Destroy Permanent may be able to be turned into a SubAbility
if (tgtSA.isAbility() && this.params.containsKey("DestroyPermanent")) {
- AllZone.getGameAction().destroy(tgtSACard);
+ Singletons.getModel().getGameAction().destroy(tgtSACard);
}
if (this.params.containsKey("RememberTargets")) {
@@ -505,17 +506,17 @@ public class AbilityFactoryCounterMagic {
// For Ability-targeted counterspells - do not move it anywhere,
// even if Destination$ is specified.
} else if (this.destination.equals("Graveyard")) {
- AllZone.getGameAction().moveToGraveyard(tgtSA.getSourceCard());
+ Singletons.getModel().getGameAction().moveToGraveyard(tgtSA.getSourceCard());
} else if (this.destination.equals("Exile")) {
- AllZone.getGameAction().exile(tgtSA.getSourceCard());
+ Singletons.getModel().getGameAction().exile(tgtSA.getSourceCard());
} else if (this.destination.equals("TopOfLibrary")) {
- AllZone.getGameAction().moveToLibrary(tgtSA.getSourceCard());
+ Singletons.getModel().getGameAction().moveToLibrary(tgtSA.getSourceCard());
} else if (this.destination.equals("Hand")) {
- AllZone.getGameAction().moveToHand(tgtSA.getSourceCard());
+ Singletons.getModel().getGameAction().moveToHand(tgtSA.getSourceCard());
} else if (this.destination.equals("BottomOfLibrary")) {
- AllZone.getGameAction().moveToBottomOfLibrary(tgtSA.getSourceCard());
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(tgtSA.getSourceCard());
} else if (this.destination.equals("ShuffleIntoLibrary")) {
- AllZone.getGameAction().moveToBottomOfLibrary(tgtSA.getSourceCard());
+ Singletons.getModel().getGameAction().moveToBottomOfLibrary(tgtSA.getSourceCard());
tgtSA.getSourceCard().getController().shuffle();
} else {
throw new IllegalArgumentException("AbilityFactory_CounterMagic: Invalid Destination argument for card "
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java
index 357dc544d91..d3911071734 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java
@@ -31,6 +31,7 @@ import forge.CardUtil;
import forge.ComputerUtil;
import forge.Constant.Zone;
import forge.Player;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.cost.CostUtil;
@@ -542,11 +543,11 @@ public class AbilityFactoryDestroy {
for (final Card tgtC : tgtCards) {
if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
if (sac) {
- AllZone.getGameAction().sacrifice(tgtC);
+ Singletons.getModel().getGameAction().sacrifice(tgtC);
} else if (noRegen) {
- AllZone.getGameAction().destroyNoRegeneration(tgtC);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(tgtC);
} else {
- AllZone.getGameAction().destroy(tgtC);
+ Singletons.getModel().getGameAction().destroy(tgtC);
} if (remDestroyed) {
card.addRemembered(tgtC);
}
@@ -556,11 +557,11 @@ public class AbilityFactoryDestroy {
for (final Card unTgtC : untargetedCards) {
if (AllZoneUtil.isCardInPlay(unTgtC)) {
if (sac) {
- AllZone.getGameAction().sacrifice(unTgtC);
+ Singletons.getModel().getGameAction().sacrifice(unTgtC);
} else if (noRegen) {
- AllZone.getGameAction().destroyNoRegeneration(unTgtC);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(unTgtC);
} else {
- AllZone.getGameAction().destroy(unTgtC);
+ Singletons.getModel().getGameAction().destroy(unTgtC);
} if (remDestroyed) {
card.addRemembered(unTgtC);
}
@@ -896,13 +897,13 @@ public class AbilityFactoryDestroy {
if (noRegen) {
for (int i = 0; i < list.size(); i++) {
- if (AllZone.getGameAction().destroyNoRegeneration(list.get(i)) && remDestroyed) {
+ if (Singletons.getModel().getGameAction().destroyNoRegeneration(list.get(i)) && remDestroyed) {
card.addRemembered(list.get(i));
}
}
} else {
for (int i = 0; i < list.size(); i++) {
- if (AllZone.getGameAction().destroy(list.get(i)) && remDestroyed) {
+ if (Singletons.getModel().getGameAction().destroy(list.get(i)) && remDestroyed) {
card.addRemembered(list.get(i));
}
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java
index 4344d567be4..68b9d350783 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java
@@ -32,6 +32,7 @@ import forge.Constant;
import forge.Constant.Zone;
import forge.PhaseHandler;
import forge.Player;
+import forge.Singletons;
import forge.card.spellability.AbilityActivated;
import forge.card.spellability.AbilitySub;
import forge.card.spellability.Spell;
@@ -470,7 +471,7 @@ public class AbilityFactoryEffect {
@Override
public void execute() {
- AllZone.getGameAction().exile(e);
+ Singletons.getModel().getGameAction().exile(e);
}
};
@@ -481,7 +482,7 @@ public class AbilityFactoryEffect {
// TODO: Add targeting to the effect so it knows who it's dealing with
AllZone.getTriggerHandler().suppressMode("ChangesZone");
- AllZone.getGameAction().moveToPlay(eff);
+ Singletons.getModel().getGameAction().moveToPlay(eff);
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java
index 0465493e5bd..541e4ab41e5 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java
@@ -33,6 +33,7 @@ import forge.Constant;
import forge.Constant.Zone;
import forge.GameEntity;
import forge.Player;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.Ability;
import forge.card.spellability.AbilityActivated;
@@ -429,7 +430,7 @@ public class AbilityFactoryGainControl {
if (AllZoneUtil.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) {
tgtC.addController(newController);
- // AllZone.getGameAction().changeController(new CardList(tgtC),
+ // Singletons.getModel().getGameAction().changeController(new CardList(tgtC),
// tgtC.getController(), newController.get(0));
if (this.bUntap) {
@@ -547,9 +548,9 @@ public class AbilityFactoryGainControl {
public void resolve() {
if (AbilityFactoryGainControl.this.bNoRegen) {
- AllZone.getGameAction().destroyNoRegeneration(c);
+ Singletons.getModel().getGameAction().destroyNoRegeneration(c);
} else {
- AllZone.getGameAction().destroy(c);
+ Singletons.getModel().getGameAction().destroy(c);
}
}
};
@@ -601,7 +602,7 @@ public class AbilityFactoryGainControl {
}
if (AllZoneUtil.isCardInPlay(c)) {
c.removeController(host);
- // AllZone.getGameAction().changeController(new CardList(c),
+ // Singletons.getModel().getGameAction().changeController(new CardList(c),
// c.getController(), originalController);
if (tapOnLose) {
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java
index e6fc353de26..1f90446f20b 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java
@@ -31,6 +31,7 @@ import forge.Constant;
import forge.Constant.Zone;
import forge.Counters;
import forge.Player;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.spellability.AbilityActivated;
@@ -368,7 +369,7 @@ public class AbilityFactoryMana {
final int num = card.getCounters(Counters.getType(deplete));
if (num == 0) {
abMana.setUndoable(false);
- AllZone.getGameAction().sacrifice(card);
+ Singletons.getModel().getGameAction().sacrifice(card);
}
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java
index b8d900d9ce0..d7ca9149e28 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java
@@ -28,9 +28,10 @@ import forge.Card;
import forge.CardList;
import forge.CardListFilter;
import forge.ComputerUtil;
+import forge.Constant.Zone;
import forge.GameActionUtil;
import forge.Player;
-import forge.Constant.Zone;
+import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost;
import forge.card.cost.CostMana;
@@ -432,7 +433,7 @@ public final class AbilityFactoryPlay {
newSA.setPayCosts(cost);
newSA.setManaCost("");
newSA.setDescription(sa.getDescription() + " (without paying its mana cost)");
- AllZone.getGameAction().playSpellAbility(newSA);
+ Singletons.getModel().getGameAction().playSpellAbility(newSA);
} else {
if (tgtSA instanceof Spell) {
Spell spell = (Spell) tgtSA;
@@ -444,7 +445,7 @@ public final class AbilityFactoryPlay {
}
} else {
if (controller.isHuman()) {
- AllZone.getGameAction().playSpellAbility(tgtSA);
+ Singletons.getModel().getGameAction().playSpellAbility(tgtSA);
} else if (tgtSA.canPlayAI()) {
ComputerUtil.playStack(tgtSA);
}
diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java
index 3cca693970a..ad61349f9a5 100644
--- a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java
+++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java
@@ -36,6 +36,7 @@ import forge.Constant.Zone;
import forge.GameActionUtil;
import forge.Player;
import forge.PlayerZone;
+import forge.Singletons;
import forge.card.cost.Cost;
import forge.card.cost.CostUtil;
import forge.card.spellability.AbilityActivated;
@@ -398,7 +399,7 @@ public final class AbilityFactoryReveal {
if (params.containsKey("Reveal")) {
GuiUtils.getChoice("Revealing cards from library", top.toArray());
cardsRevealed = true;
- // AllZone.getGameAction().revealToCopmuter(top.toArray());
+ // Singletons.getModel().getGameAction().revealToCopmuter(top.toArray());
// - for when it exists
} else if (params.containsKey("RevealOptional")) {
String question = "Reveal: ";
@@ -407,7 +408,7 @@ public final class AbilityFactoryReveal {
}
if (p.isHuman() && GameActionUtil.showYesNoDialog(host, question)) {
GuiUtils.getChoice(host + "Revealing cards from library", top.toArray());
- // AllZone.getGameAction().revealToCopmuter(top.toArray());
+ // Singletons.getModel().getGameAction().revealToCopmuter(top.toArray());
cardsRevealed = true;
} else if (p.isComputer() && (top.get(0).isInstant() || top.get(0).isSorcery())) {
GuiUtils.getChoice(host + "Revealing cards from library", top.toArray());
@@ -424,7 +425,7 @@ public final class AbilityFactoryReveal {
}
}
}
- // AllZone.getGameAction().revealToCopmuter(top.toArray());
+ // Singletons.getModel().getGameAction().revealToCopmuter(top.toArray());
// - for when it exists
} else if (choser.isHuman()) {
// show the user the revealed cards
@@ -470,9 +471,9 @@ public final class AbilityFactoryReveal {
}
final PlayerZone zone = c.getOwner().getZone(destZone1);
if (zone.is(Zone.Library)) {
- AllZone.getGameAction().moveToLibrary(c, libraryPosition);
+ Singletons.getModel().getGameAction().moveToLibrary(c, libraryPosition);
} else {
- AllZone.getGameAction().moveTo(zone, c);
+ Singletons.getModel().getGameAction().moveTo(zone, c);
if (destZone1.equals(Zone.Battlefield) && params.containsKey("Tapped")) {
c.setTapped(true);
}
@@ -509,9 +510,9 @@ public final class AbilityFactoryReveal {
final PlayerZone zone = chosen.getOwner().getZone(destZone1);
if (zone.is(Zone.Library)) {
// System.out.println("Moving to lib position: "+libraryPosition);
- AllZone.getGameAction().moveToLibrary(chosen, libraryPosition);
+ Singletons.getModel().getGameAction().moveToLibrary(chosen, libraryPosition);
} else {
- final Card c = AllZone.getGameAction().moveTo(zone, chosen);
+ final Card c = Singletons.getModel().getGameAction().moveTo(zone, chosen);
if (destZone1.equals(Zone.Battlefield) && !keywords.isEmpty()) {
for (final String kw : keywords) {
c.addExtrinsicKeyword(kw);
@@ -521,7 +522,7 @@ public final class AbilityFactoryReveal {
}
}
}
- // AllZone.getGameAction().revealToComputer()
+ // Singletons.getModel().getGameAction().revealToComputer()
// - for when this exists
j++;
}
@@ -538,9 +539,9 @@ public final class AbilityFactoryReveal {
}
final PlayerZone zone = chosen.getOwner().getZone(destZone1);
if (zone.is(Zone.Library)) {
- AllZone.getGameAction().moveToLibrary(chosen, libraryPosition);
+ Singletons.getModel().getGameAction().moveToLibrary(chosen, libraryPosition);
} else {
- final Card c = AllZone.getGameAction().moveTo(zone, chosen);
+ final Card c = Singletons.getModel().getGameAction().moveTo(zone, chosen);
if (destZone1.equals(Zone.Battlefield) && !keywords.isEmpty()) {
for (final String kw : keywords) {
chosen.addExtrinsicKeyword(kw);
@@ -582,12 +583,12 @@ public final class AbilityFactoryReveal {
} else {
chosen = rest.get(0);
}
- AllZone.getGameAction().moveToLibrary(chosen, libraryPosition2);
+ Singletons.getModel().getGameAction().moveToLibrary(chosen, libraryPosition2);
rest.remove(chosen);
}
} else { // Computer
for (int i = 0; i < rest.size(); i++) {
- AllZone.getGameAction().moveToLibrary(rest.get(i), libraryPosition2);
+ Singletons.getModel().getGameAction().moveToLibrary(rest.get(i), libraryPosition2);
}
}
} else {
@@ -595,7 +596,7 @@ public final class AbilityFactoryReveal {
for (int i = 0; i < rest.size(); i++) {
Card c = rest.get(i);
final PlayerZone toZone = c.getOwner().getZone(destZone2);
- c = AllZone.getGameAction().moveTo(toZone, c);
+ c = Singletons.getModel().getGameAction().moveTo(toZone, c);
if (destZone2.equals(Zone.Battlefield) && !keywords.isEmpty()) {
for (final String kw : keywords) {
c.addExtrinsicKeyword(kw);
@@ -984,9 +985,9 @@ public final class AbilityFactoryReveal {
final Card c = itr.next();
if (params.containsKey("GainControl") && foundDest.equals(Zone.Battlefield)) {
c.addController(af.getHostCard());
- AllZone.getGameAction().moveTo(c.getController().getZone(foundDest), c);
+ Singletons.getModel().getGameAction().moveTo(c.getController().getZone(foundDest), c);
} else {
- AllZone.getGameAction().moveTo(foundDest, c, foundLibPos);
+ Singletons.getModel().getGameAction().moveTo(foundDest, c, foundLibPos);
}
revealed.remove(c);
}
@@ -1001,7 +1002,7 @@ public final class AbilityFactoryReveal {
final Iterator
+ * smoothComputerManaCurve.
+ *
+ * seeWhoPlaysFirstCoinToss.
+ *
+ * seeWhoPlaysFirst.
+ *
* assembleAllEvents.
@@ -106,6 +100,22 @@ public class QuestEventManager {
} // End assembleAllEvents()
+ /**
+ * Retrieve single event, using its name.
+ *
+ * @param s0 {@link java.lang.String}
+ * @return {@link forge.data.QuestEvent}
+ */
+ public QuestEvent getEvent(final String s0) {
+ for (QuestEvent q : allDuels) {
+ if (q.getName().equals(s0)) { return q; } }
+
+ for (QuestChallenge q : allChallenges) {
+ if (q.getName().equals(s0)) { return q; } }
+
+ return null;
+ }
+
/**
*
* assembleDuelUniqueData.
@@ -363,6 +373,7 @@ public class QuestEventManager {
* @return an array of {@link java.lang.String} objects.
*/
public final List
- * main.
- *
" + Constant.Runtime.getGameType().toString() + " mode");
}
diff --git a/src/main/java/forge/control/match/ControlTabber.java b/src/main/java/forge/control/match/ControlTabber.java
index a136bc80ef2..b521ffc6c93 100644
--- a/src/main/java/forge/control/match/ControlTabber.java
+++ b/src/main/java/forge/control/match/ControlTabber.java
@@ -37,10 +37,10 @@ import forge.view.match.ViewTabber;
*/
public class ControlTabber extends MyObservable {
private final ViewTabber view;
- private MouseListener maMilling, maUnlimited,
- maMana, maSetup, maTutor, maCounter, maTap, maUntap, maLife;
+ private final MouseListener madMilling, madUnlimited,
+ madMana, madSetup, madTutor, madCounter, madTap, madUntap, madLife;
- private Observer stackObserver, logObserver;
+ private Observer obsStack, obsLog;
/** */
public static final int STACK_PANEL = 0;
@@ -75,73 +75,98 @@ public class ControlTabber extends MyObservable {
this.view.getLblUnlimitedLands().setEnabled(false);
}
- // Various mouse adapters for dev buttons
- initMouseAdapters();
-
- initObservers();
- }
-
- private void initObservers() {
- // Stack
- stackObserver = new Observer() {
- @Override
+ // Observers and listeners
+ obsStack = new Observer() { @Override
public void update(final Observable a, final Object b) {
- ControlTabber.this.view.updateStack();
- }
- };
+ ControlTabber.this.view.updateStack(); } };
- //Game Log
- logObserver = new Observer() {
- @Override
+ obsLog = new Observer() { @Override
public void update(final Observable a, final Object b) {
- ControlTabber.this.view.updateConsole();
- }
- };
+ ControlTabber.this.view.updateConsole(); } };
+
+ madMilling = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ ControlTabber.this.view.getLblMilling().toggleEnabled(); } };
+
+ madUnlimited = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ ControlTabber.this.view.getLblUnlimitedLands().toggleEnabled(); } };
+
+ madMana = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devModeGenerateMana(); } };
+
+ madSetup = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devSetupGameState(); } };
+
+ madTutor = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devModeTutor(); } };
+
+ madCounter = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devModeAddCounter(); } };
+
+ madTap = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devModeTapPerm(); } };
+
+ madUntap = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devModeUntapPerm(); } };
+
+ madLife = new MouseAdapter() { @Override
+ public void mousePressed(final MouseEvent e) {
+ GuiDisplayUtil.devModeSetLife(); } };
+
+ addListeners();
+ addObservers();
}
/** Adds observers to tabber. */
public void addObservers() {
- AllZone.getStack().addObserver(stackObserver);
- AllZone.getGameLog().addObserver(logObserver);
+ AllZone.getStack().addObserver(obsStack);
+ AllZone.getGameLog().addObserver(obsLog);
}
/** Adds listeners to various components in tabber. */
public void addListeners() {
// Milling enable toggle
- this.view.getLblMilling().removeMouseListener(maMilling);
- this.view.getLblMilling().addMouseListener(maMilling);
+ this.view.getLblMilling().removeMouseListener(madMilling);
+ this.view.getLblMilling().addMouseListener(madMilling);
// DevMode: Play unlimited land this turn toggle
- this.view.getLblUnlimitedLands().removeMouseListener(maUnlimited);
- this.view.getLblUnlimitedLands().addMouseListener(maUnlimited);
+ this.view.getLblUnlimitedLands().removeMouseListener(madUnlimited);
+ this.view.getLblUnlimitedLands().addMouseListener(madUnlimited);
// DevMode: Generate mana
- this.view.getLblGenerateMana().removeMouseListener(maMana);
- this.view.getLblGenerateMana().addMouseListener(maMana);
+ this.view.getLblGenerateMana().removeMouseListener(madMana);
+ this.view.getLblGenerateMana().addMouseListener(madMana);
// DevMode: Battlefield setup
- this.view.getLblSetupGame().removeMouseListener(maSetup);
- this.view.getLblSetupGame().addMouseListener(maSetup);
+ this.view.getLblSetupGame().removeMouseListener(madSetup);
+ this.view.getLblSetupGame().addMouseListener(madSetup);
// DevMode: Tutor for card
- this.view.getLblTutor().removeMouseListener(maTutor);
- this.view.getLblTutor().addMouseListener(maTutor);
+ this.view.getLblTutor().removeMouseListener(madTutor);
+ this.view.getLblTutor().addMouseListener(madTutor);
// DevMode: Add counter to permanent
- this.view.getLblCounterPermanent().removeMouseListener(maCounter);
- this.view.getLblCounterPermanent().addMouseListener(maCounter);
+ this.view.getLblCounterPermanent().removeMouseListener(madCounter);
+ this.view.getLblCounterPermanent().addMouseListener(madCounter);
// DevMode: Tap permanent
- this.view.getLblTapPermanent().removeMouseListener(maTap);
- this.view.getLblTapPermanent().addMouseListener(maTap);
+ this.view.getLblTapPermanent().removeMouseListener(madTap);
+ this.view.getLblTapPermanent().addMouseListener(madTap);
// DevMode: Untap permanent
- this.view.getLblUntapPermanent().removeMouseListener(maUntap);
- this.view.getLblUntapPermanent().addMouseListener(maUntap);
+ this.view.getLblUntapPermanent().removeMouseListener(madUntap);
+ this.view.getLblUntapPermanent().addMouseListener(madUntap);
// DevMode: Set life
- this.view.getLblSetLife().removeMouseListener(maLife);
- this.view.getLblSetLife().addMouseListener(maLife);
+ this.view.getLblSetLife().removeMouseListener(madLife);
+ this.view.getLblSetLife().addMouseListener(madLife);
}
/**
@@ -191,72 +216,4 @@ public class ControlTabber extends MyObservable {
public void showPnlStack() {
this.view.getVtpTabber().showTab(STACK_PANEL);
}
-
- /** Simple method that inits the mouse adapters for listeners,
- * here to simplify life in the constructor.
- */
- private void initMouseAdapters() {
- maMilling = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- ControlTabber.this.view.getLblMilling().toggleEnabled();
- }
- };
-
- maUnlimited = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- ControlTabber.this.view.getLblUnlimitedLands().toggleEnabled();
- }
- };
-
- maMana = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devModeGenerateMana();
- }
- };
-
- maSetup = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devSetupGameState();
- }
- };
-
- maTutor = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devModeTutor();
- }
- };
-
- maCounter = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devModeAddCounter();
- }
- };
-
- maTap = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devModeTapPerm();
- }
- };
-
- maUntap = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devModeUntapPerm();
- }
- };
-
- maLife = new MouseAdapter() {
- @Override
- public void mousePressed(final MouseEvent e) {
- GuiDisplayUtil.devModeSetLife();
- }
- };
- }
}
diff --git a/src/main/java/forge/control/match/ControlWinLose.java b/src/main/java/forge/control/match/ControlWinLose.java
index bd20dc0f8bc..9ab9c1f9a1a 100644
--- a/src/main/java/forge/control/match/ControlWinLose.java
+++ b/src/main/java/forge/control/match/ControlWinLose.java
@@ -12,6 +12,7 @@ import forge.Constant.Zone;
import forge.Singletons;
import forge.control.FControl;
import forge.deck.Deck;
+import forge.game.GameNew;
import forge.game.GameType;
import forge.gui.GuiUtils;
import forge.item.CardDb;
@@ -66,16 +67,15 @@ public class ControlWinLose {
/** Action performed when "restart" button is pressed in default win/lose UI. */
public void actionOnRestart() {
- AllZone.getMatchState().reset();
+ Singletons.getModel().getMatchState().reset();
GuiUtils.closeOverlay();
startNextRound();
}
/** Action performed when "quit" button is pressed in default win/lose UI. */
public void actionOnQuit() {
- AllZone.getMatchState().reset();
+ Singletons.getModel().getMatchState().reset();
Singletons.getModel().savePrefs();
- Singletons.getControl().getControlMatch().deinitMatch();
Singletons.getControl().changeState(FControl.HOME_SCREEN);
GuiUtils.closeOverlay();
}
@@ -92,7 +92,7 @@ public class ControlWinLose {
if (isAnte && !gameType.equals(GameType.Quest)) {
Deck hDeck = Constant.Runtime.HUMAN_DECK[0];
Deck cDeck = Constant.Runtime.COMPUTER_DECK[0];
- if (AllZone.getMatchState().hasWonLastGame(AllZone.getHumanPlayer().getName())) {
+ if (Singletons.getModel().getMatchState().hasWonLastGame(AllZone.getHumanPlayer().getName())) {
CardList compAntes = AllZone.getComputerPlayer().getCardsIn(Zone.Ante);
//remove compy's ante cards form his deck
@@ -122,7 +122,7 @@ public class ControlWinLose {
}
}
Singletons.getModel().savePrefs();
- AllZone.getGameAction().newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]);
+ GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]);
}
/**
diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java
new file mode 100644
index 00000000000..7507cf0bb82
--- /dev/null
+++ b/src/main/java/forge/game/GameNew.java
@@ -0,0 +1,543 @@
+package forge.game;
+
+import java.util.ArrayList;
+import java.util.Map.Entry;
+import java.util.Random;
+
+import javax.swing.JOptionPane;
+
+import forge.AllZone;
+import forge.Card;
+import forge.CardList;
+import forge.CardListFilter;
+import forge.CardUtil;
+import forge.Constant;
+import forge.Constant.Zone;
+import forge.GameAction;
+import forge.PhaseHandler;
+import forge.Player;
+import forge.Singletons;
+import forge.card.cardfactory.CardFactoryInterface;
+import forge.control.FControl;
+import forge.control.input.InputMulligan;
+import forge.deck.Deck;
+import forge.item.CardPrinted;
+import forge.properties.ForgePreferences.FPref;
+import forge.properties.ForgeProps;
+import forge.properties.NewConstants.Lang.GameAction.GameActionText;
+import forge.util.MyRandom;
+
+/**
+ * Methods for all things related to starting a new game.
+ * All of these methods can and should be static.
+ */
+public class GameNew {
+ /**
+ * Constructor for new game allowing card lists to be put into play
+ * immediately, and life totals to be adjusted, for computer and human.
+ *
+ * @param humanDeck
+ * {@link forge.deck.Deck} object.
+ * @param computerDeck
+ * {@link forge.deck.Deck} object.
+ * @param human
+ * {@link forge.CardList} object.
+ * @param computer
+ * {@link forge.CardList} object.
+ * @param humanLife
+ * int.
+ * @param computerLife
+ * int.
+ */
+ public static void newGame(final Deck humanDeck, final Deck computerDeck, final CardList human,
+ final CardList computer, final int humanLife, final int computerLife) {
+ Singletons.getControl().changeState(FControl.MATCH_SCREEN);
+ Singletons.getControl().getControlMatch().initMatch();
+ Constant.Quest.FANTASY_QUEST[0] = true;
+
+ GameNew.newGameCleanup();
+ GameNew.newMatchCleanup();
+
+ AllZone.getComputerPlayer().setStartingLife(computerLife);
+ AllZone.getHumanPlayer().setStartingLife(humanLife);
+ AllZone.getHumanPlayer().updateObservers();
+
+ for (final Card c : human) {
+ AllZone.getHumanPlayer().getZone(Zone.Battlefield).add(c);
+ c.setSickness(true);
+ }
+
+ for (final Card c : computer) {
+ AllZone.getComputerPlayer().getZone(Zone.Battlefield).add(c);
+ c.setSickness(true);
+ }
+
+ GameNew.actuateGame(humanDeck, computerDeck);
+ }
+
+ /**
+ * The default constructor for a new game.
+ *
+ * @param humanDeck
+ * {@link forge.deck.Deck} object.
+ * @param computerDeck
+ * {@link forge.deck.Deck} object.
+ */
+ public static void newGame(final Deck humanDeck, final Deck computerDeck) {
+ Singletons.getControl().changeState(FControl.MATCH_SCREEN);
+ Singletons.getControl().getControlMatch().initMatch();
+ Constant.Quest.FANTASY_QUEST[0] = false;
+
+ GameNew.newGameCleanup();
+ GameNew.newMatchCleanup();
+
+ AllZone.getComputerPlayer().setStartingLife(20);
+ AllZone.getHumanPlayer().setStartingLife(20);
+
+ GameNew.actuateGame(humanDeck, computerDeck);
+ }
+
+ /**
+ * This must be separated from the newGame method since life totals and
+ * player details could be adjusted before the game is started.
+ *
+ * That process (also cleanup and observer updates) should be done in
+ * newGame, then when all is ready, call this function.
+ */
+ private static void actuateGame(final Deck humanDeck, final Deck computerDeck) {
+ forge.card.trigger.Trigger.resetIDs();
+ AllZone.getTriggerHandler().clearTriggerSettings();
+ AllZone.getTriggerHandler().clearDelayedTrigger();
+ Singletons.getControl().getControlMatch().getMessageControl().updateGameCount();
+
+ // friendliness
+ final CardFactoryInterface c = AllZone.getCardFactory();
+ Card.resetUniqueNumber();
+ final boolean canRandomFoil = Constant.Runtime.RANDOM_FOIL[0]
+ && Constant.Runtime.getGameType().equals(GameType.Constructed);
+ final Random generator = MyRandom.getRandom();
+
+ final ArrayList