From a2cf0d29d5b2d60eaf6f4e26290402dd3ada6945 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Thu, 18 Oct 2012 14:25:41 +0000 Subject: [PATCH] A huge amount of AllZone static methods was inlined (so that people see how many calls really are there behind AllZone.getXXX, and consider obtaining (for example) GameState value to a local variable) --- .gitattributes | 1 + src/main/java/forge/AllZone.java | 220 ------------------ src/main/java/forge/Card.java | 43 ++-- src/main/java/forge/CardUtil.java | 6 +- src/main/java/forge/GameAction.java | 82 +++---- src/main/java/forge/GameActionUtil.java | 48 ++-- src/main/java/forge/StaticEffects.java | 2 +- .../card/abilityfactory/AbilityFactory.java | 11 +- .../AbilityFactoryAlterLife.java | 3 +- .../abilityfactory/AbilityFactoryAnimate.java | 10 +- .../AbilityFactoryChangeZone.java | 25 +- .../abilityfactory/AbilityFactoryChoose.java | 2 +- .../abilityfactory/AbilityFactoryClash.java | 4 +- .../abilityfactory/AbilityFactoryCleanup.java | 4 +- .../abilityfactory/AbilityFactoryClone.java | 3 +- .../abilityfactory/AbilityFactoryCombat.java | 7 +- .../abilityfactory/AbilityFactoryCopy.java | 4 +- .../AbilityFactoryCounterMagic.java | 21 +- .../AbilityFactoryCounters.java | 8 +- .../abilityfactory/AbilityFactoryDebuff.java | 7 +- .../AbilityFactoryDelayedTrigger.java | 4 +- .../abilityfactory/AbilityFactoryEffect.java | 15 +- .../AbilityFactoryGainControl.java | 5 +- .../AbilityFactoryPermanentState.java | 2 +- .../abilityfactory/AbilityFactoryPlay.java | 2 +- .../AbilityFactoryPreventDamage.java | 15 +- .../AbilityFactoryProtection.java | 27 ++- .../abilityfactory/AbilityFactoryPump.java | 49 ++-- .../AbilityFactoryRegenerate.java | 11 +- .../abilityfactory/AbilityFactoryRepeat.java | 6 +- .../AbilityFactorySacrifice.java | 3 +- .../AbilityFactoryStoreSVar.java | 4 +- .../abilityfactory/AbilityFactoryToken.java | 3 +- .../abilityfactory/AbilityFactoryTurns.java | 9 +- .../cardfactory/CardFactoryArtifacts.java | 4 +- .../card/cardfactory/CardFactoryAuras.java | 4 +- .../cardfactory/CardFactoryCreatures.java | 16 +- .../cardfactory/CardFactoryEnchantments.java | 6 +- .../card/cardfactory/CardFactoryInstants.java | 5 +- .../cardfactory/CardFactorySorceries.java | 8 +- .../card/cardfactory/CardFactoryUtil.java | 30 +-- src/main/java/forge/card/cost/CostExile.java | 19 +- .../forge/card/replacement/ReplaceDamage.java | 4 +- .../card/replacement/ReplacementEffect.java | 12 +- .../card/replacement/ReplacementHandler.java | 3 +- .../java/forge/card/spellability/Ability.java | 4 +- .../card/spellability/AbilityActivated.java | 4 +- .../forge/card/spellability/AbilityMana.java | 4 +- .../java/forge/card/spellability/Spell.java | 8 +- .../spellability/SpellAbilityCondition.java | 8 +- .../SpellAbilityRequirements.java | 12 +- .../spellability/SpellAbilityRestriction.java | 11 +- .../card/spellability/SpellPermanent.java | 6 +- .../card/spellability/TargetSelection.java | 5 +- .../card/staticability/StaticAbility.java | 14 +- .../StaticAbilityCantBeCast.java | 4 +- .../StaticAbilityContinuous.java | 3 +- src/main/java/forge/card/trigger/Trigger.java | 10 +- .../forge/card/trigger/TriggerDamageDone.java | 4 +- .../forge/card/trigger/TriggerHandler.java | 11 +- .../card/trigger/TriggerSpellAbilityCast.java | 4 +- .../java/forge/control/input/InputAttack.java | 16 +- .../java/forge/control/input/InputBlock.java | 11 +- .../forge/control/input/InputCleanup.java | 3 +- .../forge/control/input/InputControl.java | 3 +- .../control/input/InputPassPriority.java | 4 +- .../forge/control/input/InputPayManaCost.java | 14 +- .../control/input/InputPayManaCostUtil.java | 8 +- src/main/java/forge/game/GameNew.java | 4 +- src/main/java/forge/game/GameState.java | 84 ++++++- src/main/java/forge/game/MatchController.java | 2 +- src/main/java/forge/game/phase/Combat.java | 16 +- .../java/forge/game/phase/CombatUtil.java | 79 ++++--- src/main/java/forge/game/phase/EndOfTurn.java | 21 +- .../java/forge/game/phase/PhaseHandler.java | 58 ++--- src/main/java/forge/game/phase/PhaseUtil.java | 46 ++-- src/main/java/forge/game/phase/Upkeep.java | 82 +++---- .../forge/game/player/ComputerAIGeneral.java | 13 +- .../forge/game/player/ComputerAIInput.java | 3 +- .../java/forge/game/player/ComputerUtil.java | 29 ++- .../forge/game/player/ComputerUtilAttack.java | 11 +- src/main/java/forge/game/player/Player.java | 28 +-- src/main/java/forge/game/zone/MagicStack.java | 26 +-- src/main/java/forge/game/zone/PlayerZone.java | 14 +- .../game/zone/PlayerZoneBattlefield.java | 17 +- src/main/java/forge/gui/GuiDisplayUtil.java | 6 +- .../forge/gui/match/TargetingOverlay.java | 6 +- .../java/forge/gui/match/VAssignDamage.java | 4 +- .../forge/gui/match/controllers/CDock.java | 5 +- .../forge/gui/match/nonsingleton/CField.java | 6 +- .../java/forge/gui/match/views/VCombat.java | 4 +- .../java/forge/gui/match/views/VPlayers.java | 3 +- .../java/forge/gui/match/views/VStack.java | 14 +- src/main/java/forge/util/Expressions.java | 67 ++++++ 94 files changed, 745 insertions(+), 851 deletions(-) create mode 100644 src/main/java/forge/util/Expressions.java diff --git a/.gitattributes b/.gitattributes index 0d869f77642..70783d7fa4c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12951,6 +12951,7 @@ src/main/java/forge/util/Base64Coder.java svneol=native#text/plain src/main/java/forge/util/BinaryUtil.java -text src/main/java/forge/util/ComparableOp.java -text src/main/java/forge/util/CopyFiles.java svneol=native#text/plain +src/main/java/forge/util/Expressions.java -text src/main/java/forge/util/FileFinder.java svneol=native#text/plain src/main/java/forge/util/FileSection.java -text src/main/java/forge/util/FileSectionManual.java -text diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java index c3f0c73d4ed..69ffebfbde3 100644 --- a/src/main/java/forge/AllZone.java +++ b/src/main/java/forge/AllZone.java @@ -19,17 +19,9 @@ package forge; import forge.card.cardfactory.CardFactory; import forge.card.cardfactory.CardFactoryInterface; -import forge.card.replacement.ReplacementHandler; -import forge.card.trigger.TriggerHandler; import forge.control.input.InputControl; import forge.game.GameState; import forge.game.limited.GauntletMini; -import forge.game.phase.Combat; -import forge.game.phase.EndOfTurn; -import forge.game.player.Player; -import forge.game.zone.MagicStack; -import forge.game.zone.PlayerZone; -import forge.game.zone.ZoneType; import forge.properties.ForgeProps; import forge.properties.NewConstants; @@ -87,35 +79,6 @@ public final class AllZone { return AllZone.gauntlet; } - /** - *

- * getEndOfTurn. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.game.phase.EndOfTurn} object. - * @since 1.0.15 - */ - public static EndOfTurn getEndOfTurn() { - return Singletons.getModel().getGameState().getEndOfTurn(); - } - - /** - *

- * getEndOfCombat. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.game.phase.EndOfCombat} object. - * @since 1.0.15 - */ - public static forge.game.phase.EndOfCombat getEndOfCombat() { - return Singletons.getModel().getGameState().getEndOfCombat(); - } - - /** *

* getGameLog. @@ -161,24 +124,6 @@ public final class AllZone { AllZone.cardFactory = factory; } - /** - *

- * getStack. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.game.zone.MagicStack} object. - * @since 1.0.15 - */ - public static MagicStack getStack() { - if (Singletons.getModel() != null) { - return Singletons.getModel().getGameState().getStack(); - } - - return null; - } - /** *

* getInputControl. @@ -196,171 +141,6 @@ public final class AllZone { AllZone.inputControl = i0; } - /** - *

- * getStaticEffects. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.StaticEffects} object. - * @since 1.0.15 - */ - public static StaticEffects getStaticEffects() { - final GameState gameState = Singletons.getModel().getGameState(); - - if (gameState != null) { - return gameState.getStaticEffects(); - } - - return null; - } - - /** - *

- * getTriggerHandler. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.card.trigger.TriggerHandler} object. - * @since 1.0.15 - */ - public static TriggerHandler getTriggerHandler() { - return Singletons.getModel().getGameState().getTriggerHandler(); - } - - /** - * Gets the replacement handler. - * - * @return the replacement handler - */ - public static ReplacementHandler getReplacementHandler() { - return Singletons.getModel().getGameState().getReplacementHandler(); - } - - /** - *

- * getCombat. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.game.phase.Combat} object. - * @since 1.0.15 - */ - public static Combat getCombat() { - return Singletons.getModel().getGameState().getCombat(); - } - - /** - *

- * setCombat. - *

- * - * Will eventually be marked deprecated. - * - * @param attackers - * a {@link forge.game.phase.Combat} object. - * @since 1.0.15 - */ - public static void setCombat(final Combat attackers) { - Singletons.getModel().getGameState().setCombat(attackers); - } - - /** - *

- * getStackZone. - *

- * - * Will eventually be marked deprecated. - * - * @return a {@link forge.game.zone.PlayerZone} object. - * @since 1.0.15 - */ - public static PlayerZone getStackZone() { - return Singletons.getModel().getGameState().getStackZone(); - } - - /** - *

- * getZone. - *

- * - * @param c - * a {@link forge.Card} object. - * @return a {@link forge.game.zone.PlayerZone} object. - */ - public static PlayerZone getZoneOf(final Card c) { - final GameState gameState = Singletons.getModel().getGameState(); - if (gameState == null) { - return null; - } - - if (gameState.getStackZone().contains(c)) { - return gameState.getStackZone(); - } - - for (final Player p : gameState.getPlayers()) { - for (final ZoneType z : Player.ALL_ZONES) { - final PlayerZone pz = p.getZone(z); - if (pz.contains(c)) { - return pz; - } - } - } - - return null; - } - - /** - * - * isCardInZone. - * - * @param c - * Card - * @param zone - * Constant.Zone - * @return boolean - */ - public static boolean isCardInZone(final Card c, final ZoneType zone) { - final GameState gameState = Singletons.getModel().getGameState(); - if (gameState == null) { - return false; - } - - if (zone.equals(ZoneType.Stack)) { - if (gameState.getStackZone().contains(c)) { - return true; - } - } else { - for (final Player p : gameState.getPlayers()) { - if (p.getZone(zone).contains(c)) { - return true; - } - } - } - - return false; - } - - /** - *

- * resetZoneMoveTracking. - *

- */ - public static void resetZoneMoveTracking() { - final GameState gameState = Singletons.getModel().getGameState(); - if (gameState == null) { - return; - } - for (final Player p : gameState.getPlayers()) { - for (final ZoneType z : Player.ALL_ZONES) { - p.getZone(z).resetCardsAddedThisTurn(); - } - } - } - /** * Create and return the next timestamp. * diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index fd4bc18d5e1..b46f1d4cea6 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -58,6 +58,7 @@ import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.item.CardDb; +import forge.util.Expressions; import forge.util.MyRandom; /** @@ -263,7 +264,7 @@ public class Card extends GameEntity implements Comparable { || (cur == CardCharacteristicName.Transformed && state == CardCharacteristicName.Original)) { HashMap runParams = new HashMap(); runParams.put("Transformer", this); - AllZone.getTriggerHandler().runTrigger(TriggerType.Transformed, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Transformed, runParams); } return true; @@ -1266,7 +1267,7 @@ public class Card extends GameEntity implements Comparable { runParams.put("Card", this); runParams.put("CounterType", counterName); for (int i = 0; i < n; i++) { - AllZone.getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams); } this.updateObservers(); @@ -1299,7 +1300,7 @@ public class Card extends GameEntity implements Comparable { runParams.put("Card", this); runParams.put("CounterType", counterName); for (int i = 0; i < (multiplier * n); i++) { - AllZone.getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.CounterAdded, runParams); } this.updateObservers(); @@ -1328,7 +1329,7 @@ public class Card extends GameEntity implements Comparable { runParams.put("Card", this); runParams.put("CounterType", counterName); for (int i = 0; i < n; i++) { - AllZone.getTriggerHandler().runTrigger(TriggerType.CounterRemoved, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.CounterRemoved, runParams); } if (counterName.equals(Counters.TIME) && (aux == 0)) { @@ -4032,7 +4033,7 @@ public class Card extends GameEntity implements Comparable { final Map runParams = new TreeMap(); runParams.put("Equipment", this); runParams.put("Card", c); - AllZone.getTriggerHandler().runTrigger(TriggerType.Unequip, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Unequip, runParams); } /** @@ -5038,7 +5039,7 @@ public class Card extends GameEntity implements Comparable { // Run triggers final Map runParams = new TreeMap(); runParams.put("Card", this); - AllZone.getTriggerHandler().runTrigger(TriggerType.Taps, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Taps, runParams); } this.setTapped(true); } @@ -5053,7 +5054,7 @@ public class Card extends GameEntity implements Comparable { // Run triggers final Map runParams = new TreeMap(); runParams.put("Card", this); - AllZone.getTriggerHandler().runTrigger(TriggerType.Untaps, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Untaps, runParams); } @@ -6078,9 +6079,9 @@ public class Card extends GameEntity implements Comparable { // Suppressed Exiling is as close as we can get to // "ceasing to exist" - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.ChangesZone); Singletons.getModel().getGameAction().exile(this); - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); } return true; } @@ -7081,7 +7082,7 @@ public class Card extends GameEntity implements Comparable { x = CardFactoryUtil.xCount(source, source.getSVar(rhs)); } - if (!AllZoneUtil.compare(y, property, x)) { + if (!Expressions.compare(y, property, x)) { return false; } } @@ -7119,7 +7120,7 @@ public class Card extends GameEntity implements Comparable { final int actualnumber = this.getCounters(Counters.getType(counterType)); - if (!AllZoneUtil.compare(actualnumber, comparator, number)) { + if (!Expressions.compare(actualnumber, comparator, number)) { return false; } } else if (property.startsWith("attacking")) { @@ -7171,7 +7172,7 @@ public class Card extends GameEntity implements Comparable { return false; } } else if (property.startsWith("unblocked")) { - if (!AllZone.getCombat().isUnblocked(this)) { + if (!Singletons.getModel().getGameState().getCombat().isUnblocked(this)) { return false; } } else if (property.startsWith("kicked")) { @@ -7528,7 +7529,7 @@ public class Card extends GameEntity implements Comparable { * @return a boolean. */ public final boolean isAttacking() { - return AllZone.getCombat().isAttacking(this); + return Singletons.getModel().getGameState().getCombat().isAttacking(this); } /** @@ -7539,7 +7540,7 @@ public class Card extends GameEntity implements Comparable { * @return a boolean. */ public final boolean isBlocking() { - final List blockers = AllZone.getCombat().getAllBlockers(); + final List blockers = Singletons.getModel().getGameState().getCombat().getAllBlockers(); return blockers.contains(this); } @@ -7551,7 +7552,7 @@ public class Card extends GameEntity implements Comparable { * @return a boolean. */ public final boolean isBlocked() { - return AllZone.getCombat().isBlocked(this); + return Singletons.getModel().getGameState().getCombat().isBlocked(this); } /** @@ -7564,7 +7565,7 @@ public class Card extends GameEntity implements Comparable { * @return a boolean. */ public final boolean isBlocking(final Card attacker) { - return AllZone.getCombat().getAttackersBlockedBy(this).contains(attacker); + return Singletons.getModel().getGameState().getCombat().getAttackersBlockedBy(this).contains(attacker); } /** @@ -7577,7 +7578,7 @@ public class Card extends GameEntity implements Comparable { * @return a boolean. */ public final boolean isBlockedBy(final Card blocker) { - return AllZone.getCombat().getAttackersBlockedBy(blocker).contains(this); + return Singletons.getModel().getGameState().getCombat().getAttackersBlockedBy(blocker).contains(this); } // ///////////////////////// @@ -8159,7 +8160,7 @@ public class Card extends GameEntity implements Comparable { repParams.put("IsCombat", isCombat); repParams.put("Prevention", true); - if (AllZone.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return 0; } @@ -8286,7 +8287,7 @@ public class Card extends GameEntity implements Comparable { repParams.put("DamageAmount", damageIn); repParams.put("IsCombat", isCombat); - if (AllZone.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return 0; } @@ -8351,7 +8352,7 @@ public class Card extends GameEntity implements Comparable { runParams.put("DamageTarget", this); runParams.put("DamageAmount", damageToAdd); runParams.put("IsCombatDamage", isCombat); - AllZone.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams); if (this.isPlaneswalker()) { this.subtractCounter(Counters.LOYALTY, damageToAdd); @@ -8868,7 +8869,7 @@ public class Card extends GameEntity implements Comparable { * @return boolean */ public boolean isInZone(final ZoneType zone) { - return AllZone.isCardInZone(this, zone); + return GameState.isCardInZone(this, zone); } /** diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java index 4171d700a66..d99acd8c3a4 100644 --- a/src/main/java/forge/CardUtil.java +++ b/src/main/java/forge/CardUtil.java @@ -631,7 +631,7 @@ public final class CardUtil { for (Player p : Singletons.getModel().getGameState().getPlayers()) res.addAll(p.getZone(to).getCardsAddedThisTurn(from)); } else { - res.addAll(AllZone.getStackZone().getCardsAddedThisTurn(from)); + res.addAll(Singletons.getModel().getGameState().getStackZone().getCardsAddedThisTurn(from)); } res = CardLists.getValidCards(res, valid, src.getController(), src); @@ -651,7 +651,7 @@ public final class CardUtil { public static List getThisTurnCast(final String valid, final Card src) { List res = new ArrayList(); - res.addAll(AllZone.getStack().getCardsCastThisTurn()); + res.addAll(Singletons.getModel().getGameState().getStack().getCardsCastThisTurn()); res = CardLists.getValidCards(res, valid, src.getController(), src); @@ -670,7 +670,7 @@ public final class CardUtil { public static List getLastTurnCast(final String valid, final Card src) { List res = new ArrayList(); - res.addAll(AllZone.getStack().getCardsCastLastTurn()); + res.addAll(Singletons.getModel().getGameState().getStack().getCardsCastLastTurn()); res = CardLists.getValidCards(res, valid, src.getController(), src); diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 6ad8da13bbe..fca7140b8e3 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -177,9 +177,9 @@ public class GameAction { repParams.put("Origin", zoneFrom != null ? zoneFrom.getZoneType() : null); repParams.put("Destination", zoneTo.getZoneType()); - ReplacementResult repres = AllZone.getReplacementHandler().run(repParams); + ReplacementResult repres = Singletons.getModel().getGameState().getReplacementHandler().run(repParams); if (repres != ReplacementResult.NotReplaced) { - if (AllZone.getStack().isResolving(c) && !zoneTo.is(ZoneType.Graveyard) && repres == ReplacementResult.Prevented) { + if (Singletons.getModel().getGameState().getStack().isResolving(c) && !zoneTo.is(ZoneType.Graveyard) && repres == ReplacementResult.Prevented) { return Singletons.getModel().getGameAction().moveToGraveyard(c); } return c; @@ -191,7 +191,7 @@ public class GameAction { } if (suppress) { - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.ChangesZone); } // "enter the battlefield as a copy" - apply code here @@ -210,7 +210,7 @@ public class GameAction { if (zoneFrom != null) { if (zoneFrom.is(ZoneType.Battlefield) && c.isCreature()) { - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); } zoneFrom.remove(c); } @@ -228,11 +228,11 @@ public class GameAction { runParams.put("Origin", null); } runParams.put("Destination", zoneTo.getZoneType().name()); - AllZone.getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams); // AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); if (suppress) { - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); } if (zoneFrom == null) { @@ -342,7 +342,7 @@ public class GameAction { public final Card moveTo(final PlayerZone zoneTo, Card c, Integer position) { // Ideally move to should never be called without a prevZone // Remove card from Current Zone, if it has one - final PlayerZone zoneFrom = AllZone.getZoneOf(c); + final PlayerZone zoneFrom = GameState.getZoneOf(c); // String prevName = prev != null ? prev.getZoneName() : ""; if (c.hasKeyword("If CARDNAME would leave the battlefield, exile it instead of putting it anywhere else.") @@ -403,7 +403,7 @@ public class GameAction { */ public final void controllerChangeZoneCorrection(final Card c) { System.out.println("Correcting zone for " + c.toString()); - final PlayerZone oldBattlefield = AllZone.getZoneOf(c); + final PlayerZone oldBattlefield = GameState.getZoneOf(c); if (oldBattlefield == null || oldBattlefield.getZoneType() == ZoneType.Stack) { return; } @@ -413,7 +413,7 @@ public class GameAction { return; } - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.ChangesZone); for (Player p: Singletons.getModel().getGameState().getPlayers()) { ((PlayerZoneBattlefield)p.getZone(ZoneType.Battlefield)).setTriggers(false); } @@ -426,15 +426,15 @@ public class GameAction { if (c.hasStartOfKeyword("Echo")) { c.addExtrinsicKeyword("(Echo unpaid)"); } - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); c.setTurnInZone(tiz); final HashMap runParams = new HashMap(); runParams.put("Card", c); - AllZone.getTriggerHandler().runTrigger(TriggerType.ChangesController, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.ChangesController, runParams); - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); for (Player p: Singletons.getModel().getGameState().getPlayers()) { ((PlayerZoneBattlefield)p.getZone(ZoneType.Battlefield)).setTriggers(true); } @@ -450,7 +450,7 @@ public class GameAction { * @return a {@link forge.Card} object. */ public final Card moveToStack(final Card c) { - final PlayerZone stack = AllZone.getStackZone(); + final PlayerZone stack = Singletons.getModel().getGameState().getStackZone(); return this.moveTo(stack, c); } @@ -464,7 +464,7 @@ public class GameAction { * @return a {@link forge.Card} object. */ public final Card moveToGraveyard(Card c) { - final PlayerZone origZone = AllZone.getZoneOf(c); + final PlayerZone origZone = GameState.getZoneOf(c); final Player owner = c.getOwner(); final PlayerZone grave = owner.getZone(ZoneType.Graveyard); final PlayerZone exile = owner.getZone(ZoneType.Exile); @@ -561,7 +561,7 @@ public class GameAction { }; recoverAbility.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(recoverAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(recoverAbility); } } } @@ -651,7 +651,7 @@ public class GameAction { * @return a {@link forge.Card} object. */ public final Card moveToLibrary(Card c, int libPosition) { - final PlayerZone p = AllZone.getZoneOf(c); + final PlayerZone p = GameState.getZoneOf(c); final PlayerZone library = c.getOwner().getZone(ZoneType.Library); if (c.hasKeyword("If CARDNAME would leave the battlefield, exile it instead of putting it anywhere else.")) { @@ -695,7 +695,7 @@ public class GameAction { runParams.put("Origin", null); } runParams.put("Destination", ZoneType.Library.name()); - AllZone.getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams); if (p != null) { Player owner = p.getPlayer(); @@ -824,7 +824,7 @@ public class GameAction { activate.setActivatingPlayer(card.getOwner()); activate.setTrigger(true); - AllZone.getStack().add(activate); + Singletons.getModel().getGameState().getStack().add(activate); } /** @@ -888,7 +888,7 @@ public class GameAction { activate.setStackDescription(sbAct.toString()); activate.setActivatingPlayer(card.getOwner()); - AllZone.getStack().add(activate); + Singletons.getModel().getGameState().getStack().add(activate); } /** @@ -940,7 +940,7 @@ public class GameAction { /** */ public final void checkStaticAbilities() { // remove old effects - AllZone.getStaticEffects().clearStaticEffects(); + Singletons.getModel().getGameState().getStaticEffects().clearStaticEffects(); // search for cards with static abilities final List allCards = GameState.getCardsInGame(); @@ -977,7 +977,7 @@ public class GameAction { } // card state effects like Glorious Anthem - for (final String effect : AllZone.getStaticEffects().getStateBasedMap().keySet()) { + for (final String effect : Singletons.getModel().getGameState().getStaticEffects().getStateBasedMap().keySet()) { final Command com = GameActionUtil.getCommands().get(effect); com.execute(); } @@ -994,12 +994,12 @@ public class GameAction { // sol(10/29) added for Phase updates, state effects shouldn't be // checked during Spell Resolution (except when persist-returning - if (AllZone.getStack().getResolving()) { + if (Singletons.getModel().getGameState().getStack().getResolving()) { return; } - final boolean refreeze = AllZone.getStack().isFrozen(); - AllZone.getStack().setFrozen(true); + final boolean refreeze = Singletons.getModel().getGameState().getStack().isFrozen(); + Singletons.getModel().getGameState().getStack().setFrozen(true); final JFrame frame = Singletons.getView().getFrame(); if (!frame.isDisplayable()) { @@ -1012,7 +1012,7 @@ public class GameAction { new ViewWinLose(match); match.getCurrentGame().getStack().clearSimultaneousStack(); if (!refreeze) { - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); } return; } @@ -1026,7 +1026,7 @@ public class GameAction { this.checkStaticAbilities(); final HashMap runParams = new HashMap(); - AllZone.getTriggerHandler().runTrigger(TriggerType.Always, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Always, runParams); for (Card c : GameState.getCardsIn(ZoneType.Battlefield)) { @@ -1105,13 +1105,13 @@ public class GameAction { this.destroy(c); // this is untested with instants and abilities but // required for First Strike combat phase - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); checkAgain = true; } else if (c.getNetDefense() <= 0) { // TODO This shouldn't be a destroy, and should happen // before the damage check probably this.destroy(c); - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); checkAgain = true; } // Soulbond unpairing @@ -1192,7 +1192,7 @@ public class GameAction { this.destroyPlaneswalkers(); if (!refreeze) { - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); } } // checkStateEffects() @@ -1285,7 +1285,7 @@ public class GameAction { // Run triggers final HashMap runParams = new HashMap(); runParams.put("Card", c); - AllZone.getTriggerHandler().runTrigger(TriggerType.Sacrificed, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Sacrificed, runParams); return true; } @@ -1340,7 +1340,7 @@ public class GameAction { sb.append(crd).append(" - Totem armor: destroy this aura."); ability.setStackDescription(sb.toString()); - AllZone.getStack().add(ability); + Singletons.getModel().getGameState().getStack().add(ability); return false; } } // totem armor @@ -1433,7 +1433,7 @@ public class GameAction { @Override public void resolve() { - if (AllZone.getZoneOf(persistCard).is(ZoneType.Graveyard)) { + if (GameState.getZoneOf(persistCard).is(ZoneType.Graveyard)) { final PlayerZone ownerPlay = persistCard.getOwner().getZone(ZoneType.Battlefield); final Card card = GameAction.this.moveTo(ownerPlay, persistCard); card.addCounter(Counters.M1M1, 1); @@ -1444,7 +1444,7 @@ public class GameAction { persistAb.setDescription(newCard.getName() + " - Returning from Persist"); persistAb.setActivatingPlayer(c.getController()); - AllZone.getStack().addSimultaneousStackEntry(persistAb); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(persistAb); } if (undying) { @@ -1453,7 +1453,7 @@ public class GameAction { @Override public void resolve() { - if (AllZone.getZoneOf(undyingCard).is(ZoneType.Graveyard)) { + if (GameState.getZoneOf(undyingCard).is(ZoneType.Graveyard)) { final PlayerZone ownerPlay = undyingCard.getOwner().getZone(ZoneType.Battlefield); final Card card = GameAction.this.moveTo(ownerPlay, undyingCard); card.addCounter(Counters.P1P1, 1); @@ -1464,7 +1464,7 @@ public class GameAction { undyingAb.setDescription(newCard.getName() + " - Returning from Undying"); undyingAb.setActivatingPlayer(c.getController()); - AllZone.getStack().addSimultaneousStackEntry(undyingAb); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(undyingAb); } return true; } // sacrificeDestroy() @@ -1489,7 +1489,7 @@ public class GameAction { c.setDamage(0); c.tap(); c.addRegeneratedThisTurn(); - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); return false; } @@ -1541,7 +1541,7 @@ public class GameAction { final ArrayList abilities = c.getSpellAbilities(); final ArrayList choices = new ArrayList(); final Player human = Singletons.getControl().getPlayer(); - final PlayerZone zone = AllZone.getZoneOf(c); + final PlayerZone zone = GameState.getZoneOf(c); if (c.isLand() && human.canPlayLand()) { if (zone.is(ZoneType.Hand) || ((!zone.is(ZoneType.Battlefield)) && c.hasStartOfKeyword("May be played"))) { @@ -1647,7 +1647,7 @@ public class GameAction { } boolean x = sa.getSourceCard().getManaCost().getShardCount(ManaCostShard.X) > 0; - AllZone.getStack().add(sa, x); + Singletons.getModel().getGameState().getStack().add(sa, x); } else { sa.setManaCost("0"); // Beached As sa.getBeforePayMana().setFree(true); @@ -1835,11 +1835,11 @@ public class GameAction { // AND that you can't use mana tapabilities of convoked // creatures // to pay the convoked cost. - AllZone.getTriggerHandler().suppressMode(TriggerType.Taps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Taps); for (final Card c : sa.getTappedForConvoke()) { c.tap(); } - AllZone.getTriggerHandler().clearSuppression(TriggerType.Taps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Taps); manaCost = newCost; } @@ -1973,7 +1973,7 @@ public class GameAction { sa.setSourceCard(Singletons.getModel().getGameAction().moveToStack(source)); } - AllZone.getStack().add(sa); + Singletons.getModel().getGameState().getStack().add(sa); if (sa.isTapAbility() && !sa.wasCancelled()) { sa.getSourceCard().tap(); } diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index 4ea8d418907..ac6549fbea2 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -200,7 +200,7 @@ public final class GameActionUtil { ability.setStackDescription(sb.toString()); ability.setActivatingPlayer(controller); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }; @@ -319,7 +319,7 @@ public final class GameActionUtil { sb.append(c).append(" - Ripple."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -345,10 +345,10 @@ public final class GameActionUtil { final Command unpaid) { // temporarily disable the Resolve flag, so the user can payMana for the // resolving Ability - final boolean bResolving = AllZone.getStack().getResolving(); - AllZone.getStack().setResolving(false); + final boolean bResolving = Singletons.getModel().getGameState().getStack().getResolving(); + Singletons.getModel().getGameState().getStack().setResolving(false); AllZone.getInputControl().setInput(new InputPayManaCostAbility(message, manaCost, paid, unpaid)); - AllZone.getStack().setResolving(bResolving); + Singletons.getModel().getGameState().getStack().setResolving(bResolving); } /** @@ -449,30 +449,30 @@ public final class GameActionUtil { //the following costs need inputs and can't be combined at the moment if (costPart instanceof CostSacrifice) { - final boolean bResolving = AllZone.getStack().getResolving(); - AllZone.getStack().setResolving(false); + final boolean bResolving = Singletons.getModel().getGameState().getStack().getResolving(); + Singletons.getModel().getGameState().getStack().setResolving(false); AllZone.getInputControl().setInput(new InputPaySacCost((CostSacrifice) costPart, ability, paid, unpaid)); - AllZone.getStack().setResolving(bResolving); + Singletons.getModel().getGameState().getStack().setResolving(bResolving); } else if (costPart instanceof CostReturn) { - final boolean bResolving = AllZone.getStack().getResolving(); - AllZone.getStack().setResolving(false); + final boolean bResolving = Singletons.getModel().getGameState().getStack().getResolving(); + Singletons.getModel().getGameState().getStack().setResolving(false); AllZone.getInputControl().setInput(new InputPayReturnCost((CostReturn) costPart, ability, paid, unpaid)); - AllZone.getStack().setResolving(bResolving); + Singletons.getModel().getGameState().getStack().setResolving(bResolving); } else if (costPart instanceof CostDiscard) { - final boolean bResolving = AllZone.getStack().getResolving(); - AllZone.getStack().setResolving(false); + final boolean bResolving = Singletons.getModel().getGameState().getStack().getResolving(); + Singletons.getModel().getGameState().getStack().setResolving(false); AllZone.getInputControl().setInput(new InputPayDiscardCost((CostDiscard) costPart, ability, paid, unpaid)); - AllZone.getStack().setResolving(bResolving); + Singletons.getModel().getGameState().getStack().setResolving(bResolving); } else if (costPart instanceof CostMana) { // temporarily disable the Resolve flag, so the user can payMana for the // resolving Ability - final boolean bResolving = AllZone.getStack().getResolving(); - AllZone.getStack().setResolving(false); + final boolean bResolving = Singletons.getModel().getGameState().getStack().getResolving(); + Singletons.getModel().getGameState().getStack().setResolving(false); AllZone.getInputControl().setInput(new InputPayManaCostAbility(source + "\r\n", ability.getManaCost(), paid, unpaid)); - AllZone.getStack().setResolving(bResolving); + Singletons.getModel().getGameState().getStack().setResolving(bResolving); } } @@ -634,12 +634,12 @@ public final class GameActionUtil { .getAmountOfKeyword("When CARDNAME is dealt damage, destroy it. It can't be regenerated."); for (int i = 0; i < amount; i++) { - AllZone.getStack().addSimultaneousStackEntry(ability2); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability2); } final int amount2 = affected.getAmountOfKeyword("When CARDNAME is dealt damage, destroy it."); for (int i = 0; i < amount2; i++) { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } } @@ -686,7 +686,7 @@ public final class GameActionUtil { } ability2.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability2); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability2); } } @@ -733,7 +733,7 @@ public final class GameActionUtil { sb.append(" sacrifices ").append(damage).append(" nontoken permanents."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } @@ -792,7 +792,7 @@ public final class GameActionUtil { for (int i = 0; i < keywords.size(); i++) { if (keywords.get(i).startsWith("Poisonous")) { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -830,7 +830,7 @@ public final class GameActionUtil { doubleLife.setStackDescription(aura.getName() + " - " + enchanted.getController() + " doubles his or her life total."); - AllZone.getStack().addSimultaneousStackEntry(doubleLife); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(doubleLife); } } @@ -911,7 +911,7 @@ public final class GameActionUtil { sb.append("If two or more of those cards have the same name, repeat this process."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java index 08a251c43ec..2a08569adbd 100644 --- a/src/main/java/forge/StaticEffects.java +++ b/src/main/java/forge/StaticEffects.java @@ -57,7 +57,7 @@ public class StaticEffects { } this.staticEffects = new ArrayList(); - AllZone.getTriggerHandler().cleanUpTemporaryTriggers(); + Singletons.getModel().getGameState().getTriggerHandler().cleanUpTemporaryTriggers(); } /** diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index de2a38c9c62..498d631d5f6 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -2189,12 +2188,12 @@ public class AbilityFactory { } } } else if (defined.equals("AttackingPlayer")) { - final Player p = AllZone.getCombat().getAttackingPlayer(); + final Player p = Singletons.getModel().getGameState().getCombat().getAttackingPlayer(); if (!players.contains(p)) { players.add(p); } } else if (defined.equals("DefendingPlayer")) { - final Player p = AllZone.getCombat().getDefendingPlayer(); + final Player p = Singletons.getModel().getGameState().getCombat().getDefendingPlayer(); if (!players.contains(p)) { players.add(p); } @@ -2428,12 +2427,12 @@ public class AbilityFactory { */ public static ArrayList predictThreatenedObjects(final Player aiPlayer, final AbilityFactory saviourAf) { final ArrayList objects = new ArrayList(); - if (AllZone.getStack().size() == 0) { + if (Singletons.getModel().getGameState().getStack().size() == 0) { return objects; } // check stack for something that will kill this - final SpellAbility topStack = AllZone.getStack().peekAbility(); + final SpellAbility topStack = Singletons.getModel().getGameState().getStack().peekAbility(); objects.addAll(AbilityFactory.predictThreatenedObjects(aiPlayer, saviourAf, topStack)); return objects; @@ -2908,7 +2907,7 @@ public class AbilityFactory { // every resolving spellAbility will end here if (usedStack) { SpellAbility root = sa.getRootSpellAbility(); - AllZone.getStack().finishResolving(root, false); + Singletons.getModel().getGameState().getStack().finishResolving(root, false); } return; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index dc5a4b92407..13aea5ae93a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Random; -import forge.AllZone; import forge.Card; import forge.Counters; import forge.Singletons; @@ -331,7 +330,7 @@ public class AbilityFactoryAlterLife { } boolean lifeCritical = life <= 5; lifeCritical |= (Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DAMAGE) - && CombatUtil.lifeInDanger(ai, AllZone.getCombat())); + && CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat())); if (abCost != null && !lifeCritical) { if (!CostUtil.checkSacrificeCost(ai, abCost, source, false)) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java index 04ab5172d87..202c5a26b1d 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java @@ -381,7 +381,7 @@ public final class AbilityFactoryAnimate { // don't use instant speed animate abilities outside humans // Combat_Declare_Attackers_InstantAbility step if ((!Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) - || (AllZone.getCombat().getAttackers().isEmpty())) + || (Singletons.getModel().getGameState().getCombat().getAttackers().isEmpty())) && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(opponent)) { return false; } @@ -769,7 +769,7 @@ public final class AbilityFactoryAnimate { if (!permanent) { if (params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(unanimate); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(unanimate); } else if (params.containsKey("UntilHostLeavesPlay")) { host.addLeavesPlayCommand(unanimate); } else if (params.containsKey("UntilYourNextUpkeep")) { @@ -779,7 +779,7 @@ public final class AbilityFactoryAnimate { } else if (params.containsKey("UntilYourNextTurn")) { Singletons.getModel().getGameState().getCleanup().addUntilYourNextTurn(host.getController(), unanimate); } else { - AllZone.getEndOfTurn().addUntil(unanimate); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(unanimate); } } } @@ -1406,9 +1406,9 @@ public final class AbilityFactoryAnimate { if (!permanent) { if (params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(unanimate); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(unanimate); } else { - AllZone.getEndOfTurn().addUntil(unanimate); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(unanimate); } } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java index f6969b1a2f9..cb019307a0b 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java @@ -26,7 +26,6 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import forge.AllZone; import forge.Card; import forge.CardCharacteristicName; @@ -523,7 +522,7 @@ public final class AbilityFactoryChangeZone { return false; } List attackers = new ArrayList(); - attackers.addAll(AllZone.getCombat().getUnblockedAttackers()); + attackers.addAll(Singletons.getModel().getGameState().getCombat().getUnblockedAttackers()); boolean lowerCMC = false; for (Card attacker : attackers) { if (attacker.getCMC() < source.getCMC()) { @@ -1066,7 +1065,7 @@ public final class AbilityFactoryChangeZone { } if (params.containsKey("Attacking")) { - AllZone.getCombat().addAttacker(c); + Singletons.getModel().getGameState().getCombat().addAttacker(c); } movedCard = Singletons.getModel().getGameAction().moveTo(c.getController().getZone(destination), c); @@ -1326,7 +1325,7 @@ public final class AbilityFactoryChangeZone { } if (params.containsKey("Attacking")) { - AllZone.getCombat().addAttacker(c); + Singletons.getModel().getGameState().getCombat().addAttacker(c); } // Auras without Candidates stay in their current location if (c.isAura()) { @@ -1558,7 +1557,7 @@ public final class AbilityFactoryChangeZone { // in general this should only be used to protect from Imminent Harm // (dying or losing control of) if (origin.equals(ZoneType.Battlefield)) { - if (AllZone.getStack().size() == 0) { + if (Singletons.getModel().getGameState().getStack().size() == 0) { return false; } @@ -1700,7 +1699,7 @@ public final class AbilityFactoryChangeZone { // check stack for something on the stack that will kill // anything i control - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { final ArrayList objects = AbilityFactory.predictThreatenedObjects(ai, af); final List threatenedTargets = new ArrayList(); @@ -2207,7 +2206,7 @@ public final class AbilityFactoryChangeZone { continue; } - final SpellAbilityStackInstance si = AllZone.getStack().getInstanceFromSpellAbility(tgtSA); + final SpellAbilityStackInstance si = Singletons.getModel().getGameState().getStack().getInstanceFromSpellAbility(tgtSA); if (si == null) { continue; } @@ -2236,7 +2235,7 @@ public final class AbilityFactoryChangeZone { && !GameActionUtil.showYesNoDialog(hostCard, sb.toString())) { continue; } - final PlayerZone originZone = AllZone.getZoneOf(tgtC); + final PlayerZone originZone = GameState.getZoneOf(tgtC); // if Target isn't in the expected Zone, continue @@ -2296,8 +2295,8 @@ public final class AbilityFactoryChangeZone { .moveTo(tgtC.getController().getZone(destination), tgtC); if (params.containsKey("Ninjutsu") || params.containsKey("Attacking")) { - AllZone.getCombat().addAttacker(tgtC); - AllZone.getCombat().addUnblockedAttacker(tgtC); + Singletons.getModel().getGameState().getCombat().addAttacker(tgtC); + Singletons.getModel().getGameState().getCombat().addUnblockedAttacker(tgtC); } if (params.containsKey("Tapped") || params.containsKey("Ninjutsu")) { tgtC.setTapped(true); @@ -2309,8 +2308,8 @@ public final class AbilityFactoryChangeZone { ArrayList spells = tgtC.getSpellAbilities(); for (SpellAbility spell : spells) { if (tgtC.isInZone(ZoneType.Exile)) { - final SpellAbilityStackInstance si = AllZone.getStack().getInstanceFromSpellAbility(spell); - AllZone.getStack().remove(si); + final SpellAbilityStackInstance si = Singletons.getModel().getGameState().getStack().getInstanceFromSpellAbility(spell); + Singletons.getModel().getGameState().getStack().remove(si); } } } @@ -2369,7 +2368,7 @@ public final class AbilityFactoryChangeZone { * object. */ private static void removeFromStack(final SpellAbility tgtSA, final SpellAbility srcSA, final SpellAbilityStackInstance si) { - AllZone.getStack().remove(si); + Singletons.getModel().getGameState().getStack().remove(si); final AbilityFactory af = srcSA.getAbilityFactory(); final HashMap params = af.getMapParams(); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java index 1c96d0f91ab..a5d57d1f287 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java @@ -756,7 +756,7 @@ public final class AbilityFactoryChoose { chosen.add(CardFactoryUtil.getMostProminentColor(list)); } else if (logic.equals("MostProminentAttackers")) { - chosen.add(CardFactoryUtil.getMostProminentColor(AllZone.getCombat() + chosen.add(CardFactoryUtil.getMostProminentColor(Singletons.getModel().getGameState().getCombat() .getAttackerList())); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java index 5653cd4d164..c42dbec0c00 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java @@ -23,8 +23,8 @@ import java.util.List; import javax.swing.JOptionPane; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.CardLists; import forge.GameActionUtil; @@ -252,7 +252,7 @@ public final class AbilityFactoryClash { runParams.put("Won", "False"); } - AllZone.getTriggerHandler().runTrigger(TriggerType.Clashed, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Clashed, runParams); } // ************************************************************************* diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java index dc294f92c7d..b98ad6d4363 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java @@ -19,8 +19,8 @@ package forge.card.abilityfactory; import java.util.HashMap; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.AbilitySub; import forge.card.spellability.SpellAbility; @@ -118,7 +118,7 @@ public final class AbilityFactoryCleanup { source.setSVar("ChosenY", ""); } if (params.containsKey("ClearTriggered")) { - AllZone.getTriggerHandler().clearDelayedTrigger(source); + Singletons.getModel().getGameState().getTriggerHandler().clearDelayedTrigger(source); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryClone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryClone.java index 4c1aa4c5fcf..2f8caade2e0 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryClone.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryClone.java @@ -22,7 +22,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import forge.AllZone; import forge.Card; import forge.CardCharacteristicName; import forge.CardUtil; @@ -281,7 +280,7 @@ public final class AbilityFactoryClone { // don't use instant speed clone abilities outside humans // Combat_Declare_Attackers_InstantAbility step - if ( (!phase.is(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || AllZone.getCombat().getAttackers().isEmpty()) + if ( (!phase.is(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || Singletons.getModel().getGameState().getCombat().getAttackers().isEmpty()) && !phase.isPlayerTurn(ai)) { return false; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCombat.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCombat.java index 9387cf01f6f..37db2fa29ed 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCombat.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCombat.java @@ -23,7 +23,6 @@ import java.util.List; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -249,7 +248,7 @@ public final class AbilityFactoryCombat { } // Only cast when Stack is empty, so Human uses spells/abilities first - if (AllZone.getStack().size() != 0) { + if (Singletons.getModel().getGameState().getStack().size() != 0) { return false; } @@ -266,7 +265,7 @@ public final class AbilityFactoryCombat { } // Cast it if life is in danger - return CombatUtil.lifeInDanger(ai, AllZone.getCombat()); + return CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat()); } /** @@ -820,7 +819,7 @@ public final class AbilityFactoryCombat { for (final Card c : tgtCards) { if ((tgt == null) || c.canBeTargetedBy(sa)) { - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java index a1b6a4887b6..b5ebe47bfd4 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java @@ -506,11 +506,11 @@ public final class AbilityFactoryCopy { @Override public void execute() { sac.setStackDescription(params.get("AtEOT") + " " + target[index] + "."); - AllZone.getStack().addSimultaneousStackEntry(sac); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(sac); } }; // Command if (params.containsKey("AtEOT")) { - AllZone.getEndOfTurn().addAt(atEOT); + Singletons.getModel().getGameState().getEndOfTurn().addAt(atEOT); } // end copied Kiki code diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java index 8a3a9ebf652..090b5715564 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounterMagic.java @@ -20,7 +20,6 @@ package forge.card.abilityfactory; import java.util.ArrayList; import java.util.HashMap; -import forge.AllZone; import forge.Card; import forge.Singletons; import forge.card.cardfactory.CardFactoryUtil; @@ -249,7 +248,7 @@ public class AbilityFactoryCounterMagic { boolean toReturn = true; final Cost abCost = af.getAbCost(); final Card source = sa.getSourceCard(); - if (AllZone.getStack().size() < 1) { + if (Singletons.getModel().getGameState().getStack().size() < 1) { return false; } @@ -266,7 +265,7 @@ public class AbilityFactoryCounterMagic { final Target tgt = sa.getTarget(); if (tgt != null) { - final SpellAbility topSA = AllZone.getStack().peekAbility(); + final SpellAbility topSA = Singletons.getModel().getGameState().getStack().peekAbility(); if (!CardFactoryUtil.isCounterableBy(topSA.getSourceCard(), sa) || topSA.getActivatingPlayer().isComputer()) { return false; } @@ -344,13 +343,13 @@ public class AbilityFactoryCounterMagic { */ private boolean counterDoTriggerAI(final Player ai, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { boolean toReturn = true; - if (AllZone.getStack().size() < 1) { + if (Singletons.getModel().getGameState().getStack().size() < 1) { return false; } final Target tgt = sa.getTarget(); if (tgt != null) { - final SpellAbility topSA = AllZone.getStack().peekAbility(); + final SpellAbility topSA = Singletons.getModel().getGameState().getStack().peekAbility(); if (!CardFactoryUtil.isCounterableBy(topSA.getSourceCard(), sa) || topSA.getActivatingPlayer().isComputer()) { return false; } @@ -427,8 +426,8 @@ public class AbilityFactoryCounterMagic { final Target tgt = sa.getTarget(); if (params.containsKey("AllType")) { sas = new ArrayList(); - for (int i=0; i < AllZone.getStack().size(); i++) { - SpellAbility spell = AllZone.getStack().peekAbility(i); + for (int i=0; i < Singletons.getModel().getGameState().getStack().size(); i++) { + SpellAbility spell = Singletons.getModel().getGameState().getStack().peekAbility(i); if (params.get("AllType").equals("Spell") && !spell.isSpell()) { continue; } @@ -458,7 +457,7 @@ public class AbilityFactoryCounterMagic { continue; } - final SpellAbilityStackInstance si = AllZone.getStack().getInstanceFromSpellAbility(tgtSA); + final SpellAbilityStackInstance si = Singletons.getModel().getGameState().getStack().getInstanceFromSpellAbility(tgtSA); if (si == null) { continue; } @@ -504,8 +503,8 @@ public class AbilityFactoryCounterMagic { final Target tgt = sa.getTarget(); if (params.containsKey("AllType")) { sas = new ArrayList(); - for (int i=0; i < AllZone.getStack().size(); i++) { - SpellAbility spell = AllZone.getStack().peekAbility(i); + for (int i=0; i < Singletons.getModel().getGameState().getStack().size(); i++) { + SpellAbility spell = Singletons.getModel().getGameState().getStack().peekAbility(i); if (params.get("AllType").equals("Spell") && !spell.isSpell()) { continue; } @@ -562,7 +561,7 @@ public class AbilityFactoryCounterMagic { * object. */ private void removeFromStack(final SpellAbility tgtSA, final SpellAbility srcSA, final SpellAbilityStackInstance si) { - AllZone.getStack().remove(si); + Singletons.getModel().getGameState().getStack().remove(si); if (tgtSA.isAbility()) { // For Ability-targeted counterspells - do not move it anywhere, diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java index cfd336afc2a..366ca11d931 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java @@ -756,7 +756,7 @@ public class AbilityFactoryCounters { if (max != -1) { counterAmount = max - tgtCard.getCounters(Counters.valueOf(type)); } - final PlayerZone zone = AllZone.getZoneOf(tgtCard); + final PlayerZone zone = GameState.getZoneOf(tgtCard); if (zone == null) { // Do nothing, token disappeared } else if (zone.is(ZoneType.Battlefield)) { @@ -1177,7 +1177,7 @@ public class AbilityFactoryCounters { } for (final Card tgtCard : tgtCards) { if ((tgt == null) || tgtCard.canBeTargetedBy(sa)) { - final PlayerZone zone = AllZone.getZoneOf(tgtCard); + final PlayerZone zone = GameState.getZoneOf(tgtCard); if (params.get("CounterNum").equals("All")) { counterAmount = tgtCard.getCounters(Counters.valueOf(type)); } @@ -1542,7 +1542,7 @@ public class AbilityFactoryCounters { // counters being put on. They used // to wait for another priority passing after proliferate // finished. - AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); + Singletons.getModel().getGameState().getStack().chooseOrderOfSimultaneousStackEntryAll(); this.stop(); } @@ -2000,7 +2000,7 @@ public class AbilityFactoryCounters { } for (final Card tgtCard : cards) { - if (AllZone.getZoneOf(tgtCard).is(ZoneType.Battlefield)) { + if (GameState.getZoneOf(tgtCard).is(ZoneType.Battlefield)) { tgtCard.addCounter(Counters.valueOf(type), counterAmount); } else { // adding counters to something like re-suspend cards diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java index 9547104339c..d22696755c0 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java @@ -26,7 +26,6 @@ import java.util.Random; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -320,7 +319,7 @@ public final class AbilityFactoryDebuff { final SpellAbilityRestriction restrict = sa.getRestrictions(); // Phase Restrictions - if ((AllZone.getStack().size() == 0) && Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_BEGIN)) { + if ((Singletons.getModel().getGameState().getStack().size() == 0) && Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_BEGIN)) { // Instant-speed pumps should not be cast outside of combat when the // stack is empty if (!AbilityFactory.isSorcerySpeed(sa)) { @@ -611,7 +610,7 @@ public final class AbilityFactoryDebuff { } } if (!params.containsKey("Permanent")) { - AllZone.getEndOfTurn().addUntil(new Command() { + Singletons.getModel().getGameState().getEndOfTurn().addUntil(new Command() { private static final long serialVersionUID = 5387486776282932314L; @Override @@ -857,7 +856,7 @@ public final class AbilityFactoryDebuff { } } if (!params.containsKey("Permanent")) { - AllZone.getEndOfTurn().addUntil(new Command() { + Singletons.getModel().getGameState().getEndOfTurn().addUntil(new Command() { private static final long serialVersionUID = 7486231071095628674L; @Override diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDelayedTrigger.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDelayedTrigger.java index a13badb6933..bdccf108117 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDelayedTrigger.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDelayedTrigger.java @@ -19,8 +19,8 @@ package forge.card.abilityfactory; import java.util.HashMap; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.card.cardfactory.CardFactoryUtil; import forge.card.cost.Cost; import forge.card.spellability.AbilityActivated; @@ -299,6 +299,6 @@ public class AbilityFactoryDelayedTrigger { final Trigger delTrig = TriggerHandler.parseTrigger(mapParams, spellAbility.getSourceCard(), true); - AllZone.getTriggerHandler().registerDelayedTrigger(delTrig); + Singletons.getModel().getGameState().getTriggerHandler().registerDelayedTrigger(delTrig); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java index 470811d1ecc..d404891e1f5 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java @@ -24,7 +24,6 @@ import java.util.Random; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -274,19 +273,19 @@ public class AbilityFactoryEffect { if (!Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { return false; } - if (AllZone.getStack().size() != 0) { + if (Singletons.getModel().getGameState().getStack().size() != 0) { return false; } if (Singletons.getModel().getGameState().getPhaseHandler().isPreventCombatDamageThisTurn()) { return false; } - if (!CombatUtil.lifeInDanger(ai, AllZone.getCombat())) { + if (!CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat())) { return false; } final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); - List list = AllZone.getCombat().getAttackerList(); + List list = Singletons.getModel().getGameState().getCombat().getAttackerList(); list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); list = CardLists.getTargetableCards(list, sa); Card target = CardFactoryUtil.getBestCreatureAI(list); @@ -570,13 +569,13 @@ public class AbilityFactoryEffect { }; if ((duration == null) || duration.equals("EndOfTurn")) { - AllZone.getEndOfTurn().addUntil(endEffect); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(endEffect); } else if (duration.equals("UntilHostLeavesPlay")) { card.addLeavesPlayCommand(endEffect); } else if (duration.equals("HostLeavesOrEOT")) { - AllZone.getEndOfTurn().addUntil(endEffect); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(endEffect); card.addLeavesPlayCommand(endEffect); } else if (duration.equals("UntilYourNextTurn")) { @@ -585,9 +584,9 @@ public class AbilityFactoryEffect { } // TODO: Add targeting to the effect so it knows who it's dealing with - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.ChangesZone); Singletons.getModel().getGameAction().moveToPlay(eff); - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); } } // end class AbilityFactoryEffect diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java index 664d567f6f3..4a00caa380b 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java @@ -25,7 +25,6 @@ import java.util.Map; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -501,7 +500,7 @@ public class AbilityFactoryGainControl { sa.getSourceCard().addChangeControllerCommand(this.getLoseControlCommand(tgtC, originalController, newController)); } if (this.lose.contains("EOT")) { - AllZone.getEndOfTurn().addAt(this.getLoseControlCommand(tgtC, originalController, newController)); + Singletons.getModel().getGameState().getEndOfTurn().addAt(this.getLoseControlCommand(tgtC, originalController, newController)); } } @@ -613,7 +612,7 @@ public class AbilityFactoryGainControl { } ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java index 1988ca96a4f..27efc6be2ea 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java @@ -1038,7 +1038,7 @@ public class AbilityFactoryPermanentState { List attackers; if (phase.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)) { //Combat has already started - attackers = AllZone.getCombat().getAttackerList(); + attackers = Singletons.getModel().getGameState().getCombat().getAttackerList(); } else { attackers = CardLists.filter(ai.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES_CAN_ATTACK); attackers.remove(sa.getSourceCard()); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java index c8579d4b77a..14cdd241d9e 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java @@ -293,7 +293,7 @@ public final class AbilityFactoryPlay { } // don't use this as a response - if (AllZone.getStack().size() != 0) { + if (Singletons.getModel().getGameState().getStack().size() != 0) { return false; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java index f0fd08dfa80..77d3c28ea92 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -304,7 +303,7 @@ public class AbilityFactoryPreventDamage { params.get("Defined"), sa); // react to threats on the stack - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { final ArrayList threatenedObjects = AbilityFactory.predictThreatenedObjects(sa.getActivatingPlayer(), af); for (final Object o : objects) { if (threatenedObjects.contains(o)) { @@ -323,8 +322,8 @@ public class AbilityFactoryPreventDamage { // Don't need to worry about Combat Damage during AI's turn final Player p = (Player) o; if (!handler.isPlayerTurn(p)) { - flag |= (p.isComputer() && ((CombatUtil.wouldLoseLife(ai, AllZone.getCombat()) && sa - .isAbility()) || CombatUtil.lifeInDanger(ai, AllZone.getCombat()))); + flag |= (p.isComputer() && ((CombatUtil.wouldLoseLife(ai, Singletons.getModel().getGameState().getCombat()) && sa + .isAbility()) || CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat()))); } } } @@ -338,7 +337,7 @@ public class AbilityFactoryPreventDamage { } // targeted // react to threats on the stack - else if (AllZone.getStack().size() > 0) { + else if (Singletons.getModel().getGameState().getStack().size() > 0) { tgt.resetTargets(); // check stack for something on the stack will kill anything i // control @@ -368,8 +367,8 @@ public class AbilityFactoryPreventDamage { } // Protect combatants else if (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { - if (sa.canTarget(ai) && CombatUtil.wouldLoseLife(ai, AllZone.getCombat()) - && (CombatUtil.lifeInDanger(ai, AllZone.getCombat()) || sa.isAbility()) + if (sa.canTarget(ai) && CombatUtil.wouldLoseLife(ai, Singletons.getModel().getGameState().getCombat()) + && (CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat()) || sa.isAbility()) && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(ai.getOpponent())) { tgt.addTarget(ai); chance = true; @@ -741,7 +740,7 @@ public class AbilityFactoryPreventDamage { return false; } - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { // TODO check stack for something on the stack will kill anything i // control diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java index 408be47b2e0..149148ea5cf 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java @@ -27,7 +27,6 @@ import javax.swing.JOptionPane; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -278,8 +277,8 @@ public final class AbilityFactoryProtection { // is the creature in blocked and the blocker would survive if (Singletons.getModel().getGameState().getPhaseHandler().getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS) - && AllZone.getCombat().isAttacking(c) && AllZone.getCombat().isBlocked(c) - && CombatUtil.blockerWouldBeDestroyed(AllZone.getCombat().getBlockers(c).get(0))) { + && Singletons.getModel().getGameState().getCombat().isAttacking(c) && Singletons.getModel().getGameState().getCombat().isBlocked(c) + && CombatUtil.blockerWouldBeDestroyed(Singletons.getModel().getGameState().getCombat().getBlockers(c).get(0))) { return true; } @@ -328,13 +327,13 @@ public final class AbilityFactoryProtection { } // Phase Restrictions - if ((AllZone.getStack().size() == 0) && Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE)) { + if ((Singletons.getModel().getGameState().getStack().size() == 0) && Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE)) { // Instant-speed protections should not be cast outside of combat // when the stack is empty if (!AbilityFactory.isSorcerySpeed(sa)) { return false; } - } else if (AllZone.getStack().size() > 0) { + } else if (Singletons.getModel().getGameState().getStack().size() > 0) { // TODO protection something only if the top thing on the stack will // kill it via damage or destroy return false; @@ -398,7 +397,7 @@ public final class AbilityFactoryProtection { * Or, add protection (to make it unblockable) when Compy is attacking. */ - if (AllZone.getStack().size() == 0) { + if (Singletons.getModel().getGameState().getStack().size() == 0) { // If the cost is tapping, don't activate before declare // attack/block if ((sa.getPayCosts() != null) && sa.getPayCosts().getTap()) { @@ -816,9 +815,9 @@ public final class AbilityFactoryProtection { } }; if (params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(untilEOT); } else { - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } @@ -848,9 +847,9 @@ public final class AbilityFactoryProtection { } }; if (params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(untilEOT); } else { - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } @@ -1216,9 +1215,9 @@ public final class AbilityFactoryProtection { } }; if (params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(untilEOT); } else { - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } @@ -1250,9 +1249,9 @@ public final class AbilityFactoryProtection { } }; if (params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(untilEOT); } else { - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index 498526048e1..5b8e7d106c2 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -26,7 +26,6 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -431,10 +430,10 @@ public class AbilityFactoryPump { } else if (keyword.endsWith("Flying")) { if (ph.isPlayerTurn(opp) && ph.getPhase().equals(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) - && !CardLists.getKeyword(AllZone.getCombat().getAttackerList(), "Flying").isEmpty() + && !CardLists.getKeyword(Singletons.getModel().getGameState().getCombat().getAttackerList(), "Flying").isEmpty() && !card.hasKeyword("Reach") && CombatUtil.canBlock(card) - && CombatUtil.lifeInDanger(ai, AllZone.getCombat())) { + && CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat())) { return true; } Predicate flyingOrReach = Predicates.or(CardPredicates.hasKeyword("Flying"), CardPredicates.hasKeyword("Reach")); @@ -446,9 +445,9 @@ public class AbilityFactoryPump { } else if (keyword.endsWith("Horsemanship")) { if (ph.isPlayerTurn(opp) && ph.getPhase().equals(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) - && !CardLists.getKeyword(AllZone.getCombat().getAttackerList(), "Horsemanship").isEmpty() + && !CardLists.getKeyword(Singletons.getModel().getGameState().getCombat().getAttackerList(), "Horsemanship").isEmpty() && CombatUtil.canBlock(card) - && CombatUtil.lifeInDanger(ai, AllZone.getCombat())) { + && CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat())) { return true; } if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking()) @@ -468,7 +467,7 @@ public class AbilityFactoryPump { } else if (keyword.endsWith("Indestructible")) { return true; } else if (keyword.endsWith("Deathtouch")) { - Combat combat = AllZone.getCombat(); + Combat combat = Singletons.getModel().getGameState().getCombat(); if (ph.isPlayerTurn(opp) && ph.getPhase().equals(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY)) { List attackers = combat.getAttackers(); for (Card attacker : attackers) { @@ -560,7 +559,7 @@ public class AbilityFactoryPump { } else if (keyword.equals("Reach")) { if (ph.isPlayerTurn(ai) || !ph.getPhase().equals(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) - || CardLists.getKeyword(AllZone.getCombat().getAttackerList(), "Flying").isEmpty() + || CardLists.getKeyword(Singletons.getModel().getGameState().getCombat().getAttackerList(), "Flying").isEmpty() || card.hasKeyword("Flying") || !CombatUtil.canBlock(card)) { return false; @@ -572,7 +571,7 @@ public class AbilityFactoryPump { } int canBlockNum = 1 + card.getKeywordAmount("CARDNAME can block an additional creature."); int possibleBlockNum = 0; - for (Card attacker : AllZone.getCombat().getAttackerList()) { + for (Card attacker : Singletons.getModel().getGameState().getCombat().getAttackerList()) { if (CombatUtil.canBlock(attacker, card)) { possibleBlockNum++; if (possibleBlockNum > canBlockNum) { @@ -654,7 +653,7 @@ public class AbilityFactoryPump { if (defense > 0 && CombatUtil.blockerWouldBeDestroyed(c)) { return true; } - List blockedBy = AllZone.getCombat().getAttackersBlockedBy(c); + List blockedBy = Singletons.getModel().getGameState().getCombat().getAttackersBlockedBy(c); // For now, Only care the first creature blocked by a card. // TODO Add in better BlockAdditional support if (!blockedBy.isEmpty() && attack > 0 && !CombatUtil.attackerWouldBeDestroyed(blockedBy.get(0))) { @@ -664,21 +663,21 @@ public class AbilityFactoryPump { // is the creature unblocked and the spell will pump its power? if (phase.is(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) - && AllZone.getCombat().isAttacking(c) && AllZone.getCombat().isUnblocked(c) && (attack > 0)) { + && Singletons.getModel().getGameState().getCombat().isAttacking(c) && Singletons.getModel().getGameState().getCombat().isUnblocked(c) && (attack > 0)) { return true; } // is the creature blocked and the blocker would survive if (phase.is(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) && (attack > 0) - && AllZone.getCombat().isAttacking(c) && AllZone.getCombat().isBlocked(c) - && AllZone.getCombat().getBlockers(c) != null - && !AllZone.getCombat().getBlockers(c).isEmpty() - && !CombatUtil.blockerWouldBeDestroyed(AllZone.getCombat().getBlockers(c).get(0))) { + && Singletons.getModel().getGameState().getCombat().isAttacking(c) && Singletons.getModel().getGameState().getCombat().isBlocked(c) + && Singletons.getModel().getGameState().getCombat().getBlockers(c) != null + && !Singletons.getModel().getGameState().getCombat().getBlockers(c).isEmpty() + && !CombatUtil.blockerWouldBeDestroyed(Singletons.getModel().getGameState().getCombat().getBlockers(c).get(0))) { return true; } // if the life of the computer is in danger, try to pump blockers blocking Tramplers - List blockedBy = AllZone.getCombat().getAttackersBlockedBy(c); + List blockedBy = Singletons.getModel().getGameState().getCombat().getAttackersBlockedBy(c); boolean attackerHasTrample = false; for (Card b : blockedBy) { attackerHasTrample |= b.hasKeyword("Trample"); @@ -689,7 +688,7 @@ public class AbilityFactoryPump { && c.isBlocking() && defense > 0 && attackerHasTrample - && (sa.isAbility() || CombatUtil.lifeInDanger(ai, AllZone.getCombat()))) { + && (sa.isAbility() || CombatUtil.lifeInDanger(ai, Singletons.getModel().getGameState().getCombat()))) { return true; } @@ -838,7 +837,7 @@ public class AbilityFactoryPump { return false; } - if (AllZone.getStack().isEmpty() && CostUtil.hasTapCost(cost, sa.getSourceCard())) { + if (Singletons.getModel().getGameState().getStack().isEmpty() && CostUtil.hasTapCost(cost, sa.getSourceCard())) { if (ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS) && ph.isPlayerTurn(ai)) { return false; } @@ -850,13 +849,13 @@ public class AbilityFactoryPump { final SpellAbilityRestriction restrict = sa.getRestrictions(); // Phase Restrictions - if ((AllZone.getStack().size() == 0) && ph.getPhase().isBefore(PhaseType.COMBAT_BEGIN)) { + if ((Singletons.getModel().getGameState().getStack().size() == 0) && ph.getPhase().isBefore(PhaseType.COMBAT_BEGIN)) { // Instant-speed pumps should not be cast outside of combat when the // stack is empty if (!this.abilityFactory.isCurse() && !AbilityFactory.isSorcerySpeed(sa)) { return false; } - } else if (AllZone.getStack().size() > 0) { + } else if (Singletons.getModel().getGameState().getStack().size() > 0) { if (!this.keywords.contains("Shroud") && !this.keywords.contains("Hexproof")) { return false; } @@ -1012,7 +1011,7 @@ public class AbilityFactoryPump { } list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); - if (AllZone.getStack().size() == 0) { + if (Singletons.getModel().getGameState().getStack().size() == 0) { // If the cost is tapping, don't activate before declare // attack/block if ((sa.getPayCosts() != null) && sa.getPayCosts().getTap()) { @@ -1514,7 +1513,7 @@ public class AbilityFactoryPump { } }; if (this.params.containsKey("UntilEndOfCombat")) { - AllZone.getEndOfCombat().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfCombat().addUntil(untilEOT); } else if (this.params.containsKey("UntilYourNextUpkeep")) { Singletons.getModel().getGameState().getUpkeep().addUntil(sa.getActivatingPlayer(), untilEOT); } else if (params.containsKey("UntilHostLeavesPlay")) { @@ -1527,7 +1526,7 @@ public class AbilityFactoryPump { } else if (params.containsKey("UntilUntaps")) { sa.getSourceCard().addUntapCommand(untilEOT); } else { - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } @@ -1777,8 +1776,8 @@ public class AbilityFactoryPump { } totalPower += Math.min(c.getNetAttack(), power * -1); if (phase == PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY - && AllZone.getCombat().getUnblockedAttackers().contains(c)) { - if (CombatUtil.lifeInDanger(sa.getActivatingPlayer(), AllZone.getCombat())) { + && Singletons.getModel().getGameState().getCombat().getUnblockedAttackers().contains(c)) { + if (CombatUtil.lifeInDanger(sa.getActivatingPlayer(), Singletons.getModel().getGameState().getCombat())) { return true; } totalPower += Math.min(c.getNetAttack(), power * -1); @@ -1922,7 +1921,7 @@ public class AbilityFactoryPump { if (params.containsKey("UntilUntaps")) { sa.getSourceCard().addUntapCommand(untilEOT); } else { - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java index 98f9549e5f7..ad4b7118a32 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -294,7 +293,7 @@ public class AbilityFactoryRegenerate { // them final ArrayList list = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { final ArrayList objects = AbilityFactory.predictThreatenedObjects(sa.getActivatingPlayer(),af); for (final Card c : list) { @@ -329,7 +328,7 @@ public class AbilityFactoryRegenerate { return false; } - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { // check stack for something on the stack will kill anything i // control final ArrayList objects = AbilityFactory.predictThreatenedObjects(sa.getActivatingPlayer(), af); @@ -514,7 +513,7 @@ public class AbilityFactoryRegenerate { if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { tgtC.addShield(); - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } // regenerateResolve @@ -749,7 +748,7 @@ public class AbilityFactoryRegenerate { } int numSaved = 0; - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { final ArrayList objects = AbilityFactory.predictThreatenedObjects(sa.getActivatingPlayer(),af); for (final Card c : list) { @@ -844,7 +843,7 @@ public class AbilityFactoryRegenerate { if (GameState.isCardInPlay(c)) { c.addShield(); - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } // regenerateAllResolve diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java index 3cebafb34dc..7a7d439c25f 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; import forge.card.cost.Cost; @@ -36,6 +35,7 @@ import forge.card.spellability.Target; import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** *

@@ -296,7 +296,7 @@ public final class AbilityFactoryRepeat { final int left = list.size(); - if (!AllZoneUtil.compare(left, repeatCompare, right)) { + if (!Expressions.compare(left, repeatCompare, right)) { return false; } } @@ -311,7 +311,7 @@ public final class AbilityFactoryRepeat { final int svarValue = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("RepeatCheckSVar"), sa); final int operandValue = AbilityFactory.calculateAmount(sa.getSourceCard(), sVarOperand, sa); - if (!AllZoneUtil.compare(svarValue, sVarOperator, operandValue)) { + if (!Expressions.compare(svarValue, sVarOperator, operandValue)) { return false; } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java index 8b2861043a7..1aba2e396df 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.List; import java.util.Random; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -496,7 +495,7 @@ public class AbilityFactorySacrifice { final boolean remSacrificed = params.containsKey("RememberSacrificed"); if (valid.equals("Self")) { - if (AllZone.getZoneOf(card).is(ZoneType.Battlefield)) { + if (GameState.getZoneOf(card).is(ZoneType.Battlefield)) { if (Singletons.getModel().getGameAction().sacrifice(card, sa) && remSacrificed) { card.addRemembered(card); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryStoreSVar.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryStoreSVar.java index 35858a67a38..6f5797bc6b8 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryStoreSVar.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryStoreSVar.java @@ -19,8 +19,8 @@ package forge.card.abilityfactory; import java.util.HashMap; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.AbilityActivated; import forge.card.spellability.AbilitySub; @@ -247,7 +247,7 @@ public class AbilityFactoryStoreSVar { final Player ai = sa.getActivatingPlayer(); final Card source = sa.getSourceCard(); if (AbilityFactory.waitForBlocking(sa) || ai.getLife() + 1 >= source.getNetDefense() - || (ai.getLife() > 5 && !CombatUtil.lifeInSeriousDanger(ai, AllZone.getCombat()))) { + || (ai.getLife() > 5 && !CombatUtil.lifeInSeriousDanger(ai, Singletons.getModel().getGameState().getCombat()))) { return false; } final AbilitySub subAb = sa.getSubAbility(); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java index 62f09001394..e2cce2d437e 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.List; import java.util.Random; -import forge.AllZone; import forge.Card; import forge.Singletons; @@ -638,7 +637,7 @@ public class AbilityFactoryToken extends AbilityFactory { c.setTapped(true); } if (this.tokenAttacking) { - AllZone.getCombat().addAttacker(c); + Singletons.getModel().getGameState().getCombat().addAttacker(c); } if (remember != null) { GameState.getCardState(sa.getSourceCard()).addRemembered(c); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java index b283c288121..73bebe173e4 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java @@ -20,7 +20,6 @@ package forge.card.abilityfactory; import java.util.ArrayList; import java.util.HashMap; -import forge.AllZone; import forge.Card; import forge.Singletons; import forge.card.spellability.AbilityActivated; @@ -503,13 +502,13 @@ public class AbilityFactoryTurns { // 1) All spells and abilities on the stack are exiled. This includes // Time Stop, though it will continue to resolve. It also includes // spells and abilities that can't be countered. - for (final Card c : AllZone.getStackZone().getCards()) { + for (final Card c : Singletons.getModel().getGameState().getStackZone().getCards()) { Singletons.getModel().getGameAction().exile(c); } - AllZone.getStack().getStack().clear(); + Singletons.getModel().getGameState().getStack().getStack().clear(); // 2) All attacking and blocking creatures are removed from combat. - AllZone.getCombat().reset(); + Singletons.getModel().getGameState().getCombat().reset(); // 3) State-based actions are checked. No player gets priority, and no // triggered abilities are put onto the stack. @@ -520,7 +519,7 @@ public class AbilityFactoryTurns { Singletons.getModel().getGameState().getPhaseHandler().setPhaseState(PhaseType.CLEANUP); // Update observers - AllZone.getStack().updateObservers(); + Singletons.getModel().getGameState().getStack().updateObservers(); for (Player p : Singletons.getModel().getGameState().getPlayers()) { p.updateObservers(); p.updateLabelObservers(); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java index 98ab41dc1e5..57540f77bc7 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java @@ -135,7 +135,7 @@ class CardFactoryArtifacts { sb.append("choose white Citizen, blue Camarid, black Thrull, red Goblin, or green Saproling."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }; @@ -535,7 +535,7 @@ class CardFactoryArtifacts { card.addSpellAbility(freeCast); card.addExtrinsicKeyword("Play with the top card of your library revealed."); - AllZone.getEndOfTurn().addUntil(new Command() { + Singletons.getModel().getGameState().getEndOfTurn().addUntil(new Command() { private static final long serialVersionUID = -2860753262177388046L; @Override diff --git a/src/main/java/forge/card/cardfactory/CardFactoryAuras.java b/src/main/java/forge/card/cardfactory/CardFactoryAuras.java index d74ff0fa7b4..ee2eccb42fe 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryAuras.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryAuras.java @@ -481,7 +481,7 @@ class CardFactoryAuras { } final Card animated = targetC[0]; - final PlayerZone grave = AllZone.getZoneOf(animated); + final PlayerZone grave = GameState.getZoneOf(animated); if (!grave.is(ZoneType.Graveyard)) { // Animated Creature got removed before ability resolved @@ -554,7 +554,7 @@ class CardFactoryAuras { final PlayerZone play = card.getController().getZone(ZoneType.Battlefield); if (play.contains(c)) { - AllZone.getStack().addSimultaneousStackEntry(detach); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(detach); } } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java index 4d06303625c..9f2af4f6e53 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java @@ -199,7 +199,7 @@ public class CardFactoryCreatures { @Override public boolean canPlayAI() { return Iterables.any(getActivatingPlayer().getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.ARTIFACTS) - && AllZone.getZoneOf(this.getSourceCard()).is(ZoneType.Hand); + && GameState.getZoneOf(this.getSourceCard()).is(ZoneType.Hand); } }); card.addComesIntoPlayCommand(intoPlay); @@ -294,7 +294,7 @@ public class CardFactoryCreatures { @Override public void execute() { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }); @@ -611,7 +611,7 @@ public class CardFactoryCreatures { sb.append("Kinsbaile Borderguard enters the battlefield with a "); sb.append("+1/+1 counter on it for each other Kithkin you control."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }; @@ -640,7 +640,7 @@ public class CardFactoryCreatures { sb.append("from play, put a 1/1 white Kithkin Soldier creature "); sb.append("token onto the battlefield for each counter on it."); ability2.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability2); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability2); } }; @@ -668,7 +668,7 @@ public class CardFactoryCreatures { @Override public void execute() { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }; @@ -869,7 +869,7 @@ public class CardFactoryCreatures { @Override public void execute() { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } }; @@ -931,7 +931,7 @@ public class CardFactoryCreatures { //adding ability to stack first cause infinite loop (with observers notification) //so it has to be stop first and add ability later this.stop(); - AllZone.getStack().add(ability); + Singletons.getModel().getGameState().getStack().add(ability); } @Override @@ -985,7 +985,7 @@ public class CardFactoryCreatures { if ( !list.isEmpty() ) { ability.setTargetCard(CardFactoryUtil.getBestCreatureAI(list)); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } } // execute() diff --git a/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java b/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java index db18351ddf6..91cd66c5352 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java @@ -125,7 +125,7 @@ class CardFactoryEnchantments { Singletons.getModel().getGameAction().exile(c2); this.once = true; - AllZone.getStack().addAndUnfreeze(nightSoil); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(nightSoil); } } @@ -193,7 +193,7 @@ class CardFactoryEnchantments { sb.append(" loses life equal to his or her life total."); loseAllLife.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(loseAllLife); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(loseAllLife); } }; @@ -216,7 +216,7 @@ class CardFactoryEnchantments { sb.append("loses the game."); loseGame.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(loseGame); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(loseGame); } }; diff --git a/src/main/java/forge/card/cardfactory/CardFactoryInstants.java b/src/main/java/forge/card/cardfactory/CardFactoryInstants.java index 9906b1a9c89..874125dbfc2 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryInstants.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryInstants.java @@ -23,7 +23,6 @@ import java.util.List; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -351,10 +350,10 @@ public class CardFactoryInstants { destroy.setDescription(sb.toString()); destroy.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(destroy); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(destroy); } // execute }; // Command - AllZone.getEndOfTurn().addAt(atEOT); + Singletons.getModel().getGameState().getEndOfTurn().addAt(atEOT); } // resolve }; // SpellAbility diff --git a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java index 20be0d7760b..7a187637085 100644 --- a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java +++ b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java @@ -714,7 +714,7 @@ public class CardFactorySorceries { thePlayer.addMaxLandsToPlay(-3); } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } }; @@ -748,7 +748,7 @@ public class CardFactorySorceries { thePlayer.addMaxLandsToPlay(-1); } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); thePlayer.drawCard(); } @@ -1004,7 +1004,7 @@ public class CardFactorySorceries { } } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } @@ -1027,7 +1027,7 @@ public class CardFactorySorceries { } } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } } // end ab[3] diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 96ef46b540f..9d3104fc921 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -864,7 +864,7 @@ public class CardFactoryUtil { public boolean canPlay() { //Lands do not have SpellPermanents. if (sourceCard.isLand()) { - return (AllZone.getZoneOf(sourceCard).is(ZoneType.Hand) || sourceCard.hasKeyword("May be played")) + return (GameState.getZoneOf(sourceCard).is(ZoneType.Hand) || sourceCard.hasKeyword("May be played")) && PhaseHandler.canCastSorcery(sourceCard.getController()); } else { @@ -905,7 +905,7 @@ public class CardFactoryUtil { // Run triggers final Map runParams = new TreeMap(); runParams.put("Card", sourceCard); - AllZone.getTriggerHandler().runTrigger(TriggerType.TurnFaceUp, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.TurnFaceUp, runParams); StringBuilder sb = new StringBuilder(); sb.append(this.getActivatingPlayer()).append(" has unmorphed "); @@ -1272,7 +1272,7 @@ public class CardFactoryUtil { spell.setTargetCard(card); if (spell.getManaCost().equals("0") || free) { this.setFree(false); - AllZone.getStack().add(spell); + Singletons.getModel().getGameState().getStack().add(spell); this.stop(); } else { this.stopSetNext(new InputPayManaCost(spell)); @@ -1338,7 +1338,7 @@ public class CardFactoryUtil { final HashMap runParams = new HashMap(); runParams.put("Card", spell.getSourceCard()); runParams.put("Championed", card); - AllZone.getTriggerHandler().runTrigger(TriggerType.Championed, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Championed, runParams); } } } // selectCard() @@ -1429,7 +1429,7 @@ public class CardFactoryUtil { sb.append(" +1/+1 counter/s from ").append(card); sb.append(" on ").append(card2); ability.setStackDescription(sb.toString()); - AllZone.getStack().add(ability); + Singletons.getModel().getGameState().getStack().add(ability); this.stop(); } } @@ -1571,7 +1571,7 @@ public class CardFactoryUtil { */ public static boolean isTargetStillValid(final SpellAbility ability, final Card target) { - if (AllZone.getZoneOf(target) == null) { + if (GameState.getZoneOf(target) == null) { return false; // for tokens that disappeared } @@ -1587,7 +1587,7 @@ public class CardFactoryUtil { // Check if the target is in the zone it needs to be in to be // targeted - if (!AllZone.getZoneOf(target).is(tgt.getZone())) { + if (!GameState.getZoneOf(target).is(tgt.getZone())) { return false; } } else { @@ -2176,7 +2176,7 @@ public class CardFactoryUtil { } if (sq[0].equals("StormCount")) { - return CardFactoryUtil.doXMath(AllZone.getStack().getCardsCastThisTurn().size() - 1, m, c); + return CardFactoryUtil.doXMath(Singletons.getModel().getGameState().getStack().getCardsCastThisTurn().size() - 1, m, c); } if (sq[0].equals("DamageDoneThisTurn")) { @@ -3343,7 +3343,7 @@ public class CardFactoryUtil { } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); crd.addTempAttackBoost(magnitude); crd.addTempDefenseBoost(magnitude); @@ -3472,7 +3472,7 @@ public class CardFactoryUtil { }; ability.setStackDescription("Fastbond - Deals 1 damage to you."); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -4008,7 +4008,7 @@ public class CardFactoryUtil { } if (c.canBeTargetedBy(haunterDiesWork)) { haunterDiesWork.setTargetCard(c); - AllZone.getStack().add(haunterDiesWork); + Singletons.getModel().getGameState().getStack().add(haunterDiesWork); this.stop(); } else { CMatchUI.SINGLETON_INSTANCE @@ -4043,7 +4043,7 @@ public class CardFactoryUtil { } else { haunterDiesWork.setTargetCard(CardFactoryUtil.getWorstCreatureAI(creats)); } - AllZone.getStack().add(haunterDiesWork); + Singletons.getModel().getGameState().getStack().add(haunterDiesWork); } } }; @@ -4158,9 +4158,9 @@ public class CardFactoryUtil { eff.addTrigger(copyTrigger); - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.ChangesZone); Singletons.getModel().getGameAction().moveToPlay(eff); - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); } if (card.getController().isHuman()) { @@ -4727,7 +4727,7 @@ public class CardFactoryUtil { if (ability.getTargetCard() != null) { ability.setStackDescription("Put " + card.getCounters(Counters.P1P1) + " +1/+1 counter/s from " + card + " on " + ability.getTargetCard()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } diff --git a/src/main/java/forge/card/cost/CostExile.java b/src/main/java/forge/card/cost/CostExile.java index 01a7a2ded07..5ea13710b90 100644 --- a/src/main/java/forge/card/cost/CostExile.java +++ b/src/main/java/forge/card/cost/CostExile.java @@ -23,7 +23,6 @@ import java.util.List; import javax.swing.JOptionPane; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -148,8 +147,8 @@ public class CostExile extends CostPartWithList { public final boolean canPay(final SpellAbility ability, final Card source, final Player activator, final Cost cost) { List typeList = new ArrayList(); if (this.getFrom().equals(ZoneType.Stack)) { - for (int i = 0; i < AllZone.getStack().size(); i++) { - typeList.add(AllZone.getStack().peekAbility(i).getSourceCard()); + for (int i = 0; i < Singletons.getModel().getGameState().getStack().size(); i++) { + typeList.add(Singletons.getModel().getGameState().getStack().peekAbility(i).getSourceCard()); } } else { typeList = activator.getCardsIn(this.getFrom()); @@ -182,8 +181,8 @@ public class CostExile extends CostPartWithList { ArrayList spells = c.getSpellAbilities(); for (SpellAbility spell : spells) { if (c.isInZone(ZoneType.Exile)) { - final SpellAbilityStackInstance si = AllZone.getStack().getInstanceFromSpellAbility(spell); - AllZone.getStack().remove(si); + final SpellAbilityStackInstance si = Singletons.getModel().getGameState().getStack().getInstanceFromSpellAbility(spell); + Singletons.getModel().getGameState().getStack().remove(si); } } } @@ -414,9 +413,9 @@ public class CostExile extends CostPartWithList { saList = new ArrayList(); descList = new ArrayList(); - for (int i = 0; i < AllZone.getStack().size(); i++) { - final Card stC = AllZone.getStack().peekAbility(i).getSourceCard(); - final SpellAbility stSA = AllZone.getStack().peekAbility(i).getRootSpellAbility(); + for (int i = 0; i < Singletons.getModel().getGameState().getStack().size(); i++) { + final Card stC = Singletons.getModel().getGameState().getStack().peekAbility(i).getSourceCard(); + final SpellAbility stSA = Singletons.getModel().getGameState().getStack().peekAbility(i).getRootSpellAbility(); if (stC.isValid(type.split(";"), sa.getActivatingPlayer(), sa.getSourceCard()) && stSA.isSpell()) { this.saList.add(stSA); if (stC.isCopiedSpell()) { @@ -446,8 +445,8 @@ public class CostExile extends CostPartWithList { if (i == (nNeeded - 1)) { this.done(); } - final SpellAbilityStackInstance si = AllZone.getStack().getInstanceFromSpellAbility(toExile); - AllZone.getStack().remove(si); + final SpellAbilityStackInstance si = Singletons.getModel().getGameState().getStack().getInstanceFromSpellAbility(toExile); + Singletons.getModel().getGameState().getStack().remove(si); } else { this.cancel(); break; diff --git a/src/main/java/forge/card/replacement/ReplaceDamage.java b/src/main/java/forge/card/replacement/ReplaceDamage.java index 895a80048ab..a5a660d8800 100644 --- a/src/main/java/forge/card/replacement/ReplaceDamage.java +++ b/src/main/java/forge/card/replacement/ReplaceDamage.java @@ -19,10 +19,10 @@ package forge.card.replacement; import java.util.HashMap; -import forge.AllZoneUtil; import forge.Card; import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.SpellAbility; +import forge.util.Expressions; /** * TODO: Write javadoc for this type. @@ -72,7 +72,7 @@ public class ReplaceDamage extends ReplacementEffect { intoperand = CardFactoryUtil.xCount(getHostCard(), getHostCard().getSVar(operand)); } - if (!AllZoneUtil.compare((Integer) runParams.get("DamageAmount"), operator, intoperand)) { + if (!Expressions.compare((Integer) runParams.get("DamageAmount"), operator, intoperand)) { return false; } } diff --git a/src/main/java/forge/card/replacement/ReplacementEffect.java b/src/main/java/forge/card/replacement/ReplacementEffect.java index 84a30110094..587b14233c4 100644 --- a/src/main/java/forge/card/replacement/ReplacementEffect.java +++ b/src/main/java/forge/card/replacement/ReplacementEffect.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -32,6 +31,7 @@ import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.SpellAbility; import forge.game.GameState; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** * TODO: Write javadoc for this type. @@ -98,7 +98,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { left = AbilityFactory.calculateAmount(this.hostCard, svarToCheck, sa); } System.out.println("aiShouldRun?" + left + comparator + compareTo); - if (AllZoneUtil.compare(left, comparator, compareTo)) { + if (Expressions.compare(left, comparator, compareTo)) { return true; } } else if (sa != null && sa.doTrigger(false)){ @@ -236,7 +236,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { right = CardFactoryUtil.xCount(this.getHostCard(), this.getHostCard().getSVar(rightString)); } - if (!AllZoneUtil.compare(life, lifeCompare, right)) { + if (!Expressions.compare(life, lifeCompare, right)) { return false; } @@ -275,7 +275,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { } final int left = list.size(); - if (!AllZoneUtil.compare(left, presentCompare, right)) { + if (!Expressions.compare(left, presentCompare, right)) { return false; } @@ -314,7 +314,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { } final int left = list.size(); - if (!AllZoneUtil.compare(left, presentCompare, right)) { + if (!Expressions.compare(left, presentCompare, right)) { return false; } @@ -331,7 +331,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { final String svarOperand = comparator.substring(2); final int operandValue = AbilityFactory.calculateAmount(GameState.getCardState(this.getHostCard()), svarOperand, null); - if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { + if (!Expressions.compare(sVar, svarOperator, operandValue)) { return false; } } diff --git a/src/main/java/forge/card/replacement/ReplacementHandler.java b/src/main/java/forge/card/replacement/ReplacementHandler.java index 126c7d28bf3..5fdc3485573 100644 --- a/src/main/java/forge/card/replacement/ReplacementHandler.java +++ b/src/main/java/forge/card/replacement/ReplacementHandler.java @@ -28,6 +28,7 @@ import forge.GameActionUtil; import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.spellability.SpellAbility; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -111,7 +112,7 @@ public class ReplacementHandler { && replacementEffect.requirementsCheck() && replacementEffect.canReplace(runParams) && !possibleReplacers.contains(replacementEffect) - && replacementEffect.zonesCheck(AllZone.getZoneOf(crd))) { + && replacementEffect.zonesCheck(GameState.getZoneOf(crd))) { possibleReplacers.add(replacementEffect); } } diff --git a/src/main/java/forge/card/spellability/Ability.java b/src/main/java/forge/card/spellability/Ability.java index d3d22703e5a..4a97573b320 100644 --- a/src/main/java/forge/card/spellability/Ability.java +++ b/src/main/java/forge/card/spellability/Ability.java @@ -19,8 +19,8 @@ package forge.card.spellability; import com.esotericsoftware.minlog.Log; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.game.GameState; /** @@ -69,7 +69,7 @@ public abstract class Ability extends SpellAbility { /** {@inheritDoc} */ @Override public boolean canPlay() { - if (AllZone.getStack().isSplitSecondOnStack()) { + if (Singletons.getModel().getGameState().getStack().isSplitSecondOnStack()) { return false; } diff --git a/src/main/java/forge/card/spellability/AbilityActivated.java b/src/main/java/forge/card/spellability/AbilityActivated.java index 6b2672b4fc4..7432c2affe0 100644 --- a/src/main/java/forge/card/spellability/AbilityActivated.java +++ b/src/main/java/forge/card/spellability/AbilityActivated.java @@ -20,8 +20,8 @@ package forge.card.spellability; import java.util.ArrayList; import java.util.List; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.card.cost.Cost; import forge.card.cost.CostPayment; @@ -83,7 +83,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S /** {@inheritDoc} */ @Override public boolean canPlay() { - if (AllZone.getStack().isSplitSecondOnStack()) { + if (Singletons.getModel().getGameState().getStack().isSplitSecondOnStack()) { return false; } diff --git a/src/main/java/forge/card/spellability/AbilityMana.java b/src/main/java/forge/card/spellability/AbilityMana.java index 2e7fbf9d6f4..4485f2f2c1e 100644 --- a/src/main/java/forge/card/spellability/AbilityMana.java +++ b/src/main/java/forge/card/spellability/AbilityMana.java @@ -20,8 +20,8 @@ package forge.card.spellability; import java.util.ArrayList; import java.util.HashMap; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; import forge.card.cost.Cost; @@ -239,7 +239,7 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl runParams.put("Player", player); runParams.put("AbilityMana", this); runParams.put("Produced", produced); - AllZone.getTriggerHandler().runTrigger(TriggerType.TapsForMana, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.TapsForMana, runParams); } // end produceMana(String) diff --git a/src/main/java/forge/card/spellability/Spell.java b/src/main/java/forge/card/spellability/Spell.java index b881487c924..cd7febf92d7 100644 --- a/src/main/java/forge/card/spellability/Spell.java +++ b/src/main/java/forge/card/spellability/Spell.java @@ -20,9 +20,8 @@ package forge.card.spellability; import java.util.ArrayList; import java.util.List; -import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; +import forge.Singletons; import forge.CardLists; import forge.card.cardfactory.CardFactoryUtil; @@ -34,6 +33,7 @@ import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.player.Player; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** *

@@ -92,7 +92,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable /** {@inheritDoc} */ @Override public boolean canPlay() { - if (AllZone.getStack().isSplitSecondOnStack()) { + if (Singletons.getModel().getGameState().getStack().isSplitSecondOnStack()) { return false; } @@ -169,7 +169,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable } catch (final NumberFormatException e) { y = CardFactoryUtil.xCount(card, card.getSVar(compareTo)); } - if (!AllZoneUtil.compare(x, comparator, y)) { + if (!Expressions.compare(x, comparator, y)) { return false; } } diff --git a/src/main/java/forge/card/spellability/SpellAbilityCondition.java b/src/main/java/forge/card/spellability/SpellAbilityCondition.java index cd58ebd4ab0..4a9c31f690a 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityCondition.java +++ b/src/main/java/forge/card/spellability/SpellAbilityCondition.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -33,6 +32,7 @@ import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** *

@@ -274,7 +274,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { final int left = list.size(); - if (!AllZoneUtil.compare(left, this.getPresentCompare(), right)) { + if (!Expressions.compare(left, this.getPresentCompare(), right)) { return false; } } @@ -296,7 +296,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { right = Integer.parseInt(this.getLifeAmount().substring(2)); } - if (!AllZoneUtil.compare(life, this.getLifeAmount(), right)) { + if (!Expressions.compare(life, this.getLifeAmount(), right)) { return false; } } @@ -311,7 +311,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { final int svarValue = AbilityFactory.calculateAmount(sa.getSourceCard(), this.getsVarToCheck(), sa); final int operandValue = AbilityFactory.calculateAmount(sa.getSourceCard(), this.getsVarOperand(), sa); - if (!AllZoneUtil.compare(svarValue, this.getsVarOperator(), operandValue)) { + if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { return false; } diff --git a/src/main/java/forge/card/spellability/SpellAbilityRequirements.java b/src/main/java/forge/card/spellability/SpellAbilityRequirements.java index 53da0e86362..20176da0683 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRequirements.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRequirements.java @@ -19,11 +19,11 @@ package forge.card.spellability; import java.util.ArrayList; -import forge.AllZone; import forge.Card; import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.cost.CostPayment; +import forge.game.GameState; import forge.game.zone.PlayerZone; /** @@ -111,7 +111,7 @@ public class SpellAbilityRequirements { if (!this.ability.getSourceCard().isCopiedSpell()) { final Card c = this.ability.getSourceCard(); - this.fromZone = AllZone.getZoneOf(c); + this.fromZone = GameState.getZoneOf(c); this.zonePosition = this.fromZone.getPosition(c); this.ability.setSourceCard(Singletons.getModel().getGameAction().moveToStack(c)); } @@ -119,7 +119,7 @@ public class SpellAbilityRequirements { // freeze Stack. No abilities should go onto the stack while I'm filling // requirements. - AllZone.getStack().freezeStack(); + Singletons.getModel().getGameState().getStack().freezeStack(); // Skip to paying if parent ability doesn't target and has no // subAbilities. @@ -148,7 +148,7 @@ public class SpellAbilityRequirements { } this.select.resetTargets(); - AllZone.getStack().removeFromFrozenStack(this.ability); + Singletons.getModel().getGameState().getStack().removeFromFrozenStack(this.ability); return; } else { this.needPayment(); @@ -207,7 +207,7 @@ public class SpellAbilityRequirements { this.ability.resetOnceResolved(); this.payment.cancelPayment(); - AllZone.getStack().clearFrozen(); + Singletons.getModel().getGameState().getStack().clearFrozen(); } } @@ -235,6 +235,6 @@ public class SpellAbilityRequirements { } this.ability.getActivatingPlayer().getManaPool().clearManaPaid(this.ability, false); - AllZone.getStack().addAndUnfreeze(this.ability); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(this.ability); } } diff --git a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java index 1f81c8bd8c9..4017f8ed237 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java @@ -21,8 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -35,6 +33,7 @@ import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** *

@@ -188,7 +187,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { if (this.getZone() == null) { return true; } - PlayerZone cardZone = AllZone.getZoneOf(c); + PlayerZone cardZone = GameState.getZoneOf(c); Player activator = sa.getActivatingPlayer(); if (cardZone == null || !cardZone.is(this.getZone())) { // If Card is not in the default activating zone, do some additional checks @@ -370,7 +369,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { } final int left = list.size(); - if (!AllZoneUtil.compare(left, this.getPresentCompare(), right)) { + if (!Expressions.compare(left, this.getPresentCompare(), right)) { return false; } } @@ -392,7 +391,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { right = Integer.parseInt(this.getLifeAmount().substring(2)); } - if (!AllZoneUtil.compare(life, this.getLifeAmount(), right)) { + if (!Expressions.compare(life, this.getLifeAmount(), right)) { return false; } } @@ -413,7 +412,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { final int svarValue = AbilityFactory.calculateAmount(c, this.getsVarToCheck(), sa); final int operandValue = AbilityFactory.calculateAmount(c, this.getsVarOperand(), sa); - if (!AllZoneUtil.compare(svarValue, this.getsVarOperator(), operandValue)) { + if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { return false; } diff --git a/src/main/java/forge/card/spellability/SpellPermanent.java b/src/main/java/forge/card/spellability/SpellPermanent.java index 719f039564a..6b5aaa3f423 100644 --- a/src/main/java/forge/card/spellability/SpellPermanent.java +++ b/src/main/java/forge/card/spellability/SpellPermanent.java @@ -123,7 +123,7 @@ public class SpellPermanent extends Spell { final HashMap runParams = new HashMap(); runParams.put("Card", source); runParams.put("Championed", source.getChampionedCard()); - AllZone.getTriggerHandler().runTrigger(TriggerType.Championed, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Championed, runParams); } else { Singletons.getModel().getGameAction().sacrifice(this.getSourceCard(), null); } @@ -142,7 +142,7 @@ public class SpellPermanent extends Spell { sb.append(SpellPermanent.this.getSourceCard()).append( " - When CARDNAME enters the battlefield, sacrifice it unless you exile a creature you control."); SpellPermanent.this.championAbilityComes.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(SpellPermanent.this.championAbilityComes); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(SpellPermanent.this.championAbilityComes); } // execute() }; // championCommandComes @@ -169,7 +169,7 @@ public class SpellPermanent extends Spell { " - When CARDNAME leaves the battlefield, exiled card returns to the battlefield."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // execute() }; // championCommandLeavesPlay diff --git a/src/main/java/forge/card/spellability/TargetSelection.java b/src/main/java/forge/card/spellability/TargetSelection.java index 85d8f5fcd42..cd5da768025 100644 --- a/src/main/java/forge/card/spellability/TargetSelection.java +++ b/src/main/java/forge/card/spellability/TargetSelection.java @@ -25,6 +25,7 @@ import com.google.common.base.Predicate; import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.CardLists; import forge.card.abilityfactory.AbilityFactory; @@ -594,8 +595,8 @@ public class TargetSelection { public static ArrayList getTargetableOnStack(final SpellAbility sa, final Target tgt) { final ArrayList choosables = new ArrayList(); - for (int i = 0; i < AllZone.getStack().size(); i++) { - choosables.add(AllZone.getStack().peekAbility(i)); + for (int i = 0; i < Singletons.getModel().getGameState().getStack().size(); i++) { + choosables.add(Singletons.getModel().getGameState().getStack().peekAbility(i)); } for (int i = 0; i < choosables.size(); i++) { diff --git a/src/main/java/forge/card/staticability/StaticAbility.java b/src/main/java/forge/card/staticability/StaticAbility.java index 0e051ffd523..3ef7888a998 100644 --- a/src/main/java/forge/card/staticability/StaticAbility.java +++ b/src/main/java/forge/card/staticability/StaticAbility.java @@ -21,8 +21,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.GameEntity; import forge.Singletons; @@ -30,9 +28,11 @@ import forge.card.abilityfactory.AbilityFactory; import forge.card.cost.Cost; import forge.card.mana.ManaCost; import forge.card.spellability.SpellAbility; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** * The Class StaticAbility. @@ -457,7 +457,7 @@ public class StaticAbility { if (this.mapParams.containsKey("EffectZone")) { if (!this.mapParams.get("EffectZone").equals("All") && !ZoneType.listValueOf(this.mapParams.get("EffectZone")) - .contains(AllZone.getZoneOf(this.hostCard).getZoneType())) { + .contains(GameState.getZoneOf(this.hostCard).getZoneType())) { return false; } } else { @@ -532,7 +532,7 @@ public class StaticAbility { final String svarOperator = comparator.substring(0, 2); final String svarOperand = comparator.substring(2); final int operandValue = AbilityFactory.calculateAmount(this.hostCard, svarOperand, null); - if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { + if (!Expressions.compare(sVar, svarOperator, operandValue)) { return false; } } @@ -546,7 +546,7 @@ public class StaticAbility { final String svarOperator = comparator.substring(0, 2); final String svarOperand = comparator.substring(2); final int operandValue = AbilityFactory.calculateAmount(this.hostCard, svarOperand, null); - if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { + if (!Expressions.compare(sVar, svarOperator, operandValue)) { return false; } } @@ -560,7 +560,7 @@ public class StaticAbility { final String svarOperator = comparator.substring(0, 2); final String svarOperand = comparator.substring(2); final int operandValue = AbilityFactory.calculateAmount(this.hostCard, svarOperand, null); - if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { + if (!Expressions.compare(sVar, svarOperator, operandValue)) { return false; } } @@ -574,7 +574,7 @@ public class StaticAbility { final String svarOperator = comparator.substring(0, 2); final String svarOperand = comparator.substring(2); final int operandValue = AbilityFactory.calculateAmount(this.hostCard, svarOperand, null); - if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { + if (!Expressions.compare(sVar, svarOperator, operandValue)) { return false; } } diff --git a/src/main/java/forge/card/staticability/StaticAbilityCantBeCast.java b/src/main/java/forge/card/staticability/StaticAbilityCantBeCast.java index 9d201b36b33..44727c5404f 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityCantBeCast.java +++ b/src/main/java/forge/card/staticability/StaticAbilityCantBeCast.java @@ -20,10 +20,10 @@ package forge.card.staticability; import java.util.HashMap; import java.util.List; -import forge.AllZone; import forge.Card; import forge.card.spellability.AbilityMana; import forge.card.spellability.SpellAbility; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -64,7 +64,7 @@ public class StaticAbilityCantBeCast { if (params.containsKey("Origin")) { List src = ZoneType.listValueOf(params.get("Origin")); - if (!src.contains(AllZone.getZoneOf(card).getZoneType())) { + if (!src.contains(GameState.getZoneOf(card).getZoneType())) { return false; } } diff --git a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java index 9287b16c250..2fda583c62b 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java +++ b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java @@ -22,7 +22,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; -import forge.AllZone; import forge.Card; import forge.Singletons; @@ -66,7 +65,7 @@ public class StaticAbilityContinuous { se.setParams(params); se.setTimestamp(hostCard.getTimestamp()); se.setSource(hostCard); - AllZone.getStaticEffects().addStaticEffect(se); + Singletons.getModel().getGameState().getStaticEffects().addStaticEffect(se); int powerBonus = 0; int toughnessBonus = 0; diff --git a/src/main/java/forge/card/trigger/Trigger.java b/src/main/java/forge/card/trigger/Trigger.java index d59f14b4d14..69c29b6194e 100644 --- a/src/main/java/forge/card/trigger/Trigger.java +++ b/src/main/java/forge/card/trigger/Trigger.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -36,6 +35,7 @@ import forge.card.spellability.SpellAbility; import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.zone.ZoneType; +import forge.util.Expressions; /** *

@@ -326,7 +326,7 @@ public abstract class Trigger extends TriggerReplacementBase { right = CardFactoryUtil.xCount(this.getHostCard(), this.getHostCard().getSVar(rightString)); } - if (!AllZoneUtil.compare(life, lifeCompare, right)) { + if (!Expressions.compare(life, lifeCompare, right)) { return false; } @@ -365,7 +365,7 @@ public abstract class Trigger extends TriggerReplacementBase { } final int left = list.size(); - if (!AllZoneUtil.compare(left, presentCompare, right)) { + if (!Expressions.compare(left, presentCompare, right)) { return false; } @@ -404,7 +404,7 @@ public abstract class Trigger extends TriggerReplacementBase { } final int left = list.size(); - if (!AllZoneUtil.compare(left, presentCompare, right)) { + if (!Expressions.compare(left, presentCompare, right)) { return false; } @@ -421,7 +421,7 @@ public abstract class Trigger extends TriggerReplacementBase { final String svarOperand = comparator.substring(2); final int operandValue = AbilityFactory.calculateAmount(GameState.getCardState(this.getHostCard()), svarOperand, null); - if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { + if (!Expressions.compare(sVar, svarOperator, operandValue)) { return false; } } diff --git a/src/main/java/forge/card/trigger/TriggerDamageDone.java b/src/main/java/forge/card/trigger/TriggerDamageDone.java index 806cbc8b74c..39722d31893 100644 --- a/src/main/java/forge/card/trigger/TriggerDamageDone.java +++ b/src/main/java/forge/card/trigger/TriggerDamageDone.java @@ -19,9 +19,9 @@ package forge.card.trigger; import java.util.HashMap; -import forge.AllZoneUtil; import forge.Card; import forge.card.spellability.SpellAbility; +import forge.util.Expressions; /** *

@@ -87,7 +87,7 @@ public class TriggerDamageDone extends Trigger { final int operand = Integer.parseInt(fullParam.substring(2)); final int actualAmount = (Integer) runParams2.get("DamageAmount"); - if (!AllZoneUtil.compare(actualAmount, operator, operand)) { + if (!Expressions.compare(actualAmount, operator, operand)) { return false; } diff --git a/src/main/java/forge/card/trigger/TriggerHandler.java b/src/main/java/forge/card/trigger/TriggerHandler.java index d89438bd532..b5702cfdc6c 100644 --- a/src/main/java/forge/card/trigger/TriggerHandler.java +++ b/src/main/java/forge/card/trigger/TriggerHandler.java @@ -23,7 +23,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -319,7 +318,7 @@ public class TriggerHandler { if (runParams.containsKey("Destination") && runParams.containsKey("Card")) { Card card = (Card) runParams.get("Card"); if (playerAP.equals(card.getController()) && !allCards.contains(card) - && (AllZone.getZoneOf(card) == null || AllZone.getZoneOf(card).getZoneType().isHidden())) { + && (GameState.getZoneOf(card) == null || GameState.getZoneOf(card).getZoneType().isHidden())) { allCards.add(card); } } @@ -345,7 +344,7 @@ public class TriggerHandler { if (runParams.containsKey("Destination") && runParams.containsKey("Card")) { Card card = (Card) runParams.get("Card"); if (!playerAP.equals(card.getController()) && !allCards.contains(card) - && (AllZone.getZoneOf(card) == null || AllZone.getZoneOf(card).getZoneType().isHidden())) { + && (GameState.getZoneOf(card) == null || GameState.getZoneOf(card).getZoneType().isHidden())) { allCards.add(card); } } @@ -399,7 +398,7 @@ public class TriggerHandler { return false; // Morphed cards only have pumped triggers go off. } if (regtrig instanceof TriggerAlways) { - if (AllZone.getStack().hasStateTrigger(regtrig.getId())) { + if (Singletons.getModel().getGameState().getStack().hasStateTrigger(regtrig.getId())) { return false; // State triggers that are already on the stack // don't trigger again. } @@ -411,7 +410,7 @@ public class TriggerHandler { if (regtrig.isSuppressed()) { return false; // Trigger removed by effect } - if (!regtrig.zonesCheck(AllZone.getZoneOf(regtrig.getHostCard()))) { + if (!regtrig.zonesCheck(GameState.getZoneOf(regtrig.getHostCard()))) { return false; // Host card isn't where it needs to be. } @@ -1021,7 +1020,7 @@ public class TriggerHandler { } //Singletons.getModel().getGameAction().playSpellAbilityNoStack(wrapperAbility, false); } else { - AllZone.getStack().addSimultaneousStackEntry(wrapperAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(wrapperAbility); } regtrig.setTriggeredSA(wrapperAbility); return true; diff --git a/src/main/java/forge/card/trigger/TriggerSpellAbilityCast.java b/src/main/java/forge/card/trigger/TriggerSpellAbilityCast.java index 5c574ad76cb..1589fee19ef 100644 --- a/src/main/java/forge/card/trigger/TriggerSpellAbilityCast.java +++ b/src/main/java/forge/card/trigger/TriggerSpellAbilityCast.java @@ -19,7 +19,7 @@ package forge.card.trigger; import java.util.HashMap; -import forge.AllZone; +import forge.Singletons; import forge.Card; import forge.card.cost.Cost; @@ -59,7 +59,7 @@ public class TriggerSpellAbilityCast extends Trigger { public final boolean performTest(final java.util.Map runParams2) { final SpellAbility spellAbility = (SpellAbility) runParams2.get("CastSA"); final Card cast = spellAbility.getSourceCard(); - final SpellAbilityStackInstance si = AllZone.getStack().getInstanceFromSpellAbility(spellAbility); + final SpellAbilityStackInstance si = Singletons.getModel().getGameState().getStack().getInstanceFromSpellAbility(spellAbility); if (this.getMode() == TriggerType.SpellCast) { if (!spellAbility.isSpell()) { diff --git a/src/main/java/forge/control/input/InputAttack.java b/src/main/java/forge/control/input/InputAttack.java index ac89474e9b1..225551d79b8 100644 --- a/src/main/java/forge/control/input/InputAttack.java +++ b/src/main/java/forge/control/input/InputAttack.java @@ -54,7 +54,7 @@ public class InputAttack extends Input { ButtonUtil.enableOnlyOK(); - final Object o = AllZone.getCombat().nextDefender(); + final Object o = Singletons.getModel().getGameState().getCombat().nextDefender(); if (o == null) { return; } @@ -65,13 +65,13 @@ public class InputAttack extends Input { CMatchUI.SINGLETON_INSTANCE.showMessage(sb.toString()); - if (AllZone.getCombat().getRemainingDefenders() == 0) { + if (Singletons.getModel().getGameState().getCombat().getRemainingDefenders() == 0) { // Nothing left to attack, has to attack this defender List possibleAttackers = Singletons.getControl().getPlayer().getCardsIn(ZoneType.Battlefield); for (Card c : Iterables.filter(possibleAttackers, CardPredicates.Presets.CREATURES)) { - if (c.hasKeyword("CARDNAME attacks each turn if able.") && CombatUtil.canAttack(c, AllZone.getCombat()) + if (c.hasKeyword("CARDNAME attacks each turn if able.") && CombatUtil.canAttack(c, Singletons.getModel().getGameState().getCombat()) && !c.isAttacking()) { - AllZone.getCombat().addAttacker(c); + Singletons.getModel().getGameState().getCombat().addAttacker(c); } } } @@ -80,11 +80,11 @@ public class InputAttack extends Input { /** {@inheritDoc} */ @Override public final void selectButtonOK() { - if (!AllZone.getCombat().getAttackers().isEmpty()) { + if (!Singletons.getModel().getGameState().getCombat().getAttackers().isEmpty()) { Singletons.getModel().getGameState().getPhaseHandler().setCombat(true); } - if (AllZone.getCombat().getRemainingDefenders() != 0) { + if (Singletons.getModel().getGameState().getCombat().getRemainingDefenders() != 0) { Singletons.getModel().getGameState().getPhaseHandler().repeatPhase(); } @@ -101,14 +101,14 @@ public class InputAttack extends Input { final Player human = Singletons.getControl().getPlayer(); if (zone.is(ZoneType.Battlefield, human) - && CombatUtil.canAttack(card, AllZone.getCombat())) { + && CombatUtil.canAttack(card, Singletons.getModel().getGameState().getCombat())) { // TODO add the propaganda code here and remove it in // Phase.nextPhase() // if (!CombatUtil.checkPropagandaEffects(card)) // return; - AllZone.getCombat().addAttacker(card); + Singletons.getModel().getGameState().getCombat().addAttacker(card); // just to make sure the attack symbol is marked human.getZone(ZoneType.Battlefield).updateObservers(); diff --git a/src/main/java/forge/control/input/InputBlock.java b/src/main/java/forge/control/input/InputBlock.java index 14941f366e4..7ec326027ad 100644 --- a/src/main/java/forge/control/input/InputBlock.java +++ b/src/main/java/forge/control/input/InputBlock.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import forge.AllZone; import forge.Card; import forge.Singletons; @@ -87,11 +86,11 @@ public class InputBlock extends Input { /** {@inheritDoc} */ @Override public final void selectButtonOK() { - if (CombatUtil.finishedMandatoryBlocks(AllZone.getCombat())) { + if (CombatUtil.finishedMandatoryBlocks(Singletons.getModel().getGameState().getCombat())) { // Done blocking ButtonUtil.reset(); - CombatUtil.orderMultipleCombatants(AllZone.getCombat()); + CombatUtil.orderMultipleCombatants(Singletons.getModel().getGameState().getCombat()); Singletons.getModel().getGameState().getPhaseHandler().setNeedToNextPhase(true); } @@ -103,7 +102,7 @@ public class InputBlock extends Input { // is attacking? boolean reminder = true; - if (AllZone.getCombat().getAttackers().contains(card)) { + if (Singletons.getModel().getGameState().getCombat().getAttackers().contains(card)) { this.currentAttacker = card; reminder = false; } else { @@ -117,9 +116,9 @@ public class InputBlock extends Input { List attackersBlocked = this.allBlocking.get(card); if (!attackersBlocked.contains(this.currentAttacker) && - CombatUtil.canBlock(this.currentAttacker, card, AllZone.getCombat())) { + CombatUtil.canBlock(this.currentAttacker, card, Singletons.getModel().getGameState().getCombat())) { attackersBlocked.add(this.currentAttacker); - AllZone.getCombat().addBlocker(this.currentAttacker, card); + Singletons.getModel().getGameState().getCombat().addBlocker(this.currentAttacker, card); reminder = false; } } diff --git a/src/main/java/forge/control/input/InputCleanup.java b/src/main/java/forge/control/input/InputCleanup.java index 9bae3b3e07b..6b3ed83ddab 100644 --- a/src/main/java/forge/control/input/InputCleanup.java +++ b/src/main/java/forge/control/input/InputCleanup.java @@ -17,7 +17,6 @@ */ package forge.control.input; -import forge.AllZone; import forge.Card; import forge.Singletons; import forge.game.phase.CombatUtil; @@ -74,7 +73,7 @@ public class InputCleanup extends Input { public final void selectCard(final Card card, final PlayerZone zone) { if (zone.is(ZoneType.Hand, Singletons.getControl().getPlayer())) { card.getController().discard(card, null); - if (AllZone.getStack().size() == 0) { + if (Singletons.getModel().getGameState().getStack().size() == 0) { this.showMessage(); } } diff --git a/src/main/java/forge/control/input/InputControl.java b/src/main/java/forge/control/input/InputControl.java index b2c3130ccfb..85234da528b 100644 --- a/src/main/java/forge/control/input/InputControl.java +++ b/src/main/java/forge/control/input/InputControl.java @@ -20,7 +20,6 @@ package forge.control.input; import java.util.LinkedList; import java.util.Stack; -import forge.AllZone; import forge.Singletons; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; @@ -216,7 +215,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { this.model.getGameState().getStack().freezeStack(); if (playerTurn.isHuman() && !handler.getAutoPass()) { - AllZone.getCombat().initiatePossibleDefenders(playerTurn.getOpponent()); + Singletons.getModel().getGameState().getCombat().initiatePossibleDefenders(playerTurn.getOpponent()); return new InputAttack(); } } else if (phase == PhaseType.COMBAT_DECLARE_BLOCKERS) { diff --git a/src/main/java/forge/control/input/InputPassPriority.java b/src/main/java/forge/control/input/InputPassPriority.java index a024aad2937..5456a4830f8 100644 --- a/src/main/java/forge/control/input/InputPassPriority.java +++ b/src/main/java/forge/control/input/InputPassPriority.java @@ -59,8 +59,8 @@ public class InputPassPriority extends Input implements java.io.Serializable { sb.append("Turn : ").append(Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn()).append("\n"); sb.append("Phase: ").append(phase.Name).append("\n"); sb.append("Stack: "); - if (AllZone.getStack().size() != 0) { - sb.append(AllZone.getStack().size()).append(" to Resolve."); + if (Singletons.getModel().getGameState().getStack().size() != 0) { + sb.append(Singletons.getModel().getGameState().getStack().size()).append(" to Resolve."); } else { sb.append("Empty"); } diff --git a/src/main/java/forge/control/input/InputPayManaCost.java b/src/main/java/forge/control/input/InputPayManaCost.java index 6970a12cc10..ed61f55ac00 100644 --- a/src/main/java/forge/control/input/InputPayManaCost.java +++ b/src/main/java/forge/control/input/InputPayManaCost.java @@ -81,7 +81,7 @@ public class InputPayManaCost extends InputMana { this.stopSetNext(this.spell.getAfterPayMana()); } else { this.manaCost = new ManaCost("0"); - AllZone.getStack().add(this.spell); + Singletons.getModel().getGameState().getStack().add(this.spell); } } else { this.manaCost = Singletons.getModel().getGameAction().getSpellCostChange(sa, new ManaCost(this.originalManaCost)); @@ -126,7 +126,7 @@ public class InputPayManaCost extends InputMana { this.stopSetNext(this.spell.getAfterPayMana()); } else { this.manaCost = new ManaCost("0"); - AllZone.getStack().add(this.spell); + Singletons.getModel().getGameState().getStack().add(this.spell); } } else { this.manaCost = manaCostToPay; @@ -226,7 +226,7 @@ public class InputPayManaCost extends InputMana { if (this.skipStack) { this.spell.resolve(); } else { - AllZone.getStack().add(this.spell); + Singletons.getModel().getGameState().getStack().add(this.spell); } AllZone.getInputControl().resetInput(); } @@ -240,12 +240,12 @@ public class InputPayManaCost extends InputMana { // tapped for convoke) if (this.spell.getTappedForConvoke() != null) { - AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Untaps); for (final Card c : this.spell.getTappedForConvoke()) { c.untap(); c.tap(); } - AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Untaps); this.spell.clearTappedForConvoke(); } } @@ -256,11 +256,11 @@ public class InputPayManaCost extends InputMana { public final void selectButtonCancel() { // If this is a spell with convoke, untap all creatures used for it. if (this.spell.getTappedForConvoke() != null) { - AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Untaps); for (final Card c : this.spell.getTappedForConvoke()) { c.untap(); } - AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Untaps); this.spell.clearTappedForConvoke(); } diff --git a/src/main/java/forge/control/input/InputPayManaCostUtil.java b/src/main/java/forge/control/input/InputPayManaCostUtil.java index 676a429d04c..88e6b7b51c8 100644 --- a/src/main/java/forge/control/input/InputPayManaCostUtil.java +++ b/src/main/java/forge/control/input/InputPayManaCostUtil.java @@ -546,12 +546,12 @@ public class InputPayManaCostUtil { // being tapped for convoke) if (sa.getTappedForConvoke() != null) { - AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Untaps); for (final Card c : sa.getTappedForConvoke()) { c.untap(); c.tap(); } - AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Untaps); sa.clearTappedForConvoke(); } @@ -562,11 +562,11 @@ public class InputPayManaCostUtil { // If we're paying for a spell with convoke, untap all creatures // used for it. if (sa.getTappedForConvoke() != null) { - AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Untaps); for (final Card c : sa.getTappedForConvoke()) { c.untap(); } - AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Untaps); sa.clearTappedForConvoke(); } diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index 12bccdd6da1..1dcbbee4de7 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -103,8 +103,8 @@ public class GameNew { Card.resetUniqueNumber(); // need this code here, otherwise observables fail forge.card.trigger.Trigger.resetIDs(); - AllZone.getTriggerHandler().clearTriggerSettings(); - AllZone.getTriggerHandler().clearDelayedTrigger(); + Singletons.getModel().getGameState().getTriggerHandler().clearTriggerSettings(); + Singletons.getModel().getGameState().getTriggerHandler().clearDelayedTrigger(); // friendliness final Map> removedAnteCards = new HashMap>(); diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 8dc01f2ac07..5337945c4e6 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -24,7 +24,6 @@ import java.util.List; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import forge.AllZone; import forge.Card; import forge.CardLists; import forge.CardPredicates; @@ -293,6 +292,85 @@ public class GameState { // THESE WERE MOVED HERE FROM AllZoneUtil // They must once become non-static members of this class + /** + *

+ * getZone. + *

+ * + * @param c + * a {@link forge.Card} object. + * @return a {@link forge.game.zone.PlayerZone} object. + */ + public static PlayerZone getZoneOf(final Card c) { + final GameState gameState = Singletons.getModel().getGameState(); + if (gameState == null) { + return null; + } + + if (gameState.getStackZone().contains(c)) { + return gameState.getStackZone(); + } + + for (final Player p : gameState.getPlayers()) { + for (final ZoneType z : Player.ALL_ZONES) { + final PlayerZone pz = p.getZone(z); + if (pz.contains(c)) { + return pz; + } + } + } + + return null; + } + + /** + * + * isCardInZone. + * + * @param c + * Card + * @param zone + * Constant.Zone + * @return boolean + */ + public static boolean isCardInZone(final Card c, final ZoneType zone) { + final GameState gameState = Singletons.getModel().getGameState(); + if (gameState == null) { + return false; + } + + if (zone.equals(ZoneType.Stack)) { + if (gameState.getStackZone().contains(c)) { + return true; + } + } else { + for (final Player p : gameState.getPlayers()) { + if (p.getZone(zone).contains(c)) { + return true; + } + } + } + + return false; + } + + /** + *

+ * resetZoneMoveTracking. + *

+ */ + public static void resetZoneMoveTracking() { + final GameState gameState = Singletons.getModel().getGameState(); + if (gameState == null) { + return; + } + for (final Player p : gameState.getPlayers()) { + for (final ZoneType z : Player.ALL_ZONES) { + p.getZone(z).resetCardsAddedThisTurn(); + } + } + } + /** * gets a list of all cards owned by both players that have are currently in * the given zone. @@ -303,7 +381,7 @@ public class GameState { */ public static List getCardsIn(final ZoneType zone) { if (zone == ZoneType.Stack) { - return AllZone.getStackZone().getCards(); + return Singletons.getModel().getGameState().getStackZone().getCards(); } else { List cards = null; for (final Player p : Singletons.getModel().getGameState().getPlayers()) { @@ -547,7 +625,7 @@ public class GameState { all.addAll(player.getZone(ZoneType.Battlefield).getCards(false)); all.addAll(player.getZone(ZoneType.Exile).getCards()); } - all.addAll(AllZone.getStackZone().getCards()); + all.addAll(Singletons.getModel().getGameState().getStackZone().getCards()); return all; } diff --git a/src/main/java/forge/game/MatchController.java b/src/main/java/forge/game/MatchController.java index 1e37f5c7032..42f662b8bbf 100644 --- a/src/main/java/forge/game/MatchController.java +++ b/src/main/java/forge/game/MatchController.java @@ -134,7 +134,7 @@ public class MatchController { CMessage.SINGLETON_INSTANCE.updateGameInfo(this); // Update observers - AllZone.getStack().updateObservers(); + Singletons.getModel().getGameState().getStack().updateObservers(); AllZone.getInputControl().updateObservers(); AllZone.getGameLog().updateObservers(); diff --git a/src/main/java/forge/game/phase/Combat.java b/src/main/java/forge/game/phase/Combat.java index 2e82db24a93..56757a42575 100644 --- a/src/main/java/forge/game/phase/Combat.java +++ b/src/main/java/forge/game/phase/Combat.java @@ -26,7 +26,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -650,7 +649,7 @@ public class Combat { // Run Unblocked Trigger final HashMap runParams = new HashMap(); runParams.put("Attacker", attacker); - AllZone.getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams); } } @@ -837,18 +836,17 @@ public class Combat { */ public static void dealAssignedDamage() { // This function handles both Regular and First Strike combat assignment - final Player player = AllZone.getCombat().getDefendingPlayer(); + final Player player = Singletons.getModel().getGameState().getCombat().getDefendingPlayer(); final boolean bFirstStrike = Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.COMBAT_FIRST_STRIKE_DAMAGE); - final HashMap defMap = AllZone.getCombat().getDefendingDamageMap(); + final HashMap defMap = Singletons.getModel().getGameState().getCombat().getDefendingDamageMap(); for (final Entry entry : defMap.entrySet()) { player.addCombatDamage(entry.getValue(), entry.getKey()); } - final List unblocked = new ArrayList(bFirstStrike ? AllZone.getCombat().getUnblockedAttackers() : AllZone - .getCombat().getUnblockedFirstStrikeAttackers()); + final List unblocked = new ArrayList(bFirstStrike ? Singletons.getModel().getGameState().getCombat().getUnblockedAttackers() : Singletons.getModel().getGameState().getCombat().getUnblockedFirstStrikeAttackers()); for (int j = 0; j < unblocked.size(); j++) { if (bFirstStrike) { @@ -863,9 +861,9 @@ public class Combat { // this can be much better below here... final List combatants = new ArrayList(); - combatants.addAll(AllZone.getCombat().getAttackers()); - combatants.addAll(AllZone.getCombat().getAllBlockers()); - combatants.addAll(AllZone.getCombat().getDefendingPlaneswalkers()); + combatants.addAll(Singletons.getModel().getGameState().getCombat().getAttackers()); + combatants.addAll(Singletons.getModel().getGameState().getCombat().getAllBlockers()); + combatants.addAll(Singletons.getModel().getGameState().getCombat().getDefendingPlaneswalkers()); Card c; for (int i = 0; i < combatants.size(); i++) { diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java index 140b75694c7..131402f7e24 100644 --- a/src/main/java/forge/game/phase/CombatUtil.java +++ b/src/main/java/forge/game/phase/CombatUtil.java @@ -28,7 +28,6 @@ import org.apache.commons.lang3.StringUtils; import com.esotericsoftware.minlog.Log; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -1429,10 +1428,10 @@ public class CombatUtil { * @return a boolean. */ public static boolean attackerWouldBeDestroyed(final Card attacker) { - final List blockers = AllZone.getCombat().getBlockers(attacker); + final List blockers = Singletons.getModel().getGameState().getCombat().getBlockers(attacker); for (final Card defender : blockers) { - if (CombatUtil.canDestroyAttacker(attacker, defender, AllZone.getCombat(), true) + if (CombatUtil.canDestroyAttacker(attacker, defender, Singletons.getModel().getGameState().getCombat(), true) && !(defender.hasKeyword("Wither") || defender.hasKeyword("Infect"))) { return true; } @@ -1463,10 +1462,10 @@ public class CombatUtil { boolean willTrigger = false; final Card source = trigger.getHostCard(); if (combat == null) { - combat = AllZone.getCombat(); + combat = Singletons.getModel().getGameState().getCombat(); } - if (!trigger.zonesCheck(AllZone.getZoneOf(trigger.getHostCard()))) { + if (!trigger.zonesCheck(GameState.getZoneOf(trigger.getHostCard()))) { return false; } if (!trigger.requirementsCheck()) { @@ -2330,10 +2329,10 @@ public class CombatUtil { public static boolean blockerWouldBeDestroyed(final Card blocker) { // TODO THis function only checks if a single attacker at a time would destroy a blocker // This needs to expand to tally up damage - final List attackers = AllZone.getCombat().getAttackersBlockedBy(blocker); + final List attackers = Singletons.getModel().getGameState().getCombat().getAttackersBlockedBy(blocker); for(Card attacker : attackers) { - if (CombatUtil.canDestroyBlocker(blocker, attacker, AllZone.getCombat(), true) + if (CombatUtil.canDestroyBlocker(blocker, attacker, Singletons.getModel().getGameState().getCombat(), true) && !(attacker.hasKeyword("Wither") || attacker.hasKeyword("Infect"))) { return true; } @@ -2495,7 +2494,7 @@ public class CombatUtil { // Loop through Defenders // Append Defending Player/Planeswalker - final Combat combat = AllZone.getCombat(); + final Combat combat = Singletons.getModel().getGameState().getCombat(); final List defenders = combat.getDefenders(); final List> attackers = combat.sortAttackerByDefender(); @@ -2529,7 +2528,7 @@ public class CombatUtil { // Loop through Defenders // Append Defending Player/Planeswalker - final Combat combat = AllZone.getCombat(); + final Combat combat = Singletons.getModel().getGameState().getCombat(); final List defenders = combat.getDefenders(); final List> attackers = combat.sortAttackerByDefender(); @@ -2540,7 +2539,7 @@ public class CombatUtil { for (final Card attacker : list) { sb.append(combat.getDefendingPlayer()).append(" assigned "); - defend = AllZone.getCombat().getBlockers(attacker); + defend = Singletons.getModel().getGameState().getCombat().getBlockers(attacker); if (!defend.isEmpty()) { // loop through blockers @@ -2574,8 +2573,8 @@ public class CombatUtil { // Loop through Defenders // Append Defending Player/Planeswalker - final List defenders = AllZone.getCombat().getDefenders(); - final List> attackers = AllZone.getCombat().sortAttackerByDefender(); + final List defenders = Singletons.getModel().getGameState().getCombat().getDefenders(); + final List> attackers = Singletons.getModel().getGameState().getCombat().sortAttackerByDefender(); // Not a big fan of the triple nested loop here for (int def = 0; def < defenders.size(); def++) { @@ -2597,7 +2596,7 @@ public class CombatUtil { display.append("-> "); display.append(CombatUtil.combatantToString(c)).append("\n"); - List blockers = AllZone.getCombat().getBlockers(c); + List blockers = Singletons.getModel().getGameState().getCombat().getBlockers(c); // loop through blockers for (final Card element : blockers) { @@ -2648,7 +2647,7 @@ public class CombatUtil { for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { final ArrayList staticAbilities = card.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { - Cost additionalCost = stAb.getCostAbility("CantAttackUnless", c, AllZone.getCombat().getDefenderByAttacker(c)); + Cost additionalCost = stAb.getCostAbility("CantAttackUnless", c, Singletons.getModel().getGameState().getCombat().getDefenderByAttacker(c)); attackCost = CostUtil.combineCosts(attackCost, additionalCost); } } @@ -2681,7 +2680,7 @@ public class CombatUtil { @Override public void execute() { - AllZone.getCombat().removeFromCombat(crd); + Singletons.getModel().getGameState().getCombat().removeFromCombat(crd); if (bLast) { PhaseUtil.handleAttackingTriggers(); @@ -2716,7 +2715,7 @@ public class CombatUtil { } else { // TODO remove the below line after Propaganda occurs // during Declare_Attackers - AllZone.getCombat().removeFromCombat(crd); + Singletons.getModel().getGameState().getCombat().removeFromCombat(crd); } if (bLast) { PhaseUtil.handleAttackingTriggers(); @@ -2738,11 +2737,11 @@ public class CombatUtil { // Run triggers final HashMap runParams = new HashMap(); runParams.put("Attacker", c); - final List otherAttackers = AllZone.getCombat().getAttackerList(); + final List otherAttackers = Singletons.getModel().getGameState().getCombat().getAttackerList(); otherAttackers.remove(c); runParams.put("OtherAttackers", otherAttackers); - runParams.put("Attacked", AllZone.getCombat().getDefenderByAttacker(c)); - AllZone.getTriggerHandler().runTrigger(TriggerType.Attacks, runParams); + runParams.put("Attacked", Singletons.getModel().getGameState().getCombat().getDefenderByAttacker(c)); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Attacks, runParams); // Annihilator: if (!c.getDamageHistory().getCreatureAttackedThisCombat()) { @@ -2776,7 +2775,7 @@ public class CombatUtil { ability.setDescription(sb.toString()); ability.setActivatingPlayer(c.getController()); - AllZone.getStack().add(ability); + Singletons.getModel().getGameState().getStack().add(ability); } // find } // for } // creatureAttacked @@ -2785,7 +2784,7 @@ public class CombatUtil { // Mijae Djinn if (c.getName().equals("Mijae Djinn")) { if (!GameActionUtil.flipACoin(c.getController(), c)) { - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); c.tap(); } } // Mijae Djinn @@ -2810,7 +2809,7 @@ public class CombatUtil { if (GameState.isCardInPlay(charger)) { charger.addIntrinsicKeyword("Trample"); - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } // resolve }; // ability @@ -2819,7 +2818,7 @@ public class CombatUtil { sb2.append(c.getName()).append(" - gains trample until end of turn if its power is 10 or greater."); ability2.setStackDescription(sb2.toString()); - AllZone.getStack().add(ability2); + Singletons.getModel().getGameState().getStack().add(ability2); } // Witch-Maw Nephilim @@ -2860,7 +2859,7 @@ public class CombatUtil { // Run triggers final HashMap runParams = new HashMap(); runParams.put("Card", c); - AllZone.getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.AttackerUnblocked, runParams); } /** @@ -2875,7 +2874,7 @@ public class CombatUtil { for (final Card c : cl) { if (!c.getDamageHistory().getCreatureBlockedThisCombat()) { for (final Ability ab : CardFactoryUtil.getBushidoEffects(c)) { - AllZone.getStack().add(ab); + Singletons.getModel().getGameState().getStack().add(ab); } } @@ -2901,16 +2900,16 @@ public class CombatUtil { final HashMap runParams = new HashMap(); runParams.put("Attacker", a); runParams.put("Blocker", b); - AllZone.getTriggerHandler().runTrigger(TriggerType.Blocks, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Blocks, runParams); if (!a.getDamageHistory().getCreatureGotBlockedThisCombat()) { - final int blockers = AllZone.getCombat().getBlockers(a).size(); + final int blockers = Singletons.getModel().getGameState().getCombat().getBlockers(a).size(); runParams.put("NumBlockers", blockers); - AllZone.getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.AttackerBlocked, runParams); // Bushido for (final Ability ab : CardFactoryUtil.getBushidoEffects(a)) { - AllZone.getStack().add(ab); + Singletons.getModel().getGameState().getStack().add(ab); } // Rampage @@ -2922,7 +2921,7 @@ public class CombatUtil { if (m.find()) { final String[] k = keyword.split(" "); final int magnitude = Integer.valueOf(k[1]); - final int numBlockers = AllZone.getCombat().getBlockers(a).size(); + final int numBlockers = Singletons.getModel().getGameState().getCombat().getBlockers(a).size(); if (numBlockers > 1) { CombatUtil.executeRampageAbility(a, magnitude, numBlockers); } @@ -2964,7 +2963,7 @@ public class CombatUtil { blocker.addTempAttackBoost(-mag); blocker.addTempDefenseBoost(-mag); - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); System.out.println("Flanking!"); } } // resolve @@ -2976,7 +2975,7 @@ public class CombatUtil { ability2.setStackDescription(sb2.toString()); ability2.setDescription(sb2.toString()); - AllZone.getStack().add(ability2); + Singletons.getModel().getGameState().getStack().add(ability2); Log.debug("Adding Flanking!"); } // flanking @@ -3020,7 +3019,7 @@ public class CombatUtil { crd.addTempAttackBoost(1); crd.addTempDefenseBoost(1); - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } // resolve @@ -3032,7 +3031,7 @@ public class CombatUtil { ability.setDescription(sb.toString()); ability.setActivatingPlayer(c.getController()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } final Player phasingPlayer = c.getController(); @@ -3052,7 +3051,7 @@ public class CombatUtil { fhUntap.setDescription(sbUntap.toString()); fhUntap.setStackDescription(sbUntap.toString()); - AllZone.getStack().addSimultaneousStackEntry(fhUntap); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(fhUntap); // If any Finest Hours, queue up a new combat phase for (int ix = 0; ix < phasingPlayer.getCardsIn(ZoneType.Battlefield, "Finest Hour").size(); ix++) { @@ -3068,7 +3067,7 @@ public class CombatUtil { fhAddCombat.setDescription(sbACom.toString()); fhAddCombat.setStackDescription(sbACom.toString()); - AllZone.getStack().addSimultaneousStackEntry(fhAddCombat); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(fhAddCombat); } } @@ -3107,7 +3106,7 @@ public class CombatUtil { enchantment = CardFactoryUtil.getBestEnchantmentAI(enchantments, this, false); } if ((enchantment != null) && GameState.isCardInPlay(attacker)) { - GameAction.changeZone(AllZone.getZoneOf(enchantment), + GameAction.changeZone(GameState.getZoneOf(enchantment), enchantment.getOwner().getZone(ZoneType.Battlefield), enchantment, null); enchantment.enchantEntity(attacker); } @@ -3122,7 +3121,7 @@ public class CombatUtil { ability4.setDescription(sb4.toString()); ability4.setStackDescription(sb4.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability4); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability4); } // For } } @@ -3164,7 +3163,7 @@ public class CombatUtil { crd.addTempAttackBoost(pump); crd.addTempDefenseBoost(pump); - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } // resolve @@ -3174,7 +3173,7 @@ public class CombatUtil { sb.append(c).append(" - (Rampage) gets +").append(pump).append("/+").append(pump).append(" until EOT."); ability.setStackDescription(sb.toString()); - AllZone.getStack().add(ability); + Singletons.getModel().getGameState().getStack().add(ability); } } diff --git a/src/main/java/forge/game/phase/EndOfTurn.java b/src/main/java/forge/game/phase/EndOfTurn.java index ccc77b293d4..5821a03b83c 100644 --- a/src/main/java/forge/game/phase/EndOfTurn.java +++ b/src/main/java/forge/game/phase/EndOfTurn.java @@ -21,7 +21,6 @@ import java.util.List; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -65,7 +64,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { // reset mustAttackEntity for me Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn().setMustAttackEntity(null); - AllZone.getStaticEffects().rePopulateStateBasedList(); + Singletons.getModel().getGameState().getStaticEffects().rePopulateStateBasedList(); for (final Card c : all) { if (!c.isFaceDown() && c.hasKeyword("At the beginning of the end step, sacrifice CARDNAME.")) { @@ -83,7 +82,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { sac.setStackDescription(sb.toString()); sac.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(sac); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(sac); } if (!c.isFaceDown() && c.hasKeyword("At the beginning of the end step, exile CARDNAME.")) { @@ -101,7 +100,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { exile.setStackDescription(sb.toString()); exile.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(exile); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(exile); } if (!c.isFaceDown() && c.hasKeyword("At the beginning of the end step, destroy CARDNAME.")) { @@ -119,7 +118,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { destroy.setStackDescription(sb.toString()); destroy.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(destroy); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(destroy); } // Berserk is using this, so don't check isFaceDown() @@ -139,7 +138,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { sac.setStackDescription(sb.toString()); sac.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(sac); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(sac); } else { c.removeAllExtrinsicKeyword("At the beginning of the next end step, " @@ -167,7 +166,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { change.setStackDescription(sb.toString()); change.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(change); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(change); } if (c.getName().equals("Erg Raiders") && !c.getDamageHistory().getCreatureAttackedThisTurn() && !c.hasSickness() @@ -186,7 +185,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { change.setStackDescription(sb.toString()); change.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(change); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(change); } if (c.hasKeyword("At the beginning of your end step, return CARDNAME to its owner's hand.") @@ -205,7 +204,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { change.setStackDescription(sb.toString()); change.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(change); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(change); } @@ -223,7 +222,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { change.setDescription("At the beginning of this turn's end step, you lose the game."); change.setActivatingPlayer(activePlayer); - AllZone.getStack().addSimultaneousStackEntry(change); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(change); } this.execute(this.getAt()); @@ -257,7 +256,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { ability.setStackDescription(sb.toString()); ability.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 50721bed90f..923ac09d2ef 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -178,8 +178,8 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { * a {@link forge.game.player.Player} object. */ public final void setPriority(final Player p) { - if (AllZone.getStack() != null) { - AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); + if (Singletons.getModel().getGameState().getStack() != null) { + Singletons.getModel().getGameState().getStack().chooseOrderOfSimultaneousStackEntryAll(); } this.pFirstPriority = p; @@ -346,10 +346,10 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { if (!this.inCombat()) { this.setNeedToNextPhase(true); } else { - AllZone.getCombat().verifyCreaturesInPlay(); + Singletons.getModel().getGameState().getCombat().verifyCreaturesInPlay(); // no first strikers, skip this step - if (!AllZone.getCombat().assignCombatDamage(true)) { + if (!Singletons.getModel().getGameState().getCombat().assignCombatDamage(true)) { this.setNeedToNextPhase(true); } else { Combat.dealAssignedDamage(); @@ -363,9 +363,9 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { if (!this.inCombat()) { this.setNeedToNextPhase(true); } else { - AllZone.getCombat().verifyCreaturesInPlay(); + Singletons.getModel().getGameState().getCombat().verifyCreaturesInPlay(); - if (!AllZone.getCombat().assignCombatDamage(false)) { + if (!Singletons.getModel().getGameState().getCombat().assignCombatDamage(false)) { this.setNeedToNextPhase(true); } else { Combat.dealAssignedDamage(); @@ -377,8 +377,8 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { case COMBAT_END: // End Combat always happens - AllZone.getEndOfCombat().executeUntil(); - AllZone.getEndOfCombat().executeAt(); + Singletons.getModel().getGameState().getEndOfCombat().executeUntil(); + Singletons.getModel().getGameState().getEndOfCombat().executeAt(); CombatUtil.showCombat(); //SDisplayUtil.showTab(EDocID.REPORT_STACK.getDoc()); break; @@ -389,7 +389,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { break; case END_OF_TURN: - AllZone.getEndOfTurn().executeAt(); + Singletons.getModel().getGameState().getEndOfTurn().executeAt(); break; case CLEANUP: @@ -411,7 +411,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { c.clearBlockedThisTurn(); } - AllZone.getEndOfTurn().executeUntil(); + Singletons.getModel().getGameState().getEndOfTurn().executeUntil(); for (Player player : Singletons.getModel().getGameState().getPlayers()) { for (Card c : player.getCardsIn(ZoneType.Hand)) @@ -437,12 +437,12 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { final HashMap runParams = new HashMap(); runParams.put("Phase", phase.Name); runParams.put("Player", turn); - AllZone.getTriggerHandler().runTrigger(TriggerType.Phase, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Phase, runParams); } // This line fixes Combat Damage triggers not going off when they should - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); // UNTAP if (phase != PhaseType.UNTAP) { @@ -469,7 +469,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { this.needToNextPhase = false; // If the Stack isn't empty why is nextPhase being called? - if (AllZone.getStack().size() != 0) { + if (Singletons.getModel().getGameState().getStack().size() != 0) { Log.debug("Phase.nextPhase() is called, but Stack isn't empty."); return; } @@ -484,7 +484,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { } if (this.getPhase() == PhaseType.COMBAT_DECLARE_ATTACKERS) { - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); this.nCombatsThisTurn++; } else if (this.getPhase() == PhaseType.UNTAP) { this.nCombatsThisTurn = 0; @@ -492,7 +492,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { if (this.getPhase() == PhaseType.COMBAT_END) { //SDisplayUtil.showTab(EDocID.REPORT_STACK.getDoc()); - AllZone.getCombat().reset(); + Singletons.getModel().getGameState().getCombat().reset(); this.resetAttackedThisCombat(this.getPlayerTurn()); this.bCombat = false; } @@ -505,7 +505,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { } if (this.is(PhaseType.COMBAT_DECLARE_BLOCKERS)) { - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); } if (this.is(PhaseType.COMBAT_END) && (this.extraCombats > 0)) { @@ -518,9 +518,9 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { this.bCombat = true; this.extraCombats--; - AllZone.getCombat().reset(); - AllZone.getCombat().setAttackingPlayer(player); - AllZone.getCombat().setDefendingPlayer(opp); + Singletons.getModel().getGameState().getCombat().reset(); + Singletons.getModel().getGameState().getCombat().setAttackingPlayer(player); + Singletons.getModel().getGameState().getCombat().setDefendingPlayer(opp); this.phaseIndex = PhaseType.COMBAT_DECLARE_ATTACKERS.Index; } else { if (!this.bRepeat) { // for when Cleanup needs to repeat itself @@ -561,9 +561,9 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { */ private Player handleNextTurn() { - AllZone.getStack().setCardsCastLastTurn(); - AllZone.getStack().clearCardsCastThisTurn(); - AllZone.resetZoneMoveTracking(); + Singletons.getModel().getGameState().getStack().setCardsCastLastTurn(); + Singletons.getModel().getGameState().getStack().clearCardsCastThisTurn(); + GameState.resetZoneMoveTracking(); for( Player p : Singletons.getModel().getGameState().getPlayers() ) { p.resetProwl(); @@ -823,20 +823,20 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { // pass the priority to other player this.setPriorityPlayer(actingPlayer.getOpponent()); AllZone.getInputControl().resetInput(); - AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); + Singletons.getModel().getGameState().getStack().chooseOrderOfSimultaneousStackEntryAll(); } else { - if (AllZone.getStack().size() == 0) { + if (Singletons.getModel().getGameState().getStack().size() == 0) { // end phase this.needToNextPhase = true; this.pPlayerPriority = this.getPlayerTurn(); // this needs to be // set early // as we exit the phase } else { - if (!AllZone.getStack().hasSimultaneousStackEntries()) { - AllZone.getStack().resolveStack(); + if (!Singletons.getModel().getGameState().getStack().hasSimultaneousStackEntries()) { + Singletons.getModel().getGameState().getStack().resolveStack(); } } - AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); + Singletons.getModel().getGameState().getStack().chooseOrderOfSimultaneousStackEntryAll(); } } @@ -918,7 +918,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { */ public static boolean canCastSorcery(final Player player) { PhaseHandler now = Singletons.getModel().getGameState().getPhaseHandler(); - return now.isPlayerTurn(player) && now.getPhase().isMain() && AllZone.getStack().size() == 0; + return now.isPlayerTurn(player) && now.getPhase().isMain() && Singletons.getModel().getGameState().getStack().size() == 0; } /** @@ -937,7 +937,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { PhaseHandler now = Singletons.getModel().getGameState().getPhaseHandler(); final Card source = sa.getRootSpellAbility().getSourceCard(); boolean onlyThis = true; - if (AllZone.getStack().size() != 0) { + if (Singletons.getModel().getGameState().getStack().size() != 0) { for (final Card card : GameState.getCardsIn(ZoneType.Stack)) { if (card != source) { onlyThis = false; diff --git a/src/main/java/forge/game/phase/PhaseUtil.java b/src/main/java/forge/game/phase/PhaseUtil.java index b8c2fc6fb5c..dccccf4aa6e 100644 --- a/src/main/java/forge/game/phase/PhaseUtil.java +++ b/src/main/java/forge/game/phase/PhaseUtil.java @@ -90,9 +90,9 @@ public class PhaseUtil { Singletons.getModel().getGameState().notifyNextTurn(); CMessage.SINGLETON_INSTANCE.updateGameInfo(Singletons.getModel().getMatch()); - AllZone.getCombat().reset(); - AllZone.getCombat().setAttackingPlayer(turn); - AllZone.getCombat().setDefendingPlayer(turn.getOpponent()); + Singletons.getModel().getGameState().getCombat().reset(); + Singletons.getModel().getGameState().getCombat().setAttackingPlayer(turn); + Singletons.getModel().getGameState().getCombat().setDefendingPlayer(turn.getOpponent()); // Tokens starting game in play now actually suffer from Sum. Sickness again final List list = turn.getCardsIncludePhasingIn(ZoneType.Battlefield); @@ -220,7 +220,7 @@ public class PhaseUtil { *

*/ public static void verifyCombat() { - AllZone.getCombat().verifyCreaturesInPlay(); + Singletons.getModel().getGameState().getCombat().verifyCreaturesInPlay(); } /** @@ -290,16 +290,16 @@ public class PhaseUtil { PhaseUtil.verifyCombat(); // Handles removing cards like Mogg Flunkies from combat if group attack didn't occur - final List filterList = AllZone.getCombat().getAttackerList(); + final List filterList = Singletons.getModel().getGameState().getCombat().getAttackerList(); for (Card c : filterList) { if (c.hasKeyword("CARDNAME can't attack or block alone.") && c.isAttacking()) { - if (AllZone.getCombat().getAttackers().size() < 2) { - AllZone.getCombat().removeFromCombat(c); + if (Singletons.getModel().getGameState().getCombat().getAttackers().size() < 2) { + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); } } } - final List list = AllZone.getCombat().getAttackerList(); + final List list = Singletons.getModel().getGameState().getCombat().getAttackerList(); // TODO move propaganda to happen as the Attacker is Declared // Remove illegal Propaganda attacks first only for attacking the Player @@ -318,12 +318,12 @@ public class PhaseUtil { *

*/ public static void handleAttackingTriggers() { - final List list = AllZone.getCombat().getAttackerList(); - AllZone.getStack().freezeStack(); + final List list = Singletons.getModel().getGameState().getCombat().getAttackerList(); + Singletons.getModel().getGameState().getStack().freezeStack(); // Then run other Attacker bonuses // check for exalted: if (list.size() == 1) { - final Player attackingPlayer = AllZone.getCombat().getAttackingPlayer(); + final Player attackingPlayer = Singletons.getModel().getGameState().getCombat().getAttackingPlayer(); int exaltedMagnitude = 0; for (Card card : attackingPlayer.getCardsIn(ZoneType.Battlefield)) { exaltedMagnitude += card.getKeywordAmount("Exalted"); @@ -340,13 +340,13 @@ public class PhaseUtil { final HashMap runParams = new HashMap(); runParams.put("Attackers", list); - runParams.put("AttackingPlayer", AllZone.getCombat().getAttackingPlayer()); - AllZone.getTriggerHandler().runTrigger(TriggerType.AttackersDeclared, runParams); + runParams.put("AttackingPlayer", Singletons.getModel().getGameState().getCombat().getAttackingPlayer()); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.AttackersDeclared, runParams); for (final Card c : list) { CombatUtil.checkDeclareAttackers(c); } - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); } /** @@ -358,21 +358,21 @@ public class PhaseUtil { PhaseUtil.verifyCombat(); // Handles removing cards like Mogg Flunkies from combat if group block didn't occur - final List filterList = AllZone.getCombat().getAllBlockers(); + final List filterList = Singletons.getModel().getGameState().getCombat().getAllBlockers(); for (Card c : filterList) { if (c.hasKeyword("CARDNAME can't attack or block alone.") && c.isBlocking()) { - if (AllZone.getCombat().getAllBlockers().size() < 2) { - AllZone.getCombat().undoBlockingAssignment(c); + if (Singletons.getModel().getGameState().getCombat().getAllBlockers().size() < 2) { + Singletons.getModel().getGameState().getCombat().undoBlockingAssignment(c); } } } - AllZone.getStack().freezeStack(); + Singletons.getModel().getGameState().getStack().freezeStack(); - AllZone.getCombat().setUnblocked(); + Singletons.getModel().getGameState().getCombat().setUnblocked(); List list = new ArrayList(); - list.addAll(AllZone.getCombat().getAllBlockers()); + list.addAll(Singletons.getModel().getGameState().getCombat().getAllBlockers()); list = CardLists.filter(list, new Predicate() { @Override @@ -381,18 +381,18 @@ public class PhaseUtil { } }); - final List attList = AllZone.getCombat().getAttackerList(); + final List attList = Singletons.getModel().getGameState().getCombat().getAttackerList(); CombatUtil.checkDeclareBlockers(list); for (final Card a : attList) { - final List blockList = AllZone.getCombat().getBlockers(a); + final List blockList = Singletons.getModel().getGameState().getCombat().getBlockers(a); for (final Card b : blockList) { CombatUtil.checkBlockedAttackers(a, b); } } - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); AllZone.getGameLog().add("Combat", CombatUtil.getCombatBlockForLog(), 1); } diff --git a/src/main/java/forge/game/phase/Upkeep.java b/src/main/java/forge/game/phase/Upkeep.java index bf549f56c12..893c732c188 100644 --- a/src/main/java/forge/game/phase/Upkeep.java +++ b/src/main/java/forge/game/phase/Upkeep.java @@ -77,7 +77,7 @@ public class Upkeep extends Phase implements java.io.Serializable { */ @Override public final void executeAt() { - AllZone.getStack().freezeStack(); + Singletons.getModel().getGameState().getStack().freezeStack(); Upkeep.upkeepBraidOfFire(); Upkeep.upkeepSlowtrips(); // for "Draw a card at the beginning of the next turn's upkeep." @@ -114,7 +114,7 @@ public class Upkeep extends Phase implements java.io.Serializable { Upkeep.upkeepCurseOfMisfortunes(); Upkeep.upkeepPowerSurge(); - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); } // UPKEEP CARDS: @@ -154,7 +154,7 @@ public class Upkeep extends Phase implements java.io.Serializable { }; upkeepAbility.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(upkeepAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(upkeepAbility); } } // upkeepBraidOfFire @@ -212,7 +212,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sacAbility.setStackDescription(sb.toString()); sacAbility.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(sacAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(sacAbility); c.removeAllExtrinsicKeyword("(Echo unpaid)"); } @@ -244,7 +244,7 @@ public class Upkeep extends Phase implements java.io.Serializable { slowtrip.setStackDescription(card + " - Draw a card."); slowtrip.setDescription(card + " - Draw a card."); - AllZone.getStack().addSimultaneousStackEntry(slowtrip); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(slowtrip); } player.clearSlowtripList(); @@ -269,7 +269,7 @@ public class Upkeep extends Phase implements java.io.Serializable { slowtrip.setStackDescription(card.getName() + " - Draw a card"); slowtrip.setDescription(card + " - Draw a card."); - AllZone.getStack().addSimultaneousStackEntry(slowtrip); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(slowtrip); } opponent.clearSlowtripList(); @@ -334,7 +334,7 @@ public class Upkeep extends Phase implements java.io.Serializable { upkeepAbility.setStackDescription(sb.toString()); upkeepAbility.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(upkeepAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(upkeepAbility); } // destroy // sacrifice @@ -389,7 +389,7 @@ public class Upkeep extends Phase implements java.io.Serializable { upkeepAbility.setStackDescription(sb.toString()); upkeepAbility.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(upkeepAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(upkeepAbility); } // sacrifice // destroy @@ -434,7 +434,7 @@ public class Upkeep extends Phase implements java.io.Serializable { upkeepAbility.setStackDescription(sb.toString()); upkeepAbility.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(upkeepAbility); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(upkeepAbility); } // destroy } @@ -536,7 +536,7 @@ public class Upkeep extends Phase implements java.io.Serializable { final StringBuilder sb = new StringBuilder(); sb.append(abyss.getName()).append(" - destroy a nonartifact creature of your choice."); sacrificeCreature.setStackDescription(sb.toString()); - AllZone.getStack().addAndUnfreeze(sacrificeCreature); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(sacrificeCreature); } // end for } // The Abyss @@ -610,7 +610,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(c.getName()).append(" - destroy 1 creature with lowest power."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // end for } // upkeepDropOfHoney() @@ -661,7 +661,7 @@ public class Upkeep extends Phase implements java.io.Serializable { final Ability pay = new Ability(c, "0") { @Override public void resolve() { - if (AllZone.getZoneOf(c).is(ZoneType.Battlefield)) { + if (GameState.getZoneOf(c).is(ZoneType.Battlefield)) { final StringBuilder cost = new StringBuilder(); cost.append("Pay cost for ").append(c).append("\r\n"); GameActionUtil.payManaDuringAbilityResolve(cost.toString(), noPay.getManaCost(), @@ -671,7 +671,7 @@ public class Upkeep extends Phase implements java.io.Serializable { }; // end pay ability pay.setStackDescription("Demonic Hordes - Upkeep Cost"); - AllZone.getStack().addSimultaneousStackEntry(pay); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(pay); } // end choice else { @@ -679,7 +679,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(c.getName()).append(" - is tapped and you must sacrifice a land of opponent's choice"); noPay.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(noPay); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(noPay); } } // end human @@ -693,10 +693,10 @@ public class Upkeep extends Phase implements java.io.Serializable { }; computerPay.setStackDescription("Computer pays Demonic Hordes upkeep cost"); - AllZone.getStack().addSimultaneousStackEntry(computerPay); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(computerPay); } else { - AllZone.getStack().addSimultaneousStackEntry(noPay); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(noPay); } } // end computer @@ -791,7 +791,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepInkDissolver() @@ -876,7 +876,7 @@ public class Upkeep extends Phase implements java.io.Serializable { k.removeExtrinsicKeyword("Vigilance"); } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } // resolve() @@ -893,7 +893,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepKithkinZephyrnaut() @@ -993,7 +993,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepLeafCrownedElder() @@ -1073,7 +1073,7 @@ public class Upkeep extends Phase implements java.io.Serializable { k.addTempDefenseBoost(-1); } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } // resolve() @@ -1090,7 +1090,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepMudbuttonClanger() @@ -1175,7 +1175,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepNightshadeSchemers() @@ -1276,7 +1276,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepPyroclastConsul() @@ -1368,7 +1368,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepSensationGorger() @@ -1454,7 +1454,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepSqueakingPieGrubfellows() @@ -1538,7 +1538,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepWanderingGraybeard() @@ -1626,7 +1626,7 @@ public class Upkeep extends Phase implements java.io.Serializable { } } }; - AllZone.getEndOfTurn().addUntil(untilEOT); + Singletons.getModel().getGameState().getEndOfTurn().addUntil(untilEOT); } } // resolve() @@ -1643,7 +1643,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepWaterspoutWeavers() @@ -1727,7 +1727,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeepWinnowerPatrol() @@ -1814,7 +1814,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(" triggers Kinship"); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // for } // upkeep_Wolf_Skull_Shaman() @@ -1883,7 +1883,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setStackDescription(sb.toString()); ability.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -1925,7 +1925,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setStackDescription(sb.toString()); ability.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -2006,7 +2006,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setStackDescription(sb.toString()); ability.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -2055,7 +2055,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setStackDescription(sb.toString()); ability.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -2094,7 +2094,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setStackDescription(sb.toString()); ability.setDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -2131,7 +2131,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setDescription(sb.toString()); if (damage > 0) { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } // for } // upkeepPowerSurge() @@ -2222,7 +2222,7 @@ public class Upkeep extends Phase implements java.io.Serializable { ability.setDescription(source.getName() + " - " + player + " taps X artifacts, creatures or lands he or she controls."); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } // foreach(wire) } // upkeepTangleWire() @@ -2257,7 +2257,7 @@ public class Upkeep extends Phase implements java.io.Serializable { sb.append(player).append("."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } @@ -2304,7 +2304,7 @@ public class Upkeep extends Phase implements java.io.Serializable { enchantment = CardFactoryUtil.getBestEnchantmentAI(enchantmentsInLibrary, this, false); } if (enchantment != null) { - GameAction.changeZone(AllZone.getZoneOf(enchantment), + GameAction.changeZone(GameState.getZoneOf(enchantment), enchantment.getOwner().getZone(ZoneType.Battlefield), enchantment, null); enchantment.enchantEntity(source.getEnchantingPlayer()); } @@ -2318,7 +2318,7 @@ public class Upkeep extends Phase implements java.io.Serializable { + " the same name as a Curse attached to enchanted player, " + "put it onto the battlefield attached to that player, then shuffle you library."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } // upkeepCurseOfMisfortunes diff --git a/src/main/java/forge/game/player/ComputerAIGeneral.java b/src/main/java/forge/game/player/ComputerAIGeneral.java index 9833fdeab28..1f29366fb75 100644 --- a/src/main/java/forge/game/player/ComputerAIGeneral.java +++ b/src/main/java/forge/game/player/ComputerAIGeneral.java @@ -23,7 +23,6 @@ import java.util.List; import com.esotericsoftware.minlog.Log; -import forge.AllZone; import forge.Card; import forge.Singletons; @@ -285,9 +284,9 @@ public class ComputerAIGeneral implements Computer { public final void declareAttackers() { // 12/2/10(sol) the decision making here has moved to getAttackers() - AllZone.setCombat(ComputerUtil.getAttackers(player)); + Singletons.getModel().getGameState().setCombat(ComputerUtil.getAttackers(player)); - final List att = AllZone.getCombat().getAttackers(); + final List att = Singletons.getModel().getGameState().getCombat().getAttackers(); if (!att.isEmpty()) { Singletons.getModel().getGameState().getPhaseHandler().setCombat(true); } @@ -314,9 +313,9 @@ public class ComputerAIGeneral implements Computer { public final void declareBlockers() { final List blockers = GameState.getCreaturesInPlay(player); - AllZone.setCombat(ComputerUtilBlock.getBlockers(player, AllZone.getCombat(), blockers)); + Singletons.getModel().getGameState().setCombat(ComputerUtilBlock.getBlockers(player, Singletons.getModel().getGameState().getCombat(), blockers)); - CombatUtil.orderMultipleCombatants(AllZone.getCombat()); + CombatUtil.orderMultipleCombatants(Singletons.getModel().getGameState().getCombat()); Singletons.getModel().getGameState().getPhaseHandler().setNeedToNextPhase(true); } @@ -340,13 +339,13 @@ public class ComputerAIGeneral implements Computer { */ @Override public final void playSpellAbilities() { - if (AllZone.getStack().isEmpty()) { + if (Singletons.getModel().getGameState().getStack().isEmpty()) { this.playSpellAbilitiesStackEmpty(); return; } // if top of stack is owned by me - if (AllZone.getStack().peekInstance().getActivatingPlayer().isComputer()) { + if (Singletons.getModel().getGameState().getStack().peekInstance().getActivatingPlayer().isComputer()) { // probably should let my stuff resolve to force Human to respond to // it Singletons.getModel().getGameState().getPhaseHandler().passPriority(); diff --git a/src/main/java/forge/game/player/ComputerAIInput.java b/src/main/java/forge/game/player/ComputerAIInput.java index 54d57248a57..f8f704c7a77 100644 --- a/src/main/java/forge/game/player/ComputerAIInput.java +++ b/src/main/java/forge/game/player/ComputerAIInput.java @@ -19,7 +19,6 @@ package forge.game.player; import com.esotericsoftware.minlog.Log; -import forge.AllZone; import forge.Singletons; import forge.control.input.Input; import forge.game.phase.PhaseType; @@ -94,7 +93,7 @@ public class ComputerAIInput extends Input { // TODO instead of setNextPhase, pass priority final PhaseType phase = Singletons.getModel().getGameState().getPhaseHandler().getPhase(); - if (AllZone.getStack().size() > 0) { + if (Singletons.getModel().getGameState().getStack().size() > 0) { this.computer.playSpellAbilities(); } else { switch(phase) { diff --git a/src/main/java/forge/game/player/ComputerUtil.java b/src/main/java/forge/game/player/ComputerUtil.java index 570bb1641d4..8ca999d55c1 100644 --- a/src/main/java/forge/game/player/ComputerUtil.java +++ b/src/main/java/forge/game/player/ComputerUtil.java @@ -27,7 +27,6 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import forge.AllZone; import forge.Card; import forge.CardLists; import forge.CardPredicates; @@ -138,7 +137,7 @@ public class ComputerUtil { return false; } - AllZone.getStack().freezeStack(); + Singletons.getModel().getGameState().getStack().freezeStack(); final Card source = sa.getSourceCard(); if (sa.isSpell() && !source.isCopiedSpell()) { @@ -150,12 +149,12 @@ public class ComputerUtil { if (cost == null) { ComputerUtil.payManaCost(ai, sa); sa.getBeforePayManaAI().execute(); - AllZone.getStack().addAndUnfreeze(sa); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(sa); return true; } else { final CostPayment pay = new CostPayment(cost, sa); if (pay.payComputerCosts(ai)) { - AllZone.getStack().addAndUnfreeze(sa); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(sa); if (sa.getSplicedCards() != null && !sa.getSplicedCards().isEmpty()) { GuiChoose.oneOrNone("Computer reveals spliced cards:", sa.getSplicedCards()); } @@ -292,7 +291,7 @@ public class ComputerUtil { // TODO - "Look" at Targeted SA and "calculate" the threshold // if (bestRestriction < targetedThreshold) return false; - AllZone.getStack().freezeStack(); + Singletons.getModel().getGameState().getStack().freezeStack(); final Card source = bestSA.getSourceCard(); if (bestSA.isSpell() && !source.isCopiedSpell()) { @@ -305,11 +304,11 @@ public class ComputerUtil { // Honestly Counterspells shouldn't use this branch ComputerUtil.payManaCost(ai, bestSA); bestSA.getBeforePayManaAI().execute(); - AllZone.getStack().addAndUnfreeze(bestSA); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(bestSA); } else { final CostPayment pay = new CostPayment(cost, bestSA); if (pay.payComputerCosts(ai)) { - AllZone.getStack().addAndUnfreeze(bestSA); + Singletons.getModel().getGameState().getStack().addAndUnfreeze(bestSA); } } @@ -335,11 +334,11 @@ public class ComputerUtil { final Cost cost = sa.getPayCosts(); if (cost == null) { ComputerUtil.payManaCost(ai, sa); - AllZone.getStack().add(sa); + Singletons.getModel().getGameState().getStack().add(sa); } else { final CostPayment pay = new CostPayment(cost, sa); if (pay.payComputerCosts(ai)) { - AllZone.getStack().add(sa); + Singletons.getModel().getGameState().getStack().add(sa); } } } @@ -361,7 +360,7 @@ public class ComputerUtil { sa.setSourceCard(Singletons.getModel().getGameAction().moveToStack(source)); } - AllZone.getStack().add(sa); + Singletons.getModel().getGameState().getStack().add(sa); } /** @@ -401,7 +400,7 @@ public class ComputerUtil { final CostPayment pay = new CostPayment(cost, newSA); pay.payComputerCosts(ai); - AllZone.getStack().add(newSA); + Singletons.getModel().getGameState().getStack().add(newSA); } /** @@ -1360,7 +1359,7 @@ public class ComputerUtil { landList.remove(land); ai.playLand(land); - if (AllZone.getStack().size() != 0) { + if (Singletons.getModel().getGameState().getStack().size() != 0) { return true; } } @@ -1613,8 +1612,8 @@ public class ComputerUtil { final Card target, final int amount) { List typeList = new ArrayList(); if (zone.equals(ZoneType.Stack)) { - for (int i = 0; i < AllZone.getStack().size(); i++) { - typeList.add(AllZone.getStack().peekAbility(i).getSourceCard()); + for (int i = 0; i < Singletons.getModel().getGameState().getStack().size(); i++) { + typeList.add(Singletons.getModel().getGameState().getStack().peekAbility(i).getSourceCard()); typeList = CardLists.getValidCards(typeList, type.split(","), activate.getController(), activate); } } else { @@ -1783,7 +1782,7 @@ public class ComputerUtil { public static Combat getBlockers(final Player ai) { final List blockers = ai.getCardsIn(ZoneType.Battlefield); - return ComputerUtilBlock.getBlockers(ai, AllZone.getCombat(), blockers); + return ComputerUtilBlock.getBlockers(ai, Singletons.getModel().getGameState().getCombat(), blockers); } /** diff --git a/src/main/java/forge/game/player/ComputerUtilAttack.java b/src/main/java/forge/game/player/ComputerUtilAttack.java index 28a9668e318..d5c5352647b 100644 --- a/src/main/java/forge/game/player/ComputerUtilAttack.java +++ b/src/main/java/forge/game/player/ComputerUtilAttack.java @@ -23,7 +23,6 @@ import java.util.Random; import com.google.common.base.Predicate; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -468,7 +467,7 @@ public class ComputerUtilAttack { final Object entity = ai.getMustAttackEntity(); if (null != entity) { - final List defenders = AllZone.getCombat().getDefenders(); + final List defenders = Singletons.getModel().getGameState().getCombat().getDefenders(); n = defenders.indexOf(entity); if (-1 == n) { System.out.println("getMustAttackEntity() returned something not in defenders."); @@ -503,11 +502,11 @@ public class ComputerUtilAttack { this.random.setSeed(Singletons.getModel().getGameState().getPhaseHandler().getTurn() + this.randomInt); final Combat combat = new Combat(); - combat.setAttackingPlayer(AllZone.getCombat().getAttackingPlayer()); - combat.setDefendingPlayer(AllZone.getCombat().getDefendingPlayer()); + combat.setAttackingPlayer(Singletons.getModel().getGameState().getCombat().getAttackingPlayer()); + combat.setDefendingPlayer(Singletons.getModel().getGameState().getCombat().getDefendingPlayer()); - AllZone.getCombat().initiatePossibleDefenders(AllZone.getCombat().getDefendingPlayer()); - combat.setDefenders(AllZone.getCombat().getDefenders()); + Singletons.getModel().getGameState().getCombat().initiatePossibleDefenders(Singletons.getModel().getGameState().getCombat().getDefendingPlayer()); + combat.setDefenders(Singletons.getModel().getGameState().getCombat().getDefenders()); if (this.attackers.isEmpty()) { return combat; diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 4a7f8e03f90..47991c635c8 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -322,7 +322,7 @@ public abstract class Player extends GameEntity implements Comparable { repParams.put("Event", "GainLife"); repParams.put("Affected", this); repParams.put("LifeGained", toGain); - if (AllZone.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return false; } @@ -341,7 +341,7 @@ public abstract class Player extends GameEntity implements Comparable { final HashMap runParams = new HashMap(); runParams.put("Player", this); runParams.put("LifeAmount", lifeGain); - AllZone.getTriggerHandler().runTrigger(TriggerType.LifeGained, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.LifeGained, runParams); } else { System.out.println("Player - trying to gain negative or 0 life"); } @@ -398,7 +398,7 @@ public abstract class Player extends GameEntity implements Comparable { final HashMap runParams = new HashMap(); runParams.put("Player", this); runParams.put("LifeAmount", toLose); - AllZone.getTriggerHandler().runTrigger(TriggerType.LifeLost, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.LifeLost, runParams); return lifeLost; } @@ -537,7 +537,7 @@ public abstract class Player extends GameEntity implements Comparable { runParams.put("DamageTarget", this); runParams.put("DamageAmount", damageToDo); runParams.put("IsCombatDamage", isCombat); - AllZone.getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams); return true; } @@ -747,7 +747,7 @@ public abstract class Player extends GameEntity implements Comparable { repParams.put("DamageAmount", damage); repParams.put("IsCombat", isCombat); - if (AllZone.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return 0; } @@ -797,7 +797,7 @@ public abstract class Player extends GameEntity implements Comparable { repParams.put("IsCombat", isCombat); repParams.put("Prevention", true); - if (AllZone.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return 0; } @@ -1256,7 +1256,7 @@ public abstract class Player extends GameEntity implements Comparable { repRunParams.put("Event", "Draw"); repRunParams.put("Affected", this); - if (AllZone.getReplacementHandler().run(repRunParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(repRunParams) != ReplacementResult.NotReplaced) { return drawn; } @@ -1295,7 +1295,7 @@ public abstract class Player extends GameEntity implements Comparable { final HashMap runParams = new HashMap(); runParams.put("Card", c); runParams.put("Number", this.numDrawnThisTurn); - AllZone.getTriggerHandler().runTrigger(TriggerType.Drawn, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Drawn, runParams); } // lose: else if (!Preferences.DEV_MODE || Singletons.getModel().getPreferences().getPrefBoolean(FPref.DEV_MILLING_LOSS)) { @@ -1335,7 +1335,7 @@ public abstract class Player extends GameEntity implements Comparable { List result; if (zoneType == ZoneType.Stack) { result = new ArrayList(); - for (Card c : AllZone.getStackZone().getCards()) { + for (Card c : Singletons.getModel().getGameState().getStackZone().getCards()) { if (c.getOwner().equals(this)) { result.add(c); } @@ -1570,7 +1570,7 @@ public abstract class Player extends GameEntity implements Comparable { runParams.put("Player", this); runParams.put("Card", c); runParams.put("Cause", cause); - AllZone.getTriggerHandler().runTrigger(TriggerType.Discarded, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Discarded, runParams); } // end doDiscard @@ -1744,7 +1744,7 @@ public abstract class Player extends GameEntity implements Comparable { // Run triggers final HashMap runParams = new HashMap(); runParams.put("Player", this); - AllZone.getTriggerHandler().runTrigger(TriggerType.Shuffled, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Shuffled, runParams); } // shuffle // ////////////////////////////// @@ -1807,10 +1807,10 @@ public abstract class Player extends GameEntity implements Comparable { // Run triggers final HashMap runParams = new HashMap(); runParams.put("Card", land); - AllZone.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams); } - AllZone.getStack().unfreezeStack(); + Singletons.getModel().getGameState().getStack().unfreezeStack(); } /** @@ -2131,7 +2131,7 @@ public abstract class Player extends GameEntity implements Comparable { runParams.put("Affected", this); runParams.put("Event", "GameLoss"); - if (AllZone.getReplacementHandler().run(runParams) != ReplacementResult.NotReplaced) { + if (Singletons.getModel().getGameState().getReplacementHandler().run(runParams) != ReplacementResult.NotReplaced) { return false; } } diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java index 7b72763f751..6670419c4fe 100644 --- a/src/main/java/forge/game/zone/MagicStack.java +++ b/src/main/java/forge/game/zone/MagicStack.java @@ -717,23 +717,23 @@ public class MagicStack extends MyObservable { runParams.put("Player", sp.getSourceCard().getController()); runParams.put("Activator", sp.getActivatingPlayer()); runParams.put("CastSA", sp); - AllZone.getTriggerHandler().runTrigger(TriggerType.SpellAbilityCast, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.SpellAbilityCast, runParams); // Run SpellCast triggers if (sp.isSpell()) { - AllZone.getTriggerHandler().runTrigger(TriggerType.SpellCast, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.SpellCast, runParams); } // Run AbilityCast triggers if (sp.isAbility() && !sp.isTrigger()) { - AllZone.getTriggerHandler().runTrigger(TriggerType.AbilityCast, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.AbilityCast, runParams); } // Run Cycled triggers if (sp.isCycling()) { runParams.clear(); runParams.put("Card", sp.getSourceCard()); - AllZone.getTriggerHandler().runTrigger(TriggerType.Cycled, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.Cycled, runParams); } // Run BecomesTarget triggers @@ -745,7 +745,7 @@ public class MagicStack extends MyObservable { for (final Object tgt : tc.getTargets()) { runParams.put("Target", tgt); - AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); } } } @@ -756,17 +756,17 @@ public class MagicStack extends MyObservable { else if (sp.getTargetCard() != null) { runParams.put("Target", sp.getTargetCard()); - AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); } else if ((sp.getTargetList() != null) && (sp.getTargetList().size() > 0)) { for (final Card ctgt : sp.getTargetList()) { runParams.put("Target", ctgt); - AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); } } else if (sp.getTargetPlayer() != null) { runParams.put("Target", sp.getTargetPlayer()); - AllZone.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); + Singletons.getModel().getGameState().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams); } } @@ -797,8 +797,8 @@ public class MagicStack extends MyObservable { final SpellAbility counter = new Ability(bazaar, "0") { @Override public void resolve() { - if (AllZone.getStack().size() > 0) { - AllZone.getStack().pop(); + if (Singletons.getModel().getGameState().getStack().size() > 0) { + Singletons.getModel().getGameState().getStack().pop(); } } // resolve() }; // SpellAbility @@ -911,7 +911,7 @@ public class MagicStack extends MyObservable { sa.getSourceCard().setXManaCostPaid(0); if (source.hasStartOfKeyword("Haunt") && !source.isCreature() - && AllZone.getZoneOf(source).is(ZoneType.Graveyard)) { + && GameState.getZoneOf(source).is(ZoneType.Graveyard)) { final List creats = GameState.getCreaturesInPlay(); final Ability haunterDiesWork = new Ability(source, "0") { @Override @@ -994,7 +994,7 @@ public class MagicStack extends MyObservable { sa.setFlashBackAbility(false); } else if (source.hasKeyword("Rebound") && source.getCastFrom() == ZoneType.Hand - && AllZone.getZoneOf(source).is(ZoneType.Stack) + && GameState.getZoneOf(source).is(ZoneType.Stack) && source.getOwner().equals(source.getController())) //"If you cast this spell from your hand" { @@ -1010,7 +1010,7 @@ public class MagicStack extends MyObservable { "| TriggerDescription$ At the beginning of your next upkeep, you may cast " + source.toString() + " without paying it's manacost.", source, true); - AllZone.getTriggerHandler().registerDelayedTrigger(reboundTrigger); + Singletons.getModel().getGameState().getTriggerHandler().registerDelayedTrigger(reboundTrigger); } // If Spell and still on the Stack then let it goto the graveyard or diff --git a/src/main/java/forge/game/zone/PlayerZone.java b/src/main/java/forge/game/zone/PlayerZone.java index 063ddc770cb..c8734559f4b 100644 --- a/src/main/java/forge/game/zone/PlayerZone.java +++ b/src/main/java/forge/game/zone/PlayerZone.java @@ -25,11 +25,11 @@ import java.util.List; import java.util.Observable; import java.util.Observer; -import forge.AllZone; import forge.Card; import forge.Singletons; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.Player; import forge.util.MyObservable; @@ -83,7 +83,7 @@ public class PlayerZone extends MyObservable implements IPlayerZone, Observer, j // don't want to log those. if (!c.isImmutable()) { this.cardsAddedThisTurn.add(c); - final PlayerZone zone = AllZone.getZoneOf(c); + final PlayerZone zone = GameState.getZoneOf(c); if (zone != null) { this.cardsAddedThisTurnSource.add(zone.getZoneType()); } else { @@ -112,9 +112,9 @@ public class PlayerZone extends MyObservable implements IPlayerZone, Observer, j c.setTurnInZone(Singletons.getModel().getGameState().getPhaseHandler().getTurn()); if (!this.is(ZoneType.Battlefield) && c.isTapped()) { - AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Untaps); c.untap(); - AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Untaps); } this.cardList.add(c); @@ -163,7 +163,7 @@ public class PlayerZone extends MyObservable implements IPlayerZone, Observer, j // don't want to log those. if (!c.isImmutable()) { this.cardsAddedThisTurn.add(c); - final PlayerZone zone = AllZone.getZoneOf(c); + final PlayerZone zone = GameState.getZoneOf(c); if (zone != null) { this.cardsAddedThisTurnSource.add(zone.getZoneType()); } else { @@ -172,9 +172,9 @@ public class PlayerZone extends MyObservable implements IPlayerZone, Observer, j } if (!this.is(ZoneType.Battlefield) && c.isTapped()) { - AllZone.getTriggerHandler().suppressMode(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.Untaps); c.untap(); - AllZone.getTriggerHandler().clearSuppression(TriggerType.Untaps); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.Untaps); } this.cardList.add(index, c); diff --git a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java index a31d4798fa4..753b80f3dd4 100644 --- a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java +++ b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java @@ -24,7 +24,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import forge.AllZone; import forge.Card; import forge.CardLists; @@ -142,7 +141,7 @@ public class PlayerZoneBattlefield extends PlayerZone { sb.append(source).append(" - tap all lands "); sb.append(tisLand.getController()).append(" controls."); ability.setStackDescription(sb.toString()); - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } @@ -167,16 +166,16 @@ public class PlayerZoneBattlefield extends PlayerZone { // (pLands - 1) because this land is in play, and the // ability is before it is in play if (oLands.size() <= (pLands.size() - 1)) { - AllZone.getStack().addSimultaneousStackEntry(ability); + Singletons.getModel().getGameState().getStack().addSimultaneousStackEntry(ability); } } } // isLand() } - if (AllZone.getStaticEffects().getCardToEffectsList().containsKey(c.getName())) { - final String[] effects = AllZone.getStaticEffects().getCardToEffectsList().get(c.getName()); + if (Singletons.getModel().getGameState().getStaticEffects().getCardToEffectsList().containsKey(c.getName())) { + final String[] effects = Singletons.getModel().getGameState().getStaticEffects().getCardToEffectsList().get(c.getName()); for (final String effect : effects) { - AllZone.getStaticEffects().addStateBasedEffect(effect); + Singletons.getModel().getGameState().getStaticEffects().addStateBasedEffect(effect); } } } // end add() @@ -233,12 +232,12 @@ public class PlayerZoneBattlefield extends PlayerZone { c.leavesPlay(); } - if (AllZone.getStaticEffects().getCardToEffectsList().containsKey(c.getName())) { - final String[] effects = AllZone.getStaticEffects().getCardToEffectsList().get(c.getName()); + if (Singletons.getModel().getGameState().getStaticEffects().getCardToEffectsList().containsKey(c.getName())) { + final String[] effects = Singletons.getModel().getGameState().getStaticEffects().getCardToEffectsList().get(c.getName()); String tempEffect = ""; for (final String effect : effects) { tempEffect = effect; - AllZone.getStaticEffects().removeStateBasedEffect(effect); + Singletons.getModel().getGameState().getStaticEffects().removeStateBasedEffect(effect); // this is to make sure cards reset correctly final Command comm = GameActionUtil.getCommands().get(tempEffect); comm.execute(); diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java index 8899f91b48a..213856061ba 100644 --- a/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/src/main/java/forge/gui/GuiDisplayUtil.java @@ -504,8 +504,8 @@ public final class GuiDisplayUtil { computerDevExileSetup = GuiDisplayUtil.devProcessCardsForZone(computerSetupExile, ai); } - AllZone.getTriggerHandler().suppressMode(TriggerType.ChangesZone); - AllZone.getCombat().reset(); + Singletons.getModel().getGameState().getTriggerHandler().suppressMode(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getCombat().reset(); for (final Card c : humanDevSetup) { human.getZone(ZoneType.Hand).add(c); Singletons.getModel().getGameAction().moveToPlay(c); @@ -546,7 +546,7 @@ public final class GuiDisplayUtil { ai.getZone(ZoneType.Exile).setCards(computerDevExileSetup); } - AllZone.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + Singletons.getModel().getGameState().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); if (setComputerLife > 0) { ai.setLife(setComputerLife, null); diff --git a/src/main/java/forge/gui/match/TargetingOverlay.java b/src/main/java/forge/gui/match/TargetingOverlay.java index 3afe4c6e714..fec0fad29aa 100644 --- a/src/main/java/forge/gui/match/TargetingOverlay.java +++ b/src/main/java/forge/gui/match/TargetingOverlay.java @@ -29,8 +29,8 @@ import java.util.Map; import javax.swing.JPanel; -import forge.AllZone; import forge.Card; +import forge.Singletons; import forge.control.FControl; import forge.gui.match.nonsingleton.CField; import forge.gui.toolbox.FSkin; @@ -108,8 +108,8 @@ public enum TargetingOverlay { } // Combat cards - for (Card attackingCard : AllZone.getCombat().getAttackers()) { - temp = AllZone.getCombat().getBlockers(attackingCard); + for (Card attackingCard : Singletons.getModel().getGameState().getCombat().getAttackers()) { + temp = Singletons.getModel().getGameState().getCombat().getBlockers(attackingCard); for (Card blockingCard : temp) { arcs.add(new Point[] { endpoints.get(attackingCard.getUniqueNumber()), diff --git a/src/main/java/forge/gui/match/VAssignDamage.java b/src/main/java/forge/gui/match/VAssignDamage.java index fe7789ba646..b58891e69e2 100644 --- a/src/main/java/forge/gui/match/VAssignDamage.java +++ b/src/main/java/forge/gui/match/VAssignDamage.java @@ -32,10 +32,10 @@ import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; import net.miginfocom.swing.MigLayout; -import forge.AllZone; import forge.Card; import forge.Command; import forge.GameEntity; +import forge.Singletons; import forge.gui.SOverlayUtils; import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FScrollPane; @@ -499,7 +499,7 @@ public class VAssignDamage { // be modified. private void finish() { if (trample) { - AllZone.getCombat().addDefendingDamage(this.damageToOpponent, this.attacker); + Singletons.getModel().getGameState().getCombat().addDefendingDamage(this.damageToOpponent, this.attacker); } for (int i = 0; i < lstDefenders.size(); i++) { diff --git a/src/main/java/forge/gui/match/controllers/CDock.java b/src/main/java/forge/gui/match/controllers/CDock.java index 629f1e36a07..ca8f3e92d3e 100644 --- a/src/main/java/forge/gui/match/controllers/CDock.java +++ b/src/main/java/forge/gui/match/controllers/CDock.java @@ -28,7 +28,6 @@ import java.util.TreeMap; import javax.swing.JOptionPane; import javax.swing.SwingWorker; -import forge.AllZone; import forge.Card; import forge.CardLists; import forge.CardPredicates.Presets; @@ -148,8 +147,8 @@ public enum CDock implements ICDoc { if (ph.is(PhaseType.COMBAT_DECLARE_ATTACKERS, human)) { for (Card c : CardLists.filter(human.getCardsIn(ZoneType.Battlefield), Presets.CREATURES)) { - if (!c.isAttacking() && CombatUtil.canAttack(c, AllZone.getCombat())) { - AllZone.getCombat().addAttacker(c); + if (!c.isAttacking() && CombatUtil.canAttack(c, Singletons.getModel().getGameState().getCombat())) { + Singletons.getModel().getGameState().getCombat().addAttacker(c); } } //human.updateObservers(); diff --git a/src/main/java/forge/gui/match/nonsingleton/CField.java b/src/main/java/forge/gui/match/nonsingleton/CField.java index a81c549dd43..0bde0bfad68 100644 --- a/src/main/java/forge/gui/match/nonsingleton/CField.java +++ b/src/main/java/forge/gui/match/nonsingleton/CField.java @@ -436,7 +436,7 @@ public class CField implements ICDoc { } } - final List att = AllZone.getCombat().getAttackerList(); + final List att = Singletons.getModel().getGameState().getCombat().getAttackerList(); if ((c.isTapped() || c.hasSickness() || ((c.hasKeyword("Vigilance")) && att.contains(c))) && (input instanceof InputAttack)) { final forge.view.arcane.CardPanel cardPanel = CField.this.view.getTabletop().getCardPanel( @@ -452,11 +452,11 @@ public class CField implements ICDoc { if (att.contains(c) && (input instanceof InputAttack) && !c.hasKeyword("CARDNAME attacks each turn if able.")) { c.untap(); - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); CombatUtil.showCombat(); } else if (input instanceof InputBlock) { if (c.getController().isHuman()) { - AllZone.getCombat().removeFromCombat(c); + Singletons.getModel().getGameState().getCombat().removeFromCombat(c); } ((InputBlock) input).removeFromAllBlocking(c); CombatUtil.showCombat(); diff --git a/src/main/java/forge/gui/match/views/VCombat.java b/src/main/java/forge/gui/match/views/VCombat.java index 3ada057fd4f..b67925bb5bc 100644 --- a/src/main/java/forge/gui/match/views/VCombat.java +++ b/src/main/java/forge/gui/match/views/VCombat.java @@ -22,7 +22,7 @@ import javax.swing.border.Border; import javax.swing.border.MatteBorder; import net.miginfocom.swing.MigLayout; -import forge.AllZone; +import forge.Singletons; import forge.gui.framework.DragCell; import forge.gui.framework.DragTab; import forge.gui.framework.EDocID; @@ -106,7 +106,7 @@ public enum VCombat implements IVDoc { final Border border = new MatteBorder(0, 0, 0, 0, FSkin.getColor(FSkin.Colors.CLR_BORDERS)); - tab.setText("Combat : " + AllZone.getCombat().getAttackers().size()); + tab.setText("Combat : " + Singletons.getModel().getGameState().getCombat().getAttackers().size()); final JTextArea tar = new JTextArea(s0); tar.setOpaque(false); diff --git a/src/main/java/forge/gui/match/views/VPlayers.java b/src/main/java/forge/gui/match/views/VPlayers.java index 4d353722384..8ba8d0198be 100644 --- a/src/main/java/forge/gui/match/views/VPlayers.java +++ b/src/main/java/forge/gui/match/views/VPlayers.java @@ -26,7 +26,6 @@ import javax.swing.JPanel; import javax.swing.border.MatteBorder; import net.miginfocom.swing.MigLayout; -import forge.AllZone; import forge.Card; import forge.Singletons; @@ -180,7 +179,7 @@ public enum VPlayers implements IVDoc { // No need to update if this panel isn't showing if (!parentCell.getSelected().equals(this)) { return; } - stormLabel.setText("Storm count: " + AllZone.getStack().getCardsCastThisTurn().size()); + stormLabel.setText("Storm count: " + Singletons.getModel().getGameState().getStack().getCardsCastThisTurn().size()); } //========= Custom class handling diff --git a/src/main/java/forge/gui/match/views/VStack.java b/src/main/java/forge/gui/match/views/VStack.java index 51ddf9375fd..d210c757717 100644 --- a/src/main/java/forge/gui/match/views/VStack.java +++ b/src/main/java/forge/gui/match/views/VStack.java @@ -31,8 +31,8 @@ import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import net.miginfocom.swing.MigLayout; -import forge.AllZone; import forge.CardUtil; +import forge.Singletons; import forge.card.spellability.SpellAbilityStackInstance; import forge.game.zone.MagicStack; import forge.gui.ForgeAction; @@ -121,7 +121,7 @@ public enum VStack implements IVDoc { // No need to update this unless it's showing if (!parentCell.getSelected().equals(this)) { return; } - final MagicStack stack = AllZone.getStack(); + final MagicStack stack = Singletons.getModel().getGameState().getStack(); int count = 1; JTextArea tar; @@ -245,7 +245,7 @@ public enum VStack implements IVDoc { @Override public final void actionPerformed(final ActionEvent e) { - AllZone.getTriggerHandler().setAlwaysAcceptTrigger(TriggerReactionMenu.this.workTrigID); + Singletons.getModel().getGameState().getTriggerHandler().setAlwaysAcceptTrigger(TriggerReactionMenu.this.workTrigID); } }; @@ -254,7 +254,7 @@ public enum VStack implements IVDoc { @Override public final void actionPerformed(final ActionEvent e) { - AllZone.getTriggerHandler().setAlwaysDeclineTrigger(TriggerReactionMenu.this.workTrigID); + Singletons.getModel().getGameState().getTriggerHandler().setAlwaysDeclineTrigger(TriggerReactionMenu.this.workTrigID); } }; @@ -263,7 +263,7 @@ public enum VStack implements IVDoc { @Override public final void actionPerformed(final ActionEvent e) { - AllZone.getTriggerHandler().setAlwaysAskTrigger(TriggerReactionMenu.this.workTrigID); + Singletons.getModel().getGameState().getTriggerHandler().setAlwaysAskTrigger(TriggerReactionMenu.this.workTrigID); } }; @@ -279,11 +279,11 @@ public enum VStack implements IVDoc { public void setTrigger(final int trigID) { this.workTrigID = trigID; - if (AllZone.getTriggerHandler().isAlwaysAccepted(trigID)) { + if (Singletons.getModel().getGameState().getTriggerHandler().isAlwaysAccepted(trigID)) { ((JCheckBoxMenuItem) this.getComponent(0)).setState(true); ((JCheckBoxMenuItem) this.getComponent(1)).setState(false); ((JCheckBoxMenuItem) this.getComponent(2)).setState(false); - } else if (AllZone.getTriggerHandler().isAlwaysDeclined(trigID)) { + } else if (Singletons.getModel().getGameState().getTriggerHandler().isAlwaysDeclined(trigID)) { ((JCheckBoxMenuItem) this.getComponent(0)).setState(false); ((JCheckBoxMenuItem) this.getComponent(1)).setState(true); ((JCheckBoxMenuItem) this.getComponent(2)).setState(false); diff --git a/src/main/java/forge/util/Expressions.java b/src/main/java/forge/util/Expressions.java new file mode 100644 index 00000000000..6dc6a79c365 --- /dev/null +++ b/src/main/java/forge/util/Expressions.java @@ -0,0 +1,67 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.util; + + +/** + * AllZoneUtil contains static functions used to get CardLists of various cards + * in various zones. + * + * @author dennis.r.friedrichsen (slapshot5 on slightlymagic.net) + * @version $Id: AllZoneUtil.java 17567 2012-10-18 14:10:15Z Max mtg $ + */ +public abstract class Expressions { + + + /** + *

+ * compare. + *

+ * + * @param leftSide + * a int. + * @param comp + * a {@link java.lang.String} object. + * @param rightSide + * a int. + * @return a boolean. + * @since 1.0.15 + */ + public static boolean compare(final int leftSide, final String comp, final int rightSide) { + // should this function be somewhere else? + // leftSide COMPARED to rightSide: + if (comp.contains("LT")) { + return leftSide < rightSide; + } else if (comp.contains("LE")) { + return leftSide <= rightSide; + } else if (comp.contains("EQ")) { + return leftSide == rightSide; + } else if (comp.contains("GE")) { + return leftSide >= rightSide; + } else if (comp.contains("GT")) { + return leftSide > rightSide; + } else if (comp.contains("NE")) { + return leftSide != rightSide; // not equals + } else if (comp.contains("M2")) { + return (leftSide % 2) == (rightSide % 2); // they are equal modulo 2 + } + + return false; + } + +} // end class AllZoneUtil