From db83c0020a0a686d367163fde4558a55e810c809 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Thu, 18 Oct 2012 14:10:15 +0000 Subject: [PATCH] massively moved static methods from AllZoneUtil to GameState - they must become non-static once (to support multiple games running at a time) --- src/main/java/forge/AllZoneUtil.java | 319 +----------------- src/main/java/forge/Card.java | 51 +-- src/main/java/forge/CardUtil.java | 5 +- src/main/java/forge/GameAction.java | 42 +-- src/main/java/forge/GameActionUtil.java | 35 +- src/main/java/forge/StaticEffects.java | 3 +- .../card/abilityfactory/AbilityFactory.java | 30 +- .../AbilityFactoryAlterLife.java | 4 +- .../abilityfactory/AbilityFactoryAnimate.java | 6 +- .../abilityfactory/AbilityFactoryAttach.java | 10 +- .../abilityfactory/AbilityFactoryBond.java | 4 +- .../AbilityFactoryChangeZone.java | 24 +- .../abilityfactory/AbilityFactoryChoose.java | 30 +- .../abilityfactory/AbilityFactoryCleanup.java | 4 +- .../abilityfactory/AbilityFactoryCopy.java | 8 +- .../AbilityFactoryCounters.java | 10 +- .../AbilityFactoryDealDamage.java | 18 +- .../abilityfactory/AbilityFactoryDebuff.java | 18 +- .../abilityfactory/AbilityFactoryDestroy.java | 10 +- .../abilityfactory/AbilityFactoryEffect.java | 10 +- .../AbilityFactoryGainControl.java | 14 +- .../abilityfactory/AbilityFactoryMana.java | 4 +- .../AbilityFactoryPermanentState.java | 22 +- .../abilityfactory/AbilityFactoryPlay.java | 6 +- .../AbilityFactoryPreventDamage.java | 10 +- .../AbilityFactoryProtection.java | 28 +- .../abilityfactory/AbilityFactoryPump.java | 40 +-- .../AbilityFactoryRegenerate.java | 12 +- .../abilityfactory/AbilityFactoryRepeat.java | 3 +- .../abilityfactory/AbilityFactoryReveal.java | 4 +- .../AbilityFactorySacrifice.java | 4 +- .../AbilityFactorySetState.java | 4 +- .../abilityfactory/AbilityFactoryToken.java | 6 +- .../cardfactory/CardFactoryArtifacts.java | 4 +- .../card/cardfactory/CardFactoryAuras.java | 20 +- .../cardfactory/CardFactoryCreatures.java | 18 +- .../cardfactory/CardFactoryEnchantments.java | 6 +- .../card/cardfactory/CardFactoryInstants.java | 14 +- .../card/cardfactory/CardFactoryLands.java | 8 +- .../cardfactory/CardFactorySorceries.java | 38 +-- .../card/cardfactory/CardFactoryUtil.java | 48 +-- src/main/java/forge/card/cost/CostReturn.java | 6 +- .../java/forge/card/cost/CostSacrifice.java | 6 +- .../java/forge/card/cost/CostUntapType.java | 8 +- src/main/java/forge/card/mana/ManaPool.java | 4 +- .../card/replacement/ReplacementEffect.java | 5 +- .../java/forge/card/spellability/Ability.java | 4 +- .../card/spellability/AbilityActivated.java | 6 +- .../forge/card/spellability/AbilityMana.java | 4 +- .../java/forge/card/spellability/Spell.java | 5 +- .../spellability/SpellAbilityCondition.java | 15 +- .../spellability/SpellAbilityRestriction.java | 3 +- .../card/spellability/SpellPermanent.java | 10 +- .../java/forge/card/spellability/Target.java | 4 +- .../card/spellability/TargetSelection.java | 14 +- .../StaticAbilityContinuous.java | 8 +- src/main/java/forge/card/trigger/Trigger.java | 5 +- .../forge/card/trigger/TriggerHandler.java | 16 +- .../forge/control/input/InputMulligan.java | 4 +- src/main/java/forge/game/GameState.java | 311 +++++++++++++++++ src/main/java/forge/game/phase/Combat.java | 4 +- .../java/forge/game/phase/CombatUtil.java | 68 ++-- src/main/java/forge/game/phase/EndOfTurn.java | 18 +- .../java/forge/game/phase/PhaseHandler.java | 8 +- src/main/java/forge/game/phase/PhaseUtil.java | 10 +- src/main/java/forge/game/phase/Untap.java | 28 +- src/main/java/forge/game/phase/Upkeep.java | 40 +-- .../forge/game/player/ComputerAIGeneral.java | 4 +- .../java/forge/game/player/ComputerUtil.java | 12 +- .../forge/game/player/ComputerUtilAttack.java | 6 +- src/main/java/forge/game/player/Player.java | 28 +- src/main/java/forge/game/zone/MagicStack.java | 16 +- .../game/zone/PlayerZoneBattlefield.java | 12 +- src/main/java/forge/gui/GuiDisplayUtil.java | 8 +- .../java/forge/view/arcane/CardPanel.java | 4 +- 75 files changed, 834 insertions(+), 824 deletions(-) diff --git a/src/main/java/forge/AllZoneUtil.java b/src/main/java/forge/AllZoneUtil.java index d1b5e56785d..50d0361ec50 100644 --- a/src/main/java/forge/AllZoneUtil.java +++ b/src/main/java/forge/AllZoneUtil.java @@ -17,16 +17,6 @@ */ package forge; -import java.util.ArrayList; -import java.util.List; - -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; - -import forge.CardPredicates.Presets; -import forge.game.player.Player; -import forge.game.zone.ZoneType; - /** * AllZoneUtil contains static functions used to get CardLists of various cards @@ -39,97 +29,15 @@ public abstract class AllZoneUtil { // ////////// Creatures - /** - * gets a list of all cards owned by both players that have are currently in - * the given zone. - * - * @param zone - * Constant.Zone - * @return a List with all cards currently in a graveyard - */ - public static List getCardsIn(final ZoneType zone) { - if (zone == ZoneType.Stack) { - return AllZone.getStackZone().getCards(); - } else { - List cards = null; - for (final Player p : Singletons.getModel().getGameState().getPlayers()) { - if ( cards == null ) - cards = p.getZone(zone).getCards(); - else - cards.addAll(p.getZone(zone).getCards()); - } - return cards; - } - } - - public static List getCardsIn(final Iterable zones) { - final List cards = new ArrayList(); - for (final ZoneType z : zones) { - cards.addAll(getCardsIn(z)); - } - return cards; - } - - /** - * gets a list of all cards owned by both players that have are currently in - * the given zone. - * - * @param zone - * a Constant.Zone - * @param cardName - * a String - * @return a List with all cards currently in a graveyard - */ - public static List getCardsIn(final ZoneType zone, final String cardName) { - return CardLists.filter(AllZoneUtil.getCardsIn(zone), CardPredicates.nameEquals(cardName)); - } + // ////////// Creatures - /** - * use to get a List of all creatures on the battlefield for both. - * players - * - * @return a List of all creatures on the battlefield on both sides - */ - public static List getCreaturesInPlay() { - final List creats = AllZoneUtil.getCardsIn(ZoneType.Battlefield); - return CardLists.filter(creats, Presets.CREATURES); - } - - /** - * use to get a list of creatures in play for a given player. - * - * @param player - * the player to get creatures for - * @return a List containing all creatures a given player has in play - */ - public static List getCreaturesInPlay(final Player player) { - final List creats = player.getCardsIn(ZoneType.Battlefield); - return CardLists.filter(creats, Presets.CREATURES); - } + // /////////////// Lands - /** - * use to get a list of all lands a given player has on the battlefield. - * - * @param player - * the player whose lands we want to get - * @return a List containing all lands the given player has in play - */ - public static List getPlayerLandsInPlay(final Player player) { - return CardLists.filter(player.getCardsIn(ZoneType.Battlefield), Presets.LANDS); - } - - /** - * gets a list of all lands in play. - * - * @return a List of all lands on the battlefield - */ - public static List getLandsInPlay() { - return CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), Presets.LANDS); - } + // ============================================================================= // @@ -138,229 +46,10 @@ public abstract class AllZoneUtil { // // ============================================================================= - /** - * answers the question "is the given card in any exile zone?". - * - * @param c - * the card to look for in Exile - * @return true is the card is in Human or Computer's Exile zone - */ - public static boolean isCardExiled(final Card c) { - return AllZoneUtil.getCardsIn(ZoneType.Exile).contains(c); - } - - // /Check if a certain card is in play - /** - *

- * isCardInPlay. - *

- * - * @param card - * a {@link forge.Card} object. - * @return a boolean. - */ - public static boolean isCardInPlay(final Card card) { - if (card.getController() == null) { - return false; - } - return card.getController().getCardsIn(ZoneType.Battlefield).contains(card); - } - - /** - * Answers the question: "Is in play?". - * - * @param cardName - * the name of the card to look for - * @return true is the card is in play, false otherwise - */ - public static boolean isCardInPlay(final String cardName) { - for (final Player p : Singletons.getModel().getGameState().getPlayers()) { - if (isCardInPlay(cardName, p)) - return true; - } - return false; - } - - /** - * Answers the question: "Does have in play?". - * - * @param cardName - * the name of the card to look for - * @param player - * the player whose battlefield we want to check - * @return true if that player has that card in play, false otherwise - */ - public static boolean isCardInPlay(final String cardName, final Player player) { - return Iterables.any(player.getZone(ZoneType.Battlefield), CardPredicates.nameEquals(cardName)); - } + // ////////////// getting all cards of a given color - /** - * gets a list of all Cards of a given color on the battlefield. - * - * @param color - * the color of cards to get - * @return a List of all cards in play of a given color - */ - public static List getColorInPlay(final String color) { - final List cards = new ArrayList(); - for(Player p : Singletons.getModel().getGameState().getPlayers()) { - cards.addAll(getPlayerColorInPlay(p, color)); - } - return cards; - } - - /** - * gets a list of all Cards of a given color a given player has on the - * battlefield. - * - * @param player - * the player's cards to get - * @param color - * the color of cards to get - * @return a List of all cards in play of a given color - */ - public static List getPlayerColorInPlay(final Player player, final String color) { - List cards = player.getCardsIn(ZoneType.Battlefield); - cards = CardLists.filter(cards, new Predicate() { - @Override - public boolean apply(final Card c) { - final List colorList = CardUtil.getColors(c); - return colorList.contains(color); - } - }); - return cards; - } - - /** - *

- * getCardState. - *

- * - * @param card - * a {@link forge.Card} object. - * @return a {@link forge.Card} object. - */ - public static Card getCardState(final Card card) { - - for (final Card c : AllZoneUtil.getCardsInGame()) { - if (card.equals(c)) { - return c; - } - } - - return card; - } - - /** - *

- * compareTypeAmountInPlay. - *

- * - * @param player - * a {@link forge.game.player.Player} object. - * @param type - * a {@link java.lang.String} object. - * @return a int. - */ - public static int compareTypeAmountInPlay(final Player player, final String type) { - // returns the difference between player's - final Player opponent = player.getOpponent(); - final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Battlefield), type); - final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Battlefield), type); - return (playerList.size() - opponentList.size()); - } - - /** - *

- * compareTypeAmountInGraveyard. - *

- * - * @param player - * a {@link forge.game.player.Player} object. - * @param type - * a {@link java.lang.String} object. - * @return a int. - */ - public static int compareTypeAmountInGraveyard(final Player player, final String type) { - // returns the difference between player's - final Player opponent = player.getOpponent(); - final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Graveyard), type); - final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Graveyard), type); - return (playerList.size() - opponentList.size()); - } - - /** - * a CardListFilter to get all cards that are a part of this game. - * - * @return a {@link forge.CardList} with all cards in all Battlefields, - * Hands, Graveyards, Libraries, and Exiles. - */ - public static List getCardsInGame() { - final List all = new ArrayList(); - for (final Player player : Singletons.getModel().getGameState().getPlayers()) { - all.addAll(player.getZone(ZoneType.Graveyard).getCards()); - all.addAll(player.getZone(ZoneType.Hand).getCards()); - all.addAll(player.getZone(ZoneType.Library).getCards()); - all.addAll(player.getZone(ZoneType.Battlefield).getCards(false)); - all.addAll(player.getZone(ZoneType.Exile).getCards()); - } - all.addAll(AllZone.getStackZone().getCards()); - return all; - } - - /** - *

- * getDoublingSeasonMagnitude. - *

- * - * @param player - * the {@link forge.game.player.Player} player to determine if is affected by - * Doubling Season - * @return a int. - */ - public static int getCounterDoublersMagnitude(final Player player, Counters type) { - int counterDoublers = player.getCardsIn(ZoneType.Battlefield, "Doubling Season").size(); - if(type == Counters.P1P1) { - counterDoublers += player.getCardsIn(ZoneType.Battlefield, "Corpsejack Menace").size(); - } - return (int) Math.pow(2, counterDoublers); // pow(a,0) = 1; pow(a,1) = a - // ... no worries about size - // = 0 - } - - /** - *

- * getTokenDoublersMagnitude. - *

- * - * @param player - * the {@link forge.game.player.Player} player to determine if is affected by - * Doubling Season - * @return a int. - */ - public static int getTokenDoublersMagnitude(final Player player) { - final int tokenDoublers = player.getCardsIn(ZoneType.Battlefield, "Parallel Lives").size() - + player.getCardsIn(ZoneType.Battlefield, "Doubling Season").size(); - return (int) Math.pow(2, tokenDoublers); // pow(a,0) = 1; pow(a,1) = a - // ... no worries about size = - // 0 - } - - /** - * gets a list of all opponents of a given player. - * - * @param p - * the player whose opponents to get - * @return a list of all opponents - */ - public static ArrayList getOpponents(final Player p) { - final ArrayList list = new ArrayList(); - list.add(p.getOpponent()); - return list; - } - /** *

* compare. diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index c02220f4c95..fd4bc18d5e1 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -53,6 +53,7 @@ import forge.card.staticability.StaticAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; import forge.card.trigger.ZCTrigger; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -1224,7 +1225,7 @@ public class Card extends GameEntity implements Comparable { return false; } if (this.isCreature() && counterName.equals(Counters.M1M1)) { - for (final Card c : AllZoneUtil.getCreaturesInPlay(this.getController())) { // look + for (final Card c : GameState.getCreaturesInPlay(this.getController())) { // look // for // Melira, // Sylvok @@ -1285,7 +1286,7 @@ public class Card extends GameEntity implements Comparable { if (!this.canHaveCountersPlacedOnIt(counterName)) { return; } - final int multiplier = AllZoneUtil.getCounterDoublersMagnitude(this.getController(),counterName); + final int multiplier = GameState.getCounterDoublersMagnitude(this.getController(),counterName); if (this.counters.containsKey(counterName)) { final Integer aux = this.counters.get(counterName) + (multiplier * n); this.counters.put(counterName, aux); @@ -1333,11 +1334,11 @@ public class Card extends GameEntity implements Comparable { if (counterName.equals(Counters.TIME) && (aux == 0)) { final boolean hasVanish = CardFactoryUtil.hasKeyword(this, "Vanishing") != -1; - if (hasVanish && AllZoneUtil.isCardInPlay(this)) { + if (hasVanish && GameState.isCardInPlay(this)) { Singletons.getModel().getGameAction().sacrifice(this, null); } - if (this.hasSuspend() && AllZoneUtil.isCardExiled(this)) { + if (this.hasSuspend() && GameState.isCardExiled(this)) { final Card c = this; c.setSuspendCast(true); @@ -4751,7 +4752,7 @@ public class Card extends GameEntity implements Comparable { return 0; } - if (AllZoneUtil.isCardInPlay("Doran, the Siege Tower")) { + if (GameState.isCardInPlay("Doran, the Siege Tower")) { return this.getNetDefense(); } return this.getNetAttack(); @@ -6489,7 +6490,7 @@ public class Card extends GameEntity implements Comparable { } } else if (property.startsWith("RememberedPlayerCtrl")) { if (source.getRemembered().isEmpty()) { - final Card newCard = AllZoneUtil.getCardState(source); + final Card newCard = GameState.getCardState(source); for (final Object o : newCard.getRemembered()) { if (o instanceof Player) { if (!this.getController().equals((Player) o)) { @@ -6722,7 +6723,7 @@ public class Card extends GameEntity implements Comparable { } } else if (restriction.equals("MostProminentColor")) { for (final String color : CardUtil.getColors(this)) { - if (CardFactoryUtil.isMostProminentColor(AllZoneUtil.getCardsIn(ZoneType.Battlefield), color)) { + if (CardFactoryUtil.isMostProminentColor(GameState.getCardsIn(ZoneType.Battlefield), color)) { return true; } } @@ -6811,12 +6812,12 @@ public class Card extends GameEntity implements Comparable { return false; } } else if (restriction.equals(ZoneType.Battlefield.toString())) { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List list = GameState.getCardsIn(ZoneType.Battlefield); if (list.isEmpty()) { return false; } boolean shares = false; - for (final Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (final Card card : GameState.getCardsIn(ZoneType.Battlefield)) { if (this.getName().equals(card.getName())) { shares = true; } @@ -6984,28 +6985,28 @@ public class Card extends GameEntity implements Comparable { return false; } } else if (property.startsWith("greatestPower")) { - final List list = AllZoneUtil.getCreaturesInPlay(); + final List list = GameState.getCreaturesInPlay(); for (final Card crd : list) { if (crd.getNetAttack() > this.getNetAttack()) { return false; } } } else if (property.startsWith("leastPower")) { - final List list = AllZoneUtil.getCreaturesInPlay(); + final List list = GameState.getCreaturesInPlay(); for (final Card crd : list) { if (crd.getNetAttack() < this.getNetAttack()) { return false; } } } else if (property.startsWith("greatestCMC")) { - final List list = AllZoneUtil.getCreaturesInPlay(); + final List list = GameState.getCreaturesInPlay(); for (final Card crd : list) { if (crd.getCMC() > this.getCMC()) { return false; } } } else if (property.startsWith("lowestCMC")) { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List list = GameState.getCardsIn(ZoneType.Battlefield); for (final Card crd : list) { if (!crd.isLand() && !crd.isImmutable() && (crd.getCMC() < this.getCMC())) { return false; @@ -7050,7 +7051,7 @@ public class Card extends GameEntity implements Comparable { } } } else if (property.startsWith("suspended")) { - if (!this.hasSuspend() || !AllZoneUtil.isCardExiled(this) + if (!this.hasSuspend() || !GameState.isCardExiled(this) || !(this.getCounters(Counters.getType("TIME")) >= 1)) { return false; } @@ -7271,7 +7272,7 @@ public class Card extends GameEntity implements Comparable { return false; } } else if (property.startsWith("OnBattlefield")) { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List list = GameState.getCardsIn(ZoneType.Battlefield); if (!list.contains(this)) { return false; } @@ -7950,7 +7951,7 @@ public class Card extends GameEntity implements Comparable { map.put(source, damageToAdd); } - if (AllZoneUtil.isCardInPlay(this)) { + if (GameState.isCardInPlay(this)) { this.addDamage(map); } } @@ -8004,7 +8005,7 @@ public class Card extends GameEntity implements Comparable { public final int staticDamagePrevention(final int damage, final int possiblePrvenetion, final Card source, final boolean isCombat) { - if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) { + if (GameState.isCardInPlay("Leyline of Punishment")) { return damage; } @@ -8033,7 +8034,7 @@ public class Card extends GameEntity implements Comparable { @Override public final int staticDamagePrevention(final int damageIn, final Card source, final boolean isCombat) { - if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) { + if (GameState.isCardInPlay("Leyline of Punishment")) { return damageIn; } @@ -8096,7 +8097,7 @@ public class Card extends GameEntity implements Comparable { } // Prevent Damage static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { @@ -8110,7 +8111,7 @@ public class Card extends GameEntity implements Comparable { return 0; } - if ((source.isCreature() && AllZoneUtil.isCardInPlay("Well-Laid Plans") && source.sharesColorWith(this))) { + if ((source.isCreature() && GameState.isCardInPlay("Well-Laid Plans") && source.sharesColorWith(this))) { return 0; } } // Creature end @@ -8138,7 +8139,7 @@ public class Card extends GameEntity implements Comparable { @Override public final int preventDamage(final int damage, final Card source, final boolean isCombat) { - if (AllZoneUtil.isCardInPlay("Leyline of Punishment") + if (GameState.isCardInPlay("Leyline of Punishment") || source.hasKeyword("Damage that would be dealt by CARDNAME can't be prevented.")) { return damage; } @@ -8204,7 +8205,7 @@ public class Card extends GameEntity implements Comparable { public final int staticReplaceDamage(final int damage, final Card source, final boolean isCombat) { int restDamage = damage; - for (Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card c : GameState.getCardsIn(ZoneType.Battlefield)) { if (c.getName().equals("Sulfuric Vapors")) { if (source.isSpell() && source.isRed()) { restDamage += 1; @@ -8363,12 +8364,12 @@ public class Card extends GameEntity implements Comparable { GameActionUtil.executeDamageToCreatureEffects(source, this, damageToAdd); - if (AllZoneUtil.isCardInPlay(this) && wither) { + if (GameState.isCardInPlay(this) && wither) { this.addCounter(Counters.M1M1, damageToAdd); } if (source.hasKeyword("Deathtouch") && this.isCreature()) { Singletons.getModel().getGameAction().destroy(this); - } else if (AllZoneUtil.isCardInPlay(this) && !wither) { + } else if (GameState.isCardInPlay(this) && !wither) { this.damage += damageToAdd; } return true; @@ -8885,7 +8886,7 @@ public class Card extends GameEntity implements Comparable { } // CantTarget static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java index c88a1469af9..4171d700a66 100644 --- a/src/main/java/forge/CardUtil.java +++ b/src/main/java/forge/CardUtil.java @@ -38,6 +38,7 @@ import forge.card.CardManaCost; import forge.card.EditionInfo; import forge.card.mana.ManaCost; import forge.control.input.InputPayManaCostUtil; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.GuiDisplayUtil; @@ -211,7 +212,7 @@ public final class CardUtil { int xPaid = 0; // 2012-07-22 - If a card is on the stack, count the xManaCost in with it's CMC - if (AllZoneUtil.getCardsIn(ZoneType.Stack).contains(c) && c.getManaCost() != null) { + if (GameState.getCardsIn(ZoneType.Stack).contains(c) && c.getManaCost() != null) { xPaid = c.getXManaCostPaid() * c.getManaCost().countX(); } return c.getManaCost().getCMC() + xPaid; @@ -828,7 +829,7 @@ public final class CardUtil { if (strCol.equalsIgnoreCase("Colorless")) { continue; } - for (final Card c : AllZoneUtil.getColorInPlay(strCol)) { + for (final Card c : GameState.getColorInPlay(strCol)) { if (!res.contains(c) && c.isValid(valid, source.getController(), source) && !c.equals(origin)) { res.add(c); } diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index db062681e89..6ad8da13bbe 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -77,7 +77,7 @@ public class GameAction { *

*/ public final void resetActivationsPerTurn() { - final List all = AllZoneUtil.getCardsInGame(); + final List all = GameState.getCardsInGame(); // Reset Activations per Turn for (final Card card : all) { @@ -256,7 +256,7 @@ public class GameAction { if (copied.isEquipped()) { final List equipments = new ArrayList(copied.getEquippedBy()); for (final Card equipment : equipments) { - if (AllZoneUtil.isCardInPlay(equipment)) { + if (GameState.isCardInPlay(equipment)) { equipment.unEquipCard(copied); } } @@ -265,7 +265,7 @@ public class GameAction { if (copied.isEquipped()) { final List equipments = new ArrayList(copied.getEquippedBy()); for (final Card equipment : equipments) { - if (AllZoneUtil.isCardInPlay(equipment)) { + if (GameState.isCardInPlay(equipment)) { equipment.unEquipCard(copied); } } @@ -273,7 +273,7 @@ public class GameAction { // equipment moving off battlefield if (copied.isEquipping()) { final Card equippedCreature = copied.getEquipping().get(0); - if (AllZoneUtil.isCardInPlay(equippedCreature)) { + if (GameState.isCardInPlay(equippedCreature)) { copied.unEquipCard(equippedCreature); } } @@ -723,7 +723,7 @@ public class GameAction { * @return a {@link forge.Card} object. */ public final Card exile(final Card c) { - if (AllZoneUtil.isCardExiled(c)) { + if (GameState.isCardExiled(c)) { return c; } @@ -943,7 +943,7 @@ public class GameAction { AllZone.getStaticEffects().clearStaticEffects(); // search for cards with static abilities - final List allCards = AllZoneUtil.getCardsInGame(); + final List allCards = GameState.getCardsInGame(); final ArrayList staticAbilities = new ArrayList(); for (final Card card : allCards) { for (StaticAbility sa : card.getStaticAbilities()) { @@ -1010,7 +1010,7 @@ public class GameAction { if (this.checkEndGameState(match, match.getCurrentGame())) { // Clear Simultaneous triggers at the end of the game new ViewWinLose(match); - Singletons.getModel().getGameState().getStack().clearSimultaneousStack(); + match.getCurrentGame().getStack().clearSimultaneousStack(); if (!refreeze) { AllZone.getStack().unfreezeStack(); } @@ -1028,12 +1028,12 @@ public class GameAction { final HashMap runParams = new HashMap(); AllZone.getTriggerHandler().runTrigger(TriggerType.Always, runParams); - for (Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card c : GameState.getCardsIn(ZoneType.Battlefield)) { if (c.isEquipped()) { final List equipments = new ArrayList(c.getEquippedBy()); for (final Card equipment : equipments) { - if (!AllZoneUtil.isCardInPlay(equipment)) { + if (!GameState.isCardInPlay(equipment)) { equipment.unEquipCard(c); checkAgain = true; } @@ -1042,7 +1042,7 @@ public class GameAction { if (c.isEquipping()) { final Card equippedCreature = c.getEquipping().get(0); - if (!equippedCreature.isCreature() || !AllZoneUtil.isCardInPlay(equippedCreature)) { + if (!equippedCreature.isCreature() || !GameState.isCardInPlay(equippedCreature)) { c.unEquipCard(equippedCreature); checkAgain = true; } @@ -1066,7 +1066,7 @@ public class GameAction { if (entity instanceof Card) { final Card perm = (Card) entity; - if (!AllZoneUtil.isCardInPlay(perm) || !perm.canBeEnchantedBy(c)) { + if (!GameState.isCardInPlay(perm) || !perm.canBeEnchantedBy(c)) { c.unEnchantEntity(perm); this.moveToGraveyard(c); checkAgain = true; @@ -1089,7 +1089,7 @@ public class GameAction { } } - if (AllZoneUtil.isCardInPlay(c) && !c.isEnchanting()) { + if (GameState.isCardInPlay(c) && !c.isEnchanting()) { this.moveToGraveyard(c); checkAgain = true; } @@ -1203,7 +1203,7 @@ public class GameAction { */ private void destroyPlaneswalkers() { // get all Planeswalkers - final List list = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.PLANEWALKERS); + final List list = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.PLANEWALKERS); Card c; for (int i = 0; i < list.size(); i++) { @@ -1236,13 +1236,13 @@ public class GameAction { *

*/ private void destroyLegendaryCreatures() { - final List a = CardLists.getType(AllZoneUtil.getCardsIn(ZoneType.Battlefield), "Legendary"); - if (a.isEmpty() || AllZoneUtil.isCardInPlay("Mirror Gallery")) { + final List a = CardLists.getType(GameState.getCardsIn(ZoneType.Battlefield), "Legendary"); + if (a.isEmpty() || GameState.isCardInPlay("Mirror Gallery")) { return; } while (!a.isEmpty()) { - List b = AllZoneUtil.getCardsIn(ZoneType.Battlefield, a.get(0).getName()); + List b = GameState.getCardsIn(ZoneType.Battlefield, a.get(0).getName()); b = CardLists.getType(b, "Legendary"); b = CardLists.filter(b, new Predicate() { @Override @@ -1300,7 +1300,7 @@ public class GameAction { * @return a boolean. */ public final boolean destroyNoRegeneration(final Card c) { - if (!AllZoneUtil.isCardInPlay(c) || c.hasKeyword("Indestructible")) { + if (!GameState.isCardInPlay(c) || c.hasKeyword("Indestructible")) { return false; } @@ -1365,7 +1365,7 @@ public class GameAction { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(c) && c.isCreature()) { + if (GameState.isCardInPlay(c) && c.isCreature()) { c.addExtrinsicKeyword("Haste"); } } // execute() @@ -1400,7 +1400,7 @@ public class GameAction { * @return a boolean. */ public final boolean sacrificeDestroy(final Card c) { - if (!AllZoneUtil.isCardInPlay(c)) { + if (!GameState.isCardInPlay(c)) { return false; } @@ -1479,7 +1479,7 @@ public class GameAction { * @return a boolean. */ public final boolean destroy(final Card c) { - if (!AllZoneUtil.isCardInPlay(c) + if (!GameState.isCardInPlay(c) || (c.hasKeyword("Indestructible") && (!c.isCreature() || (c.getNetDefense() > 0)))) { return false; } @@ -1848,7 +1848,7 @@ public class GameAction { } } // isSpell - List cardsOnBattlefield = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List cardsOnBattlefield = GameState.getCardsIn(ZoneType.Battlefield); cardsOnBattlefield.add(originalCard); final ArrayList raiseAbilities = new ArrayList(); final ArrayList reduceAbilities = new ArrayList(); diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index ade42d350e5..4ea8d418907 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -49,6 +49,7 @@ import forge.control.input.InputPayManaCostAbility; import forge.control.input.InputPayReturnCost; import forge.control.input.InputPaySacCost; import forge.game.GameLossReason; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -104,7 +105,7 @@ public final class GameActionUtil { public void execute() { if (!c.isCopiedSpell()) { - final List maelstromNexii = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Maelstrom Nexus"); + final List maelstromNexii = GameState.getCardsIn(ZoneType.Battlefield, "Maelstrom Nexus"); for (final Card nexus : maelstromNexii) { if (CardUtil.getThisTurnCast("Card.YouCtrl", nexus).size() == 1) { @@ -655,7 +656,7 @@ public final class GameActionUtil { public static void executeVampiricEffects(final Card c) { final ArrayList a = c.getKeyword(); for (int i = 0; i < a.size(); i++) { - if (AllZoneUtil.isCardInPlay(c) + if (GameState.isCardInPlay(c) && a.get(i) .toString() .startsWith( @@ -670,7 +671,7 @@ public final class GameActionUtil { if (kw.contains("+2/+2")) { counter = Counters.P2P2; } - if (AllZoneUtil.isCardInPlay(thisCard)) { + if (GameState.isCardInPlay(thisCard)) { thisCard.addCounter(counter, 1); } } @@ -941,7 +942,7 @@ public final class GameActionUtil { produces.put("Plains", "W"); produces.put("Swamp", "B"); - List lands = AllZoneUtil.getCardsInGame(); + List lands = GameState.getCardsInGame(); lands = CardLists.filter(lands, Presets.LANDS); // remove all abilities granted by this Command @@ -1012,8 +1013,8 @@ public final class GameActionUtil { } // add +1/+1 to cards list.clear(); - final int num = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Coat of Arms").size(); - final List creatures = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES); + final int num = GameState.getCardsIn(ZoneType.Battlefield, "Coat of Arms").size(); + final List creatures = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES); for (Card c : creatures) { for (Card c2 : creatures) { @@ -1037,9 +1038,9 @@ public final class GameActionUtil { @Override public void execute() { - final List alphaStatuses = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Alpha Status"); + final List alphaStatuses = GameState.getCardsIn(ZoneType.Battlefield, "Alpha Status"); - final List allCreatures = AllZoneUtil.getCreaturesInPlay(); + final List allCreatures = GameState.getCreaturesInPlay(); for (int i = 0; i < this.previouslyPumped.size(); i++) { this.previouslyPumped.get(i).addSemiPermanentAttackBoost(0 - this.previouslyPumpedValue.get(i)); @@ -1074,7 +1075,7 @@ public final class GameActionUtil { @Override public void execute() { // get all creatures - final List cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Umbra Stalker"); + final List cards = GameState.getCardsIn(ZoneType.Battlefield, "Umbra Stalker"); for (final Card c : cards) { final Player player = c.getController(); final List grave = player.getCardsIn(ZoneType.Graveyard); @@ -1091,7 +1092,7 @@ public final class GameActionUtil { @Override public void execute() { - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.filter(list, new Predicate() { @Override @@ -1114,7 +1115,7 @@ public final class GameActionUtil { @Override public void execute() { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Old Man of the Sea"); + final List list = GameState.getCardsIn(ZoneType.Battlefield, "Old Man of the Sea"); for (final Card oldman : list) { if (!oldman.getGainControlTargets().isEmpty()) { if (oldman.getNetAttack() < oldman.getGainControlTargets().get(0).getNetAttack()) { @@ -1135,7 +1136,7 @@ public final class GameActionUtil { @Override public void execute() { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Liu Bei, Lord of Shu"); + final List list = GameState.getCardsIn(ZoneType.Battlefield, "Liu Bei, Lord of Shu"); if (list.size() > 0) { for (int i = 0; i < list.size(); i++) { @@ -1174,7 +1175,7 @@ public final class GameActionUtil { @Override public void execute() { - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { @@ -1192,7 +1193,7 @@ public final class GameActionUtil { } private int countSoundTheCalls() { - List list = AllZoneUtil.getCardsIn(ZoneType.Graveyard, "Sound the Call"); + List list = GameState.getCardsIn(ZoneType.Graveyard, "Sound the Call"); return list.size(); } @@ -1205,7 +1206,7 @@ public final class GameActionUtil { @Override public void execute() { // get all creatures - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Tarmogoyf"); + final List list = GameState.getCardsIn(ZoneType.Battlefield, "Tarmogoyf"); for (int i = 0; i < list.size(); i++) { final Card c = list.get(i); @@ -1216,7 +1217,7 @@ public final class GameActionUtil { } // execute() private int countDiffTypes() { - final List list = AllZoneUtil.getCardsIn(ZoneType.Graveyard); + final List list = GameState.getCardsIn(ZoneType.Graveyard); int count = 0; for (int q = 0; q < list.size(); q++) { @@ -1304,7 +1305,7 @@ public final class GameActionUtil { */ public static void doPowerSink(final Player p) { // get all lands with mana abilities - List lands = AllZoneUtil.getPlayerLandsInPlay(p); + List lands = GameState.getPlayerLandsInPlay(p); lands = CardLists.filter(lands, new Predicate() { @Override public boolean apply(final Card c) { diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java index 5cdad82f60c..08a251c43ec 100644 --- a/src/main/java/forge/StaticEffects.java +++ b/src/main/java/forge/StaticEffects.java @@ -27,6 +27,7 @@ import com.esotericsoftware.minlog.Log; import forge.card.replacement.ReplacementEffect; import forge.card.spellability.SpellAbility; import forge.card.staticability.StaticAbility; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -325,7 +326,7 @@ public class StaticEffects { public final void rePopulateStateBasedList() { this.reset(); - final List cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List cards = GameState.getCardsIn(ZoneType.Battlefield); Log.debug("== Start add state effects =="); for (int i = 0; i < cards.size(); i++) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index 08d74b52871..de2a38c9c62 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.List; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -41,6 +40,7 @@ import forge.card.spellability.SpellAbilityCondition; import forge.card.spellability.SpellAbilityRestriction; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -1632,10 +1632,10 @@ public class AbilityFactory { // Add whole Remembered list to handlePaid final List list = new ArrayList(); if (card.getRemembered().isEmpty()) { - final Card newCard = AllZoneUtil.getCardState(card); + final Card newCard = GameState.getCardState(card); for (final Object o : newCard.getRemembered()) { if (o instanceof Card) { - list.add(AllZoneUtil.getCardState((Card) o)); + list.add(GameState.getCardState((Card) o)); } } } @@ -1649,7 +1649,7 @@ public class AbilityFactory { } else { for (final Object o : card.getRemembered()) { if (o instanceof Card) { - list.add(AllZoneUtil.getCardState((Card) o)); + list.add(GameState.getCardState((Card) o)); } } } @@ -1659,7 +1659,7 @@ public class AbilityFactory { // Add whole Imprinted list to handlePaid final List list = new ArrayList(); for (final Card c : card.getImprinted()) { - list.add(AllZoneUtil.getCardState(c)); + list.add(GameState.getCardState(c)); } return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier; @@ -1669,7 +1669,7 @@ public class AbilityFactory { if (card.isEnchanting()) { Object o = card.getEnchanting(); if (o instanceof Card) { - list.add(AllZoneUtil.getCardState((Card) o)); + list.add(GameState.getCardState((Card) o)); } } return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier; @@ -1929,7 +1929,7 @@ public class AbilityFactory { else { final Object crd = root.getTriggeringObject(defined.substring(9)); if (crd instanceof Card) { - c = AllZoneUtil.getCardState((Card) crd); + c = GameState.getCardState((Card) crd); c = (Card) crd; } else if (crd instanceof List) { for (final Card cardItem : (List) crd) { @@ -1941,7 +1941,7 @@ public class AbilityFactory { final SpellAbility root = sa.getRootSpellAbility(); final Object crd = root.getReplacingObject(defined.substring(8)); if (crd instanceof Card) { - c = AllZoneUtil.getCardState((Card) crd); + c = GameState.getCardState((Card) crd); } else if (crd instanceof List) { for (final Card cardItem : (List) crd) { cards.add(cardItem); @@ -1949,26 +1949,26 @@ public class AbilityFactory { } } else if (defined.equals("Remembered")) { if (hostCard.getRemembered().isEmpty()) { - final Card newCard = AllZoneUtil.getCardState(hostCard); + final Card newCard = GameState.getCardState(hostCard); for (final Object o : newCard.getRemembered()) { if (o instanceof Card) { - cards.add(AllZoneUtil.getCardState((Card) o)); + cards.add(GameState.getCardState((Card) o)); } } } for (final Object o : hostCard.getRemembered()) { if (o instanceof Card) { - cards.add(AllZoneUtil.getCardState((Card) o)); + cards.add(GameState.getCardState((Card) o)); } } } else if (defined.equals("Clones")) { for (final Card clone : hostCard.getClones()) { - cards.add(AllZoneUtil.getCardState(clone)); + cards.add(GameState.getCardState(clone)); } } else if (defined.equals("Imprinted")) { for (final Card imprint : hostCard.getImprinted()) { - cards.add(AllZoneUtil.getCardState(imprint)); + cards.add(GameState.getCardState(imprint)); } } else if (defined.startsWith("ThisTurnEntered")) { final String[] workingCopy = defined.split("_"); @@ -2264,7 +2264,7 @@ public class AbilityFactory { for (final Object o : card.getRemembered()) { if (o instanceof Card) { final Card rem = (Card) o; - sas.addAll(AllZoneUtil.getCardState(rem).getSpellAbilities()); + sas.addAll(GameState.getCardState(rem).getSpellAbilities()); } } } else if (defined.equals("Imprinted")) { @@ -2285,7 +2285,7 @@ public class AbilityFactory { final SpellAbility root = sa.getRootSpellAbility(); final Object crd = root.getTriggeringObject("Card"); if (crd instanceof Card) { - triggeredCard = AllZoneUtil.getCardState((Card) crd); + triggeredCard = GameState.getCardState((Card) crd); } //find the imprinted card that does not share a name with the triggered card for (final SpellAbility spell : imprintedCards) { if (!spell.getSourceCard().getName().equals(triggeredCard.getName())) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index 532de1e9a2c..dc5a4b92407 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.Random; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.Counters; import forge.Singletons; @@ -35,6 +34,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -1617,7 +1617,7 @@ public class AbilityFactoryAlterLife { } if (source.getName().equals("Eternity Vessel") - && (AllZoneUtil.isCardInPlay("Vampire Hexmage", opponent) || (source + && (GameState.isCardInPlay("Vampire Hexmage", opponent) || (source .getCounters(Counters.CHARGE) == 0))) { return false; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java index 824c15e6529..04ab5172d87 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java @@ -26,7 +26,6 @@ import java.util.Map; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -45,6 +44,7 @@ import forge.card.cost.Cost; import forge.card.staticability.StaticAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -538,7 +538,7 @@ public final class AbilityFactoryAnimate { //if host is not on the battlefield don't apply if (params.containsKey("UntilHostLeavesPlay") - && !AllZoneUtil.isCardInPlay(sa.getSourceCard())) { + && !GameState.isCardInPlay(sa.getSourceCard())) { return; } @@ -1296,7 +1296,7 @@ public final class AbilityFactoryAnimate { } if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } else { list = tgtPlayers.get(0).getCardsIn(ZoneType.Battlefield); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java index 6f6d6b748d8..1101a2f160b 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java @@ -27,7 +27,6 @@ import java.util.Random; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -47,6 +46,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; import forge.card.staticability.StaticAbility; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; @@ -347,7 +347,7 @@ public class AbilityFactoryAttach { return null; } - List list = AllZoneUtil.getCardsIn(tgt.getZone()); + List list = GameState.getCardsIn(tgt.getZone()); list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), attachSource); if (params.containsKey("AITgts")) { list = CardLists.getValidCards(list, params.get("AITgts"), sa.getActivatingPlayer(), attachSource); @@ -1313,7 +1313,7 @@ public class AbilityFactoryAttach { return; } - if (AllZoneUtil.isCardInPlay(crd)) { + if (GameState.isCardInPlay(crd)) { crd.removeController(card); } @@ -1417,7 +1417,7 @@ public class AbilityFactoryAttach { return true; } } else { - List list = AllZoneUtil.getCardsIn(tgt.getZone()); + List list = GameState.getCardsIn(tgt.getZone()); list = CardLists.getValidCards(list, tgt.getValidTgts(), aura.getActivatingPlayer(), source); final Object o = GuiChoose.one(source + " - Select a card to attach to.", list); @@ -1711,7 +1711,7 @@ public class AbilityFactoryAttach { // If Cast Targets will be checked on the Stack for (final Object o : targets) { String valid = params.get("UnattachValid"); - List unattachList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List unattachList = GameState.getCardsIn(ZoneType.Battlefield); unattachList = CardLists.getValidCards(unattachList, valid.split(","), source.getController(), source); for (final Card c : unattachList) { AbilityFactoryAttach.handleUnattachment(o, c, af); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java index a6b5319f839..19c6895d31a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryBond.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.card.spellability.AbilityActivated; @@ -30,6 +29,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.card.cardfactory.CardFactoryUtil; import forge.card.cost.Cost; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -325,7 +325,7 @@ public final class AbilityFactoryBond { } // find list of valid cards to pair with - List cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List cards = GameState.getCardsIn(ZoneType.Battlefield); cards = AbilityFactory.filterListByType(cards, params.get("ValidCards"), sa); if (cards.isEmpty()) { return; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java index 721022848bf..f6969b1a2f9 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java @@ -27,7 +27,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -51,6 +50,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityStackInstance; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.Combat; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseType; @@ -513,7 +513,7 @@ public final class AbilityFactoryChangeZone { //Ninjutsu if (params.containsKey("Ninjutsu")) { - if (source.isType("Legendary") && !AllZoneUtil.isCardInPlay("Mirror Gallery")) { + if (source.isType("Legendary") && !GameState.isCardInPlay("Mirror Gallery")) { final List list = ai.getCardsIn(ZoneType.Battlefield); if (Iterables.any(list, CardPredicates.nameEquals(source.getName()))) { return false; @@ -976,7 +976,7 @@ public final class AbilityFactoryChangeZone { } } else if (!origin.contains(ZoneType.Library) && !origin.contains(ZoneType.Hand) && !params.containsKey("DefinedPlayer")) { - fetchList = AllZoneUtil.getCardsIn(origin); + fetchList = GameState.getCardsIn(origin); } else { fetchList = player.getCardsIn(origin); } @@ -1162,7 +1162,7 @@ public final class AbilityFactoryChangeZone { } } else if (!origin.contains(ZoneType.Library) && !origin.contains(ZoneType.Hand) && !params.containsKey("DefinedPlayer")) { - fetchList = AllZoneUtil.getCardsIn(origin); + fetchList = GameState.getCardsIn(origin); fetchList = AbilityFactory.filterListByType(fetchList, type, sa); } else { fetchList = player.getCardsIn(origin); @@ -1462,11 +1462,11 @@ public final class AbilityFactoryChangeZone { Card card = null; Combat combat = new Combat(); combat.initiatePossibleDefenders(ai); - List attackers = AllZoneUtil.getCreaturesInPlay(ai.getOpponent()); + List attackers = GameState.getCreaturesInPlay(ai.getOpponent()); for (Card att : attackers) { combat.addAttacker(att); } - combat = ComputerUtilBlock.getBlockers(ai, combat, AllZoneUtil.getCreaturesInPlay(ai)); + combat = ComputerUtilBlock.getBlockers(ai, combat, GameState.getCreaturesInPlay(ai)); if (CombatUtil.lifeInDanger(ai, combat)) { // need something AI can cast now @@ -1666,7 +1666,7 @@ public final class AbilityFactoryChangeZone { tgt.resetTargets(); } - List list = AllZoneUtil.getCardsIn(origin); + List list = GameState.getCardsIn(origin); list = CardLists.getValidCards(list, tgt.getValidTgts(), ai, source); if (params.containsKey("AITgts")) { list = CardLists.getValidCards(list, params.get("AITgts"), sa.getActivatingPlayer(), source); @@ -1776,7 +1776,7 @@ public final class AbilityFactoryChangeZone { if (!sa.isTrigger() && sa.getPayCosts() != null && Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2) && Singletons.getModel().getGameState().getPhaseHandler().isPlayerTurn(ai) - && AllZoneUtil.getCreaturesInPlay(ai).isEmpty()) { + && GameState.getCreaturesInPlay(ai).isEmpty()) { return false; } list = CardLists.filterControlledBy(list, ai.getOpponent()); @@ -1901,7 +1901,7 @@ public final class AbilityFactoryChangeZone { final ZoneType destination = ZoneType.smartValueOf(params.get("Destination")); final Target tgt = sa.getTarget(); - List list = AllZoneUtil.getCardsIn(origin); + List list = GameState.getCardsIn(origin); list = CardLists.getValidCards(list, tgt.getValidTgts(), ai, source); // Narrow down the list: @@ -2349,7 +2349,7 @@ public final class AbilityFactoryChangeZone { final ArrayList list = AbilityFactory.getDefinedCards(sa.getSourceCard(), defined, sa); for (final Card c : list) { - final Card actualCard = AllZoneUtil.getCardState(c); + final Card actualCard = GameState.getCardState(c); ret.add(actualCard); } return ret; @@ -2927,7 +2927,7 @@ public final class AbilityFactoryChangeZone { } if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { - cards = AllZoneUtil.getCardsIn(origin); + cards = GameState.getCardsIn(origin); } else { cards = tgtPlayers.get(0).getCardsIn(origin); } @@ -2972,7 +2972,7 @@ public final class AbilityFactoryChangeZone { } if (remember != null) { - AllZoneUtil.getCardState(sa.getSourceCard()).addRemembered(c); + GameState.getCardState(sa.getSourceCard()).addRemembered(c); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java index dafd96dfc67..1c96d0f91ab 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChoose.java @@ -31,7 +31,6 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -47,6 +46,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.card.cost.Cost; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -382,7 +382,7 @@ public final class AbilityFactoryChoose { if (params.containsKey("AILogic")) { final String logic = params.get("AILogic"); if (logic.equals("MostProminentOnBattlefield")) { - chosen = CardFactoryUtil.getMostProminentCreatureType(AllZoneUtil + chosen = CardFactoryUtil.getMostProminentCreatureType(GameState .getCardsIn(ZoneType.Battlefield)); } if (logic.equals("MostProminentComputerControls")) { @@ -391,11 +391,11 @@ public final class AbilityFactoryChoose { if (logic.equals("MostProminentHumanControls")) { chosen = CardFactoryUtil.getMostProminentCreatureType(opp.getCardsIn(ZoneType.Battlefield)); if (!CardUtil.isACreatureType(chosen) || invalidTypes.contains(chosen)) { - chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), opp)); + chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(GameState.getCardsInGame(), opp)); } } if (logic.equals("MostProminentInComputerDeck")) { - chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai)); + chosen = CardFactoryUtil.getMostProminentCreatureType(CardLists.filterControlledBy(GameState.getCardsInGame(), ai)); } if (logic.equals("MostProminentInComputerGraveyard")) { chosen = CardFactoryUtil.getMostProminentCreatureType(ai.getCardsIn(ZoneType.Graveyard)); @@ -730,21 +730,21 @@ public final class AbilityFactoryChoose { if (params.containsKey("AILogic")) { final String logic = params.get("AILogic"); if (logic.equals("MostProminentInHumanDeck")) { - chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), opp))); + chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(GameState.getCardsInGame(), opp))); } else if (logic.equals("MostProminentInComputerDeck")) { - chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai))); + chosen.add(CardFactoryUtil.getMostProminentColor(CardLists.filterControlledBy(GameState.getCardsInGame(), ai))); } else if (logic.equals("MostProminentDualInComputerDeck")) { - List prominence = CardFactoryUtil.getColorByProminence(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai)); + List prominence = CardFactoryUtil.getColorByProminence(CardLists.filterControlledBy(GameState.getCardsInGame(), ai)); chosen.add(prominence.get(0)); chosen.add(prominence.get(1)); } else if (logic.equals("MostProminentInGame")) { - chosen.add(CardFactoryUtil.getMostProminentColor(AllZoneUtil.getCardsInGame())); + chosen.add(CardFactoryUtil.getMostProminentColor(GameState.getCardsInGame())); } else if (logic.equals("MostProminentHumanCreatures")) { - List list = AllZoneUtil.getCreaturesInPlay(opp); + List list = GameState.getCreaturesInPlay(opp); if (list.isEmpty()) { - list = CardLists.filter(CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), opp), CardPredicates.Presets.CREATURES); + list = CardLists.filter(CardLists.filterControlledBy(GameState.getCardsInGame(), opp), CardPredicates.Presets.CREATURES); } chosen.add(CardFactoryUtil.getMostProminentColor(list)); } @@ -752,7 +752,7 @@ public final class AbilityFactoryChoose { chosen.add(CardFactoryUtil.getMostProminentColor(ai.getCardsIn(ZoneType.Battlefield))); } else if (logic.equals("MostProminentPermanent")) { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List list = GameState.getCardsIn(ZoneType.Battlefield); chosen.add(CardFactoryUtil.getMostProminentColor(list)); } else if (logic.equals("MostProminentAttackers")) { @@ -1646,7 +1646,7 @@ public final class AbilityFactoryChoose { chosen = CardFactoryUtil.getMostProminentCardName(p.getOpponent().getCardsIn(ZoneType.Library)); } } else { - List list = CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), p.getOpponent()); + List list = CardLists.filterControlledBy(GameState.getCardsInGame(), p.getOpponent()); list = CardLists.filter(list, Predicates.not(Presets.LANDS)); if (!list.isEmpty()) { chosen = list.get(0).getName(); @@ -1872,7 +1872,7 @@ public final class AbilityFactoryChoose { if (params.containsKey("ChoiceZone")) { choiceZone = ZoneType.smartValueOf(params.get("ChoiceZone")); } - List choices = AllZoneUtil.getCardsIn(choiceZone); + List choices = GameState.getCardsIn(choiceZone); if (params.containsKey("Choices")) { choices = CardLists.getValidCards(choices, params.get("Choices"), host.getController(), host); } @@ -1941,7 +1941,7 @@ public final class AbilityFactoryChoose { if (params.containsKey("ChoiceZone")) { choiceZone = ZoneType.smartValueOf(params.get("ChoiceZone")); } - List choices = AllZoneUtil.getCardsIn(choiceZone); + List choices = GameState.getCardsIn(choiceZone); if (params.containsKey("Choices")) { choices = CardLists.getValidCards(choices, params.get("Choices"), host.getController(), host); } @@ -1954,7 +1954,7 @@ public final class AbilityFactoryChoose { ? CardFactoryUtil.xCount(host, host.getSVar(params.get("Amount"))) : Integer.parseInt(numericAmount); if (params.containsKey("SunderingTitan")) { - final List land = AllZoneUtil.getLandsInPlay(); + final List land = GameState.getLandsInPlay(); final ArrayList basic = CardUtil.getBasicTypes(); for (final String type : basic) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java index 976ded217ff..dc294f92c7d 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCleanup.java @@ -20,12 +20,12 @@ package forge.card.abilityfactory; import java.util.HashMap; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.AbilitySub; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; // Cleanup is not the same as other AFs, it is only used as a Drawback, and only used to Cleanup particular card states // That need to be reset. I'm creating this to clear Remembered Cards at the @@ -106,7 +106,7 @@ public final class AbilityFactoryCleanup { if (params.containsKey("ClearRemembered")) { source.clearRemembered(); - AllZoneUtil.getCardState(source).clearRemembered(); + GameState.getCardState(source).clearRemembered(); } if (params.containsKey("ClearImprinted")) { source.clearImprinted(); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java index dc934dcae2e..a1b6a4887b6 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCopy.java @@ -25,7 +25,6 @@ import java.util.List; import java.util.Random; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -41,6 +40,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -307,7 +307,7 @@ public final class AbilityFactoryCopy { final Target abTgt = sa.getTarget(); if (abTgt != null) { - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, abTgt.getValidTgts(), source.getController(), source); list = CardLists.getTargetableCards(list, sa); abTgt.resetTargets(); @@ -402,7 +402,7 @@ public final class AbilityFactoryCopy { } // start copied Kiki code - int multiplier = AllZoneUtil.getTokenDoublersMagnitude(hostCard.getController()); + int multiplier = GameState.getTokenDoublersMagnitude(hostCard.getController()); multiplier *= numCopies; final Card[] crds = new Card[multiplier]; @@ -487,7 +487,7 @@ public final class AbilityFactoryCopy { public void resolve() { // technically your opponent could steal the token // and the token shouldn't be sacrificed - if (AllZoneUtil.isCardInPlay(target[index])) { + if (GameState.isCardInPlay(target[index])) { if (params.get("AtEOT").equals("Sacrifice")) { // maybe do a setSacrificeAtEOT, but // probably not. diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java index 9aee13ce6a8..cfd336afc2a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java @@ -28,7 +28,6 @@ import java.util.Random; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -43,6 +42,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.control.input.Input; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -1526,7 +1526,7 @@ public class AbilityFactoryCounters { } private static void proliferateResolveHuman(final AbilityFactory af, final SpellAbility sa) { - final List unchosen = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List unchosen = GameState.getCardsIn(ZoneType.Battlefield); AllZone.getInputControl().setInput(new Input() { private static final long serialVersionUID = -1779224307654698954L; @@ -1599,7 +1599,7 @@ public class AbilityFactoryCounters { } }; - List cardsToProliferate = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), predProliferate); + List cardsToProliferate = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), predProliferate); List playersToPoison = new ArrayList(); for( Player e : enemies ) { if ( e.getPoisonCounters() > 0 ) @@ -1990,7 +1990,7 @@ public class AbilityFactoryCounters { final String valid = params.get("ValidCards"); final ZoneType zone = params.containsKey("ValidZone") ? ZoneType.smartValueOf(params.get("ValidZone")) : ZoneType.Battlefield; - List cards = AllZoneUtil.getCardsIn(zone); + List cards = GameState.getCardsIn(zone); cards = CardLists.getValidCards(cards, valid, sa.getSourceCard().getController(), sa.getSourceCard()); final Target tgt = sa.getTarget(); @@ -2245,7 +2245,7 @@ public class AbilityFactoryCounters { final String valid = params.get("ValidCards"); final ZoneType zone = params.containsKey("ValidZone") ? ZoneType.smartValueOf(params.get("ValidZone")) : ZoneType.Battlefield; - List cards = AllZoneUtil.getCardsIn(zone); + List cards = GameState.getCardsIn(zone); cards = CardLists.getValidCards(cards, valid, sa.getSourceCard().getController(), sa.getSourceCard()); final Target tgt = sa.getTarget(); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java index 17169859b69..4b342242f90 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java @@ -25,7 +25,6 @@ import java.util.Random; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -41,6 +40,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.card.spellability.TargetSelection; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -904,7 +904,7 @@ public class AbilityFactoryDealDamage { for (final Object o : tgts) { if (o instanceof Card) { final Card c = (Card) o; - if (AllZoneUtil.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(saMe))) { + if (GameState.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(saMe))) { if (noPrevention) { c.addDamageWithoutPrevention(dmg, source); } else if (combatDmg) { @@ -1376,7 +1376,7 @@ public class AbilityFactoryDealDamage { } if (params.containsKey("ValidCards")) { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } if (targetPlayer != null) { @@ -1640,7 +1640,7 @@ public class AbilityFactoryDealDamage { final HashMap params = af.getMapParams(); final Card card = sa.getSourceCard(); - List sources = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List sources = GameState.getCardsIn(ZoneType.Battlefield); if (params.containsKey("ValidCards")) { sources = CardLists.getValidCards(sources, params.get("ValidCards"), card.getController(), card); } @@ -1660,7 +1660,7 @@ public class AbilityFactoryDealDamage { // System.out.println(source+" deals "+dmg+" damage to "+o.toString()); if (o instanceof Card) { final Card c = (Card) o; - if (AllZoneUtil.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) { + if (GameState.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) { c.addDamage(dmg, source); } @@ -1900,7 +1900,7 @@ public class AbilityFactoryDealDamage { Target tgt = sa.getTarget(); tgt.resetTargets(); - List aiCreatures = AllZoneUtil.getCreaturesInPlay(ai); + List aiCreatures = GameState.getCreaturesInPlay(ai); aiCreatures = CardLists.getTargetableCards(aiCreatures, sa); aiCreatures = CardLists.filter(aiCreatures, new Predicate() { @Override @@ -1909,7 +1909,7 @@ public class AbilityFactoryDealDamage { } }); - List humCreatures = AllZoneUtil.getCreaturesInPlay(ai.getOpponent()); + List humCreatures = GameState.getCreaturesInPlay(ai.getOpponent()); humCreatures = CardLists.getTargetableCards(humCreatures, sa); final Random r = MyRandom.getRandom(); @@ -1993,8 +1993,8 @@ public class AbilityFactoryDealDamage { fighter2 = tgts.get(1); } - if (fighter1 == null || fighter2 == null || !AllZoneUtil.isCardInPlay(fighter1) - || !AllZoneUtil.isCardInPlay(fighter2)) { + if (fighter1 == null || fighter2 == null || !GameState.isCardInPlay(fighter1) + || !GameState.isCardInPlay(fighter2)) { return; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java index 40af5c8884a..9547104339c 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDebuff.java @@ -27,7 +27,6 @@ import java.util.Random; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -42,6 +41,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityRestriction; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -297,7 +297,7 @@ public final class AbilityFactoryDebuff { private static boolean debuffCanPlayAI(final Player ai, final AbilityFactory af, final SpellAbility sa) { // if there is no target and host card isn't in play, don't activate final Card source = sa.getSourceCard(); - if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(source)) { + if ((sa.getTarget() == null) && !GameState.isCardInPlay(source)) { return false; } @@ -450,7 +450,7 @@ public final class AbilityFactoryDebuff { private static List getCurseCreatures(final Player ai, final AbilityFactory af, final SpellAbility sa, final ArrayList kws) { final Player opp = ai.getOpponent(); - List list = AllZoneUtil.getCreaturesInPlay(opp); + List list = GameState.getCreaturesInPlay(opp); list = CardLists.getTargetableCards(list, sa); if (!list.isEmpty()) { @@ -480,7 +480,7 @@ public final class AbilityFactoryDebuff { * @return a boolean. */ private static boolean debuffMandatoryTarget(final Player ai, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); final Target tgt = sa.getTarget(); list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -601,7 +601,7 @@ public final class AbilityFactoryDebuff { for (final Card tgtC : tgtCards) { final ArrayList hadIntrinsic = new ArrayList(); - if (AllZoneUtil.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) { + if (GameState.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) { for (final String kw : kws) { if (tgtC.getIntrinsicKeyword().contains(kw)) { hadIntrinsic.add(kw); @@ -616,7 +616,7 @@ public final class AbilityFactoryDebuff { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { for (final String kw : hadIntrinsic) { tgtC.addIntrinsicKeyword(kw); } @@ -842,12 +842,12 @@ public final class AbilityFactoryDebuff { valid = params.get("ValidCards"); } - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard); for (final Card tgtC : list) { final ArrayList hadIntrinsic = new ArrayList(); - if (AllZoneUtil.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) { + if (GameState.isCardInPlay(tgtC) && tgtC.canBeTargetedBy(sa)) { for (final String kw : kws) { if (tgtC.getIntrinsicKeyword().contains(kw)) { hadIntrinsic.add(kw); @@ -862,7 +862,7 @@ public final class AbilityFactoryDebuff { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { for (final String kw : hadIntrinsic) { tgtC.addIntrinsicKeyword(kw); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java index fe1b0360dfa..17989c1125b 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java @@ -25,7 +25,6 @@ import java.util.Random; import com.google.common.base.Predicate; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -40,6 +39,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -376,7 +376,7 @@ public class AbilityFactoryDestroy { final Player opp = ai.getOpponent(); if (tgt != null) { List list; - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getTargetableCards(list, sa); list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source); @@ -591,7 +591,7 @@ public class AbilityFactoryDestroy { } for (final Card tgtC : tgtCards) { - if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { + if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { boolean destroyed = false; if (sac) { destroyed = Singletons.getModel().getGameAction().sacrifice(tgtC, sa); @@ -606,7 +606,7 @@ public class AbilityFactoryDestroy { } for (final Card unTgtC : untargetedCards) { - if (AllZoneUtil.isCardInPlay(unTgtC)) { + if (GameState.isCardInPlay(unTgtC)) { boolean destroyed = false; if (sac) { destroyed = Singletons.getModel().getGameAction().sacrifice(unTgtC, sa); @@ -1037,7 +1037,7 @@ public class AbilityFactoryDestroy { valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa))); } - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); if (targetPlayer != null) { list = CardLists.filterControlledBy(list, targetPlayer); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java index abd4c7a34cf..470811d1ecc 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java @@ -25,7 +25,6 @@ import java.util.Random; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -43,6 +42,7 @@ import forge.card.spellability.Target; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; @@ -299,8 +299,8 @@ public class AbilityFactoryEffect { } else if (logic.equals("Always")) { randomReturn = true; } else if (logic.equals("Evasion")) { - List comp = AllZoneUtil.getCreaturesInPlay(ai); - List human = AllZoneUtil.getCreaturesInPlay(ai.getOpponent()); + List comp = GameState.getCreaturesInPlay(ai); + List human = GameState.getCreaturesInPlay(ai.getOpponent()); // only count creatures that can attack or block comp = CardLists.filter(comp, new Predicate() { @@ -448,7 +448,7 @@ public class AbilityFactoryEffect { } // Unique Effects shouldn't be duplicated - if (params.containsKey("Unique") && AllZoneUtil.isCardInPlay(name)) { + if (params.containsKey("Unique") && GameState.isCardInPlay(name)) { return; } @@ -554,7 +554,7 @@ public class AbilityFactoryEffect { // Remember created effect if (params.containsKey("RememberEffect")) { - AllZoneUtil.getCardState(card).addRemembered(eff); + GameState.getCardState(card).addRemembered(eff); } // Duration diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java index 08048fa56f3..664d567f6f3 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryGainControl.java @@ -26,7 +26,6 @@ import java.util.Map; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -41,6 +40,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.card.cost.Cost; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -425,7 +425,7 @@ public class AbilityFactoryGainControl { final Target tgt = sa.getTarget(); if (this.params.containsKey("AllValid")) { - tgtCards = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + tgtCards = GameState.getCardsIn(ZoneType.Battlefield); tgtCards = AbilityFactory.filterListByType(tgtCards, this.params.get("AllValid"), sa); } else if ((tgt != null) && !this.params.containsKey("Defined")) { tgtCards.addAll(tgt.getTargetCards()); @@ -469,7 +469,7 @@ public class AbilityFactoryGainControl { sa.getSourceCard().addGainControlTarget(tgtC); } - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { if (!tgtC.equals(newController)) { tgtC.addController(newController); @@ -562,7 +562,7 @@ public class AbilityFactoryGainControl { private boolean gainControlDrawbackAI(final Player ai, final SpellAbility sa) { if ((sa.getTarget() == null) || !sa.getTarget().doesTarget()) { if (this.params.containsKey("AllValid")) { - List tgtCards = CardLists.filterControlledBy(AllZoneUtil.getCardsIn(ZoneType.Battlefield), ai.getOpponent()); + List tgtCards = CardLists.filterControlledBy(GameState.getCardsIn(ZoneType.Battlefield), ai.getOpponent()); tgtCards = AbilityFactory.filterListByType(tgtCards, this.params.get("AllValid"), sa); if (tgtCards.isEmpty()) { return false; @@ -651,7 +651,7 @@ public class AbilityFactoryGainControl { if (null == c) { return; } - if (AllZoneUtil.isCardInPlay(c)) { + if (GameState.isCardInPlay(c)) { c.removeController(newController); // Singletons.getModel().getGameAction().changeController(new ArrayList(c), // c.getController(), originalController); @@ -909,8 +909,8 @@ public class AbilityFactoryGainControl { object2 = tgts.get(1); } - if (object1 == null || object2 == null || !AllZoneUtil.isCardInPlay(object1) - || !AllZoneUtil.isCardInPlay(object2)) { + if (object1 == null || object2 == null || !GameState.isCardInPlay(object1) + || !GameState.isCardInPlay(object2)) { return; } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java index b3cb5f75ad8..1f76b13cb77 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryMana.java @@ -25,7 +25,6 @@ import java.util.Random; import com.google.common.collect.Iterables; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -42,6 +41,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.control.input.InputPayManaCostUtil; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -772,7 +772,7 @@ public class AbilityFactoryMana { cards.add(c); } } else { - cards = CardLists.getValidCards(AllZoneUtil.getCardsIn(ZoneType.Battlefield), validCard, abMana.getActivatingPlayer(), card); + cards = CardLists.getValidCards(GameState.getCardsIn(ZoneType.Battlefield), validCard, abMana.getActivatingPlayer(), card); } // remove anything cards that is already in parents diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java index 2c0bd69b0a0..1988ca96a4f 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java @@ -27,7 +27,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -42,6 +41,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -476,7 +476,7 @@ public class AbilityFactoryPermanentState { final Card source = sa.getSourceCard(); final Target tgt = sa.getTarget(); - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source); list = CardLists.getTargetableCards(list, sa); @@ -606,7 +606,7 @@ public class AbilityFactoryPermanentState { } for (final Card tgtC : tgtCards) { - if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { + if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { tgtC.untap(); } } @@ -1101,7 +1101,7 @@ public class AbilityFactoryPermanentState { final Card source = sa.getSourceCard(); final Target tgt = sa.getTarget(); - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source); list = CardLists.getTargetableCards(list, sa); @@ -1230,7 +1230,7 @@ public class AbilityFactoryPermanentState { } for (final Card tgtC : tgtCards) { - if ((AllZoneUtil.isCardInPlay(tgtC) || params.containsKey("ETB")) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { + if ((GameState.isCardInPlay(tgtC) || params.containsKey("ETB")) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { if (tgtC.isUntapped() && (remTapped)) { card.addRemembered(tgtC); } @@ -1421,7 +1421,7 @@ public class AbilityFactoryPermanentState { } if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } else { list = tgtPlayers.get(0).getCardsIn(ZoneType.Battlefield); } @@ -1679,7 +1679,7 @@ public class AbilityFactoryPermanentState { } if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { - cards = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + cards = GameState.getCardsIn(ZoneType.Battlefield); } else { cards = tgtPlayers.get(0).getCardsIn(ZoneType.Battlefield); } @@ -1723,7 +1723,7 @@ public class AbilityFactoryPermanentState { valid = params.get("ValidCards"); } - List validTappables = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List validTappables = GameState.getCardsIn(ZoneType.Battlefield); final Target tgt = sa.getTarget(); @@ -1774,7 +1774,7 @@ public class AbilityFactoryPermanentState { * @return a {@link forge.CardList} object. */ private static List getTapAllTargets(final String valid, final Card source) { - List tmpList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List tmpList = GameState.getCardsIn(ZoneType.Battlefield); tmpList = CardLists.getValidCards(tmpList, valid, source.getController(), source); tmpList = CardLists.filter(tmpList, Presets.UNTAPPED); return tmpList; @@ -2227,7 +2227,7 @@ public class AbilityFactoryPermanentState { } for (final Card tgtC : tgtCards) { - if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { + if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { if (sa.getActivatingPlayer().isHuman()) { final String[] tapOrUntap = new String[] { "Tap", "Untap" }; final Object z = GuiChoose.oneOrNone("Tap or Untap " + tgtC + "?", tapOrUntap); @@ -2602,7 +2602,7 @@ public class AbilityFactoryPermanentState { final Card source = sa.getSourceCard(); final Target tgt = sa.getTarget(); - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getTargetableCards(CardLists.getValidCards(list, tgt.getValidTgts(), source.getController(), source), sa); return false; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java index 6684528fc19..c8579d4b77a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPlay.java @@ -26,7 +26,6 @@ import java.util.Random; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -44,6 +43,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityRestriction; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -304,7 +304,7 @@ public final class AbilityFactoryPlay { final Target tgt = sa.getTarget(); if (tgt != null) { ZoneType zone = tgt.getZone().get(0); - cards = AllZoneUtil.getCardsIn(zone); + cards = GameState.getCardsIn(zone); cards = CardLists.getValidCards(cards, tgt.getValidTgts(), ai, source); if (cards.isEmpty()) { return false; @@ -376,7 +376,7 @@ public final class AbilityFactoryPlay { if (params.containsKey("ValidZone")) { zone = ZoneType.smartValueOf(params.get("ValidZone")); } - tgtCards = AllZoneUtil.getCardsIn(zone); + tgtCards = GameState.getCardsIn(zone); tgtCards = AbilityFactory.filterListByType(tgtCards, params.get("Valid"), sa); } else if (params.containsKey("Defined")) { tgtCards = new ArrayList(AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa)); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java index 30d253cb5ee..f0fd08dfa80 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPreventDamage.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.List; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -37,6 +36,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; @@ -458,7 +458,7 @@ public class AbilityFactoryPreventDamage { final Target tgt = sa.getTarget(); tgt.resetTargets(); // filter AIs battlefield by what I can target - List targetables = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List targetables = GameState.getCardsIn(ZoneType.Battlefield); targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, hostCard); final List compTargetables = CardLists.filterControlledBy(targetables, ai); @@ -536,7 +536,7 @@ public class AbilityFactoryPreventDamage { for (final Object o : tgts) { if (o instanceof Card) { final Card c = (Card) o; - if (AllZoneUtil.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) { + if (GameState.isCardInPlay(c) && (!targeted || c.canBeTargetedBy(sa))) { c.addPreventNextDamage(numDam); } @@ -549,7 +549,7 @@ public class AbilityFactoryPreventDamage { } for (final Card c : untargetedCards) { - if (AllZoneUtil.isCardInPlay(c)) { + if (GameState.isCardInPlay(c)) { c.addPreventNextDamage(numDam); } } @@ -788,7 +788,7 @@ public class AbilityFactoryPreventDamage { } if (params.containsKey("ValidCards")) { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } list = AbilityFactory.filterListByType(list, params.get("ValidCards"), sa); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java index 4ff99676b05..408be47b2e0 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryProtection.java @@ -28,7 +28,6 @@ import javax.swing.JOptionPane; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -44,6 +43,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -249,7 +249,7 @@ public final class AbilityFactoryProtection { final Card hostCard = af.getHostCard(); final ArrayList gains = AbilityFactoryProtection.getProtectionList(hostCard, af.getMapParams()); - List list = AllZoneUtil.getCreaturesInPlay(ai); + List list = GameState.getCreaturesInPlay(ai); list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { @@ -304,7 +304,7 @@ public final class AbilityFactoryProtection { final HashMap params = af.getMapParams(); final Card hostCard = af.getHostCard(); // if there is no target and host card isn't in play, don't activate - if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(hostCard)) { + if ((sa.getTarget() == null) && !GameState.isCardInPlay(hostCard)) { return false; } @@ -470,7 +470,7 @@ public final class AbilityFactoryProtection { final HashMap params = af.getMapParams(); final Card host = af.getHostCard(); - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); final Target tgt = sa.getTarget(); list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -745,9 +745,9 @@ public final class AbilityFactoryProtection { if (params.containsKey("AILogic")) { final String logic = params.get("AILogic"); if (logic.equals("MostProminentHumanCreatures")) { - List list = AllZoneUtil.getCreaturesInPlay(ai.getOpponent()); + List list = GameState.getCreaturesInPlay(ai.getOpponent()); if (list.isEmpty()) { - list = CardLists.filterControlledBy(AllZoneUtil.getCardsInGame(), ai.getOpponent()); + list = CardLists.filterControlledBy(GameState.getCardsInGame(), ai.getOpponent()); } if (!list.isEmpty()) { choice = CardFactoryUtil.getMostProminentColor(list); @@ -788,7 +788,7 @@ public final class AbilityFactoryProtection { final Card tgtC = tgtCards.get(j); // only pump things in play - if (!AllZoneUtil.isCardInPlay(tgtC)) { + if (!GameState.isCardInPlay(tgtC)) { continue; } @@ -808,7 +808,7 @@ public final class AbilityFactoryProtection { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { for (final String gain : gains) { tgtC.removeExtrinsicKeyword("Protection from " + gain); } @@ -825,7 +825,7 @@ public final class AbilityFactoryProtection { for (final Card unTgtC : untargetedCards) { // only pump things in play - if (!AllZoneUtil.isCardInPlay(unTgtC)) { + if (!GameState.isCardInPlay(unTgtC)) { continue; } @@ -840,7 +840,7 @@ public final class AbilityFactoryProtection { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(unTgtC)) { + if (GameState.isCardInPlay(unTgtC)) { for (final String gain : gains) { unTgtC.removeExtrinsicKeyword("Protection from " + gain); } @@ -1032,7 +1032,7 @@ public final class AbilityFactoryProtection { private static boolean protectAllCanPlayAI(final Player ai, final AbilityFactory af, final SpellAbility sa) { final Card hostCard = af.getHostCard(); // if there is no target and host card isn't in play, don't activate - if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(hostCard)) { + if ((sa.getTarget() == null) && !GameState.isCardInPlay(hostCard)) { return false; } @@ -1192,11 +1192,11 @@ public final class AbilityFactoryProtection { valid = params.get("ValidCards"); } if (!valid.equals("")) { - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, valid, sa.getActivatingPlayer(), host); for (final Card tgtC : list) { - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { for (final String gain : gains) { tgtC.addExtrinsicKeyword("Protection from " + gain); } @@ -1208,7 +1208,7 @@ public final class AbilityFactoryProtection { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { for (final String gain : gains) { tgtC.removeExtrinsicKeyword("Protection from " + gain); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index af10038ad09..498526048e1 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -27,7 +27,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -46,6 +45,7 @@ import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityRestriction; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.Combat; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseHandler; @@ -372,7 +372,7 @@ public class AbilityFactoryPump { || card.getNetCombatDamage() <= 0 || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) || ph.getPhase().isBefore(PhaseType.MAIN1) - || CardLists.getNotKeyword(AllZoneUtil.getCreaturesInPlay(ai), "Defender").isEmpty())) { + || CardLists.getNotKeyword(GameState.getCreaturesInPlay(ai), "Defender").isEmpty())) { return false; } if (ph.isPlayerTurn(human) && (!card.isAttacking() @@ -414,7 +414,7 @@ public class AbilityFactoryPump { } Predicate opBlockers = CardPredicates.possibleBlockers(card); - List cardsCanBlock = CardLists.filter(AllZoneUtil.getCreaturesInPlay(opp), opBlockers); + List cardsCanBlock = CardLists.filter(GameState.getCreaturesInPlay(opp), opBlockers); final boolean evasive = (keyword.endsWith("Unblockable") || keyword.endsWith("Fear") || keyword.endsWith("Intimidate") || keyword.endsWith("Shadow")); @@ -479,7 +479,7 @@ public class AbilityFactoryPump { } } else if (ph.isPlayerTurn(ai) && ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS) && CombatUtil.canAttack(card)) { - List blockers = AllZoneUtil.getCreaturesInPlay(opp); + List blockers = GameState.getCreaturesInPlay(opp); for (Card blocker : blockers) { if (CombatUtil.canBlock(card, blocker, combat) && !CombatUtil.canDestroyBlocker(blocker, card, combat, false)) { @@ -491,7 +491,7 @@ public class AbilityFactoryPump { } else if (combatRelevant) { if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking()) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) - || (AllZoneUtil.getCreaturesInPlay(opp).size() < 1) + || (GameState.getCreaturesInPlay(opp).size() < 1) || cardsCanBlock.isEmpty()) { return false; } @@ -554,7 +554,7 @@ public class AbilityFactoryPump { } else if (keyword.equals("Vigilance")) { if (ph.isPlayerTurn(opp) || !CombatUtil.canAttack(card) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS) - || CardLists.getNotKeyword(AllZoneUtil.getCreaturesInPlay(opp), "Defender").size() < 1) { + || CardLists.getNotKeyword(GameState.getCreaturesInPlay(opp), "Defender").size() < 1) { return false; } } else if (keyword.equals("Reach")) { @@ -591,7 +591,7 @@ public class AbilityFactoryPump { if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking()) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || card.getNetCombatDamage() <= 0 - || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Island").isEmpty() + || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Island").isEmpty() || cardsCanBlock.isEmpty()) { return false; } @@ -599,7 +599,7 @@ public class AbilityFactoryPump { if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking()) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || card.getNetCombatDamage() <= 0 - || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Swamp").isEmpty() + || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Swamp").isEmpty() || cardsCanBlock.isEmpty()) { return false; } @@ -607,7 +607,7 @@ public class AbilityFactoryPump { if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking()) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || card.getNetCombatDamage() <= 0 - || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Mountain").isEmpty() + || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Mountain").isEmpty() || cardsCanBlock.isEmpty()) { return false; } @@ -615,7 +615,7 @@ public class AbilityFactoryPump { if (ph.isPlayerTurn(opp) || !(CombatUtil.canAttack(card) || card.isAttacking()) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || card.getNetCombatDamage() <= 0 - || CardLists.getType(AllZoneUtil.getPlayerLandsInPlay(opp), "Forest").isEmpty() + || CardLists.getType(GameState.getPlayerLandsInPlay(opp), "Forest").isEmpty() || cardsCanBlock.isEmpty()) { return false; } @@ -705,7 +705,7 @@ public class AbilityFactoryPump { */ private List getPumpCreatures(final Player ai, final SpellAbility sa) { - List list = AllZoneUtil.getCreaturesInPlay(ai); + List list = GameState.getCreaturesInPlay(ai); list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { @@ -729,7 +729,7 @@ public class AbilityFactoryPump { * @return a {@link forge.CardList} object. */ private List getCurseCreatures(final Player ai, final SpellAbility sa, final int defense, final int attack) { - List list = AllZoneUtil.getCreaturesInPlay(ai.getOpponent()); + List list = GameState.getCreaturesInPlay(ai.getOpponent()); list = CardLists.getTargetableCards(list, sa); if ((defense < 0) && !list.isEmpty()) { // with spells that give -X/-X, // compi will try to destroy a @@ -982,7 +982,7 @@ public class AbilityFactoryPump { List list = new ArrayList(); if (this.abilityFactory.getMapParams().containsKey("AILogic")) { if (this.abilityFactory.getMapParams().get("AILogic").equals("HighestPower")) { - list = CardLists.getValidCards(AllZoneUtil.getCreaturesInPlay(), tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); + list = CardLists.getValidCards(GameState.getCreaturesInPlay(), tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); list = CardLists.getTargetableCards(list, sa); CardLists.sortAttack(list); if (!list.isEmpty()) { @@ -1001,7 +1001,7 @@ public class AbilityFactoryPump { } else { if (!tgt.canTgtCreature()) { ZoneType zone = tgt.getZone().get(0); - list = AllZoneUtil.getCardsIn(zone); + list = GameState.getCardsIn(zone); } else { list = this.getPumpCreatures(ai, sa); } @@ -1081,7 +1081,7 @@ public class AbilityFactoryPump { * @return a boolean. */ private boolean pumpMandatoryTarget(final Player ai, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); final Target tgt = sa.getTarget(); final Player opp = ai.getOpponent(); list = CardLists.getValidCards(list, tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -1445,7 +1445,7 @@ public class AbilityFactoryPump { final Card tgtC = tgtCards.get(j); // only pump things in PumpZone - if (!AllZoneUtil.getCardsIn(pumpZone).contains(tgtC)) { + if (!GameState.getCardsIn(pumpZone).contains(tgtC)) { continue; } @@ -1460,7 +1460,7 @@ public class AbilityFactoryPump { for (int i = 0; i < untargetedCards.size(); i++) { final Card tgtC = untargetedCards.get(i); // only pump things in PumpZone - if (!AllZoneUtil.getCardsIn(pumpZone).contains(tgtC)) { + if (!GameState.getCardsIn(pumpZone).contains(tgtC)) { continue; } @@ -1480,7 +1480,7 @@ public class AbilityFactoryPump { //if host is not on the battlefield don't apply if (this.params.containsKey("UntilLoseControlOfHost") - && !AllZoneUtil.isCardInPlay(sa.getSourceCard())) { + && !GameState.isCardInPlay(sa.getSourceCard())) { return; } final int a = this.getNumAttack(sa); @@ -1859,7 +1859,7 @@ public class AbilityFactoryPump { list = new ArrayList(); if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { for (final ZoneType zone : affectedZones) { - list.addAll(AllZoneUtil.getCardsIn(zone)); + list.addAll(GameState.getCardsIn(zone)); } } else { @@ -1907,7 +1907,7 @@ public class AbilityFactoryPump { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(tgtC)) { + if (GameState.isCardInPlay(tgtC)) { tgtC.addTempAttackBoost(-1 * a); tgtC.addTempDefenseBoost(-1 * d); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java index 44430ccbbd3..98f9549e5f7 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryRegenerate.java @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.List; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -38,6 +37,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -425,7 +425,7 @@ public class AbilityFactoryRegenerate { final Target tgt = sa.getTarget(); tgt.resetTargets(); // filter AIs battlefield by what I can target - List targetables = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List targetables = GameState.getCardsIn(ZoneType.Battlefield); targetables = CardLists.getValidCards(targetables, tgt.getValidTgts(), ai, hostCard); targetables = CardLists.getTargetableCards(targetables, sa); final List compTargetables = CardLists.filterControlledBy(targetables, ai); @@ -512,7 +512,7 @@ public class AbilityFactoryRegenerate { } }; - if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { + if (GameState.isCardInPlay(tgtC) && ((tgt == null) || tgtC.canBeTargetedBy(sa))) { tgtC.addShield(); AllZone.getEndOfTurn().addUntil(untilEOT); } @@ -740,7 +740,7 @@ public class AbilityFactoryRegenerate { valid = params.get("ValidCards"); } - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard); list = CardLists.filter(list, CardPredicates.isController(ai)); @@ -829,7 +829,7 @@ public class AbilityFactoryRegenerate { valid = params.get("ValidCards"); } - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, valid.split(","), hostCard.getController(), hostCard); for (final Card c : list) { @@ -842,7 +842,7 @@ public class AbilityFactoryRegenerate { } }; - if (AllZoneUtil.isCardInPlay(c)) { + if (GameState.isCardInPlay(c)) { c.addShield(); AllZone.getEndOfTurn().addUntil(untilEOT); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java index ede915e5c63..3cebafb34dc 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryRepeat.java @@ -33,6 +33,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -278,7 +279,7 @@ public final class AbilityFactoryRepeat { if (params.containsKey("RepeatDefined")) { list.addAll(AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("RepeatDefined"), sa)); } else { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } list = CardLists.getValidCards(list, repeatPresent.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java index 2c4857f003f..655ea192d52 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java @@ -27,7 +27,6 @@ import java.util.Random; import javax.swing.JOptionPane; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -43,6 +42,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -669,7 +669,7 @@ public final class AbilityFactoryReveal { */ private static List sharesNameWithCardOnBattlefield(final List list) { final List toReturn = new ArrayList(); - final List play = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List play = GameState.getCardsIn(ZoneType.Battlefield); for (final Card c : list) { for (final Card p : play) { if (p.getName().equals(c.getName()) && !toReturn.contains(c)) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java index 5b6f4b2b307..8b2861043a7 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.Random; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -37,6 +36,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -935,7 +935,7 @@ public class AbilityFactorySacrifice { if (params.containsKey("Defined")) { list = new ArrayList(AbilityFactory.getDefinedCards(af.getHostCard(), params.get("Defined"), sa)); } else { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } final boolean remSacrificed = params.containsKey("RememberSacrificed"); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java index 3f74a79eafc..984f0a2cc1f 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -35,6 +34,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.card.cardfactory.CardFactoryUtil; import forge.card.cost.Cost; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -471,7 +471,7 @@ public class AbilityFactorySetState { valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa))); } - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); if (targetPlayer != null) { list = CardLists.filterControlledBy(list, targetPlayer); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java index e5386d0407b..62f09001394 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.Random; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.Singletons; @@ -37,6 +36,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -641,10 +641,10 @@ public class AbilityFactoryToken extends AbilityFactory { AllZone.getCombat().addAttacker(c); } if (remember != null) { - AllZoneUtil.getCardState(sa.getSourceCard()).addRemembered(c); + GameState.getCardState(sa.getSourceCard()).addRemembered(c); } if (this.abilityFactory.getMapParams().get("RememberSource") != null) { - AllZoneUtil.getCardState(c).addRemembered(host); + GameState.getCardState(c).addRemembered(host); } } } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java index 1a50c5b8fbd..98ab41dc1e5 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java @@ -6,7 +6,6 @@ import java.util.List; import javax.swing.JOptionPane; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.Command; @@ -18,6 +17,7 @@ import forge.card.spellability.AbilityActivated; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.PlayerZone; @@ -212,7 +212,7 @@ class CardFactoryArtifacts { } if (this.getTargetCard() != null) { - if (AllZoneUtil.isCardInPlay(this.getTargetCard()) + if (GameState.isCardInPlay(this.getTargetCard()) && this.getTargetCard().canBeTargetedBy(this)) { this.getTargetCard().addDamage(damage, card); } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryAuras.java b/src/main/java/forge/card/cardfactory/CardFactoryAuras.java index 4fe11e3d882..d74ff0fa7b4 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryAuras.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryAuras.java @@ -26,7 +26,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -41,6 +40,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -87,7 +87,7 @@ class CardFactoryAuras { final Player opp = getActivatingPlayer().getOpponent(); final String[] landTypes = new String[] { "Plains", "Island", "Swamp", "Mountain", "Forest" }; final HashMap humanLandCount = new HashMap(); - final List humanlands = AllZoneUtil.getPlayerLandsInPlay(opp); + final List humanlands = GameState.getPlayerLandsInPlay(opp); for (final String landType : landTypes) { humanLandCount.put(landType, 0); @@ -115,7 +115,7 @@ class CardFactoryAuras { } newType[0] = landTypes[minAt]; - List list = AllZoneUtil.getPlayerLandsInPlay(opp); + List list = GameState.getPlayerLandsInPlay(opp); list = CardLists.getNotType(list, newType[0]); // Don't enchant lands // that already have the // type @@ -136,7 +136,7 @@ class CardFactoryAuras { final Card c = this.getTargetCard(); - if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { card.enchantEntity(c); } @@ -250,7 +250,7 @@ class CardFactoryAuras { @Override public void showMessage() { - final List land = AllZoneUtil.getLandsInPlay(); + final List land = GameState.getLandsInPlay(); this.stopSetNext(CardFactoryUtil .inputTargetSpecific(spell, land, "Select target land", true, false)); } @@ -268,7 +268,7 @@ class CardFactoryAuras { @Override public boolean canPlayAI() { - List list = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer().getOpponent()); + List list = GameState.getCreaturesInPlay(getActivatingPlayer().getOpponent()); list = CardLists.getKeyword(list, "Flying"); if (list.isEmpty()) { return false; @@ -300,7 +300,7 @@ class CardFactoryAuras { final Card c = this.getTargetCard(); - if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { card.enchantEntity(c); Log.debug("Enchanted: " + this.getTargetCard()); } @@ -378,7 +378,7 @@ class CardFactoryAuras { this.setTargetCard(stuffy.get(0)); return true; } else { - final List list = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer().getOpponent()); + final List list = GameState.getCreaturesInPlay(getActivatingPlayer().getOpponent()); if (list.isEmpty()) { return false; @@ -407,7 +407,7 @@ class CardFactoryAuras { final Card c = this.getTargetCard(); - if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { aura.enchantEntity(c); } } // resolve() @@ -427,7 +427,7 @@ class CardFactoryAuras { // This includes creatures Animate Dead can't enchant once // in play. // The human may try to Animate them, the AI will not. - return CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Graveyard), Presets.CREATURES); + return CardLists.filter(GameState.getCardsIn(ZoneType.Graveyard), Presets.CREATURES); } @Override diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java index 96f3fa88829..4d06303625c 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java @@ -27,7 +27,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -53,6 +52,7 @@ import forge.card.spellability.Target; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -103,7 +103,7 @@ public class CardFactoryCreatures { if (c.sumAllCounters() == 0) { return; - } else if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + } else if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { // zerker clean up: for (final Counters c1 : Counters.values()) { if (c.getCounters(c1) > 0) { @@ -276,7 +276,7 @@ public class CardFactoryCreatures { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(card)) { + if (GameState.isCardInPlay(card)) { Singletons.getModel().getGameAction().sacrifice(card, null); } } @@ -304,7 +304,7 @@ public class CardFactoryCreatures { @Override public void execute() { - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Stangg Twin"); + final List list = GameState.getCardsIn(ZoneType.Battlefield, "Stangg Twin"); if (list.size() == 1) { Singletons.getModel().getGameAction().exile(list.get(0)); @@ -330,7 +330,7 @@ public class CardFactoryCreatures { @Override public void resolve() { - List allTokens = AllZoneUtil.getCreaturesInPlay(card.getController()); + List allTokens = GameState.getCreaturesInPlay(card.getController()); allTokens = CardLists.filter(allTokens, Presets.TOKEN); CardFactoryUtil.copyTokens(allTokens); @@ -338,7 +338,7 @@ public class CardFactoryCreatures { @Override public boolean canPlayAI() { - List allTokens = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer()); + List allTokens = GameState.getCreaturesInPlay(getActivatingPlayer()); allTokens = CardLists.filter(allTokens, Presets.TOKEN); return allTokens.size() >= 2; @@ -451,7 +451,7 @@ public class CardFactoryCreatures { return; } - if (!(target.canBeTargetedBy(this) && AllZoneUtil.isCardInPlay(target))) { + if (!(target.canBeTargetedBy(this) && GameState.isCardInPlay(target))) { return; } @@ -890,7 +890,7 @@ public class CardFactoryCreatures { if (p.canBeTargetedBy(this)) { p.setSkipNextUntap(true); for (final Card c : targetPerms) { - if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { c.tap(); } } @@ -980,7 +980,7 @@ public class CardFactoryCreatures { if (player.isHuman()) { AllZone.getInputControl().setInput(playerInput); } else { - List list = AllZoneUtil.getCreaturesInPlay(player.getOpponent()); + List list = GameState.getCreaturesInPlay(player.getOpponent()); list = CardLists.getTargetableCards(list, ability); if ( !list.isEmpty() ) { diff --git a/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java b/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java index 6bf3d8fead1..db18351ddf6 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryEnchantments.java @@ -5,7 +5,6 @@ import java.util.List; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -19,6 +18,7 @@ import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.control.input.Input; import forge.game.GameLossReason; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -160,8 +160,8 @@ class CardFactoryEnchantments { @Override public boolean canPlayAI() { - final List compCreats = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer()); - final List humCreats = AllZoneUtil.getCreaturesInPlay(getActivatingPlayer().getOpponent()); + final List compCreats = GameState.getCreaturesInPlay(getActivatingPlayer()); + final List humCreats = GameState.getCreaturesInPlay(getActivatingPlayer().getOpponent()); // only play standstill if comp controls more creatures than // human diff --git a/src/main/java/forge/card/cardfactory/CardFactoryInstants.java b/src/main/java/forge/card/cardfactory/CardFactoryInstants.java index ea953cb0baa..9906b1a9c89 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryInstants.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryInstants.java @@ -24,7 +24,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -38,6 +37,7 @@ import forge.card.spellability.AbilitySub; import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; +import forge.game.GameState; import forge.game.phase.PhaseUtil; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -92,7 +92,7 @@ public class CardFactoryInstants { @Override public void resolve() { Player player = getTargetPlayer(); - List artifacts = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List artifacts = GameState.getCardsIn(ZoneType.Battlefield); artifacts = CardLists.filter(artifacts, CardPredicates.Presets.ARTIFACTS); for (int i = 0; i < artifacts.size(); i++) { @@ -304,7 +304,7 @@ public class CardFactoryInstants { // the siren flag final Player player = card.getController(); final Player opponent = player.getOpponent(); - final List creatures = AllZoneUtil.getCreaturesInPlay(opponent); + final List creatures = GameState.getCreaturesInPlay(opponent); for (final Card creature : creatures) { // skip walls, skip creatures with summoning sickness // also skip creatures with haste if they came onto the @@ -320,7 +320,7 @@ public class CardFactoryInstants { public void resolve() { final Player player = card.getController(); final Player opponent = player.getOpponent(); - final List creatures = AllZoneUtil.getCreaturesInPlay(opponent); + final List creatures = GameState.getCreaturesInPlay(opponent); for (final Card creature : creatures) { // System.out.println("Siren's Call - EOT - "+creature.getName() @@ -328,7 +328,7 @@ public class CardFactoryInstants { // System.out.println("Siren's Call - EOT - "+creature.getName() // +" attacked?: "+creature.getCreatureAttackedThisCombat()); if (creature.getSirenAttackOrDestroy() && !creature.getDamageHistory().getCreatureAttackedThisTurn()) { - if (AllZoneUtil.isCardInPlay(creature)) { + if (GameState.isCardInPlay(creature)) { // System.out.println("Siren's Call - destroying "+creature.getName()); // this should probably go on the stack Singletons.getModel().getGameAction().destroy(creature); @@ -417,7 +417,7 @@ public class CardFactoryInstants { @Override public void resolve() { final Player you = card.getController(); - final List ens = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Battlefield), Presets.ENCHANTMENTS); + final List ens = CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), Presets.ENCHANTMENTS); final List toReturn = CardLists.filter(ens, new Predicate() { @Override public boolean apply(final Card c) { @@ -521,7 +521,7 @@ public class CardFactoryInstants { public void resolve() { final Card myc = this.getParent().getTargetCard(); final Card tgt = this.getTargetCard(); - if (AllZoneUtil.isCardInPlay(myc) && AllZoneUtil.isCardInPlay(tgt)) { + if (GameState.isCardInPlay(myc) && GameState.isCardInPlay(tgt)) { if (myc.canBeTargetedBy(this) && tgt.canBeTargetedBy(this)) { tgt.addDamage(myc.getNetAttack(), myc); } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryLands.java b/src/main/java/forge/card/cardfactory/CardFactoryLands.java index 7f07c8f49aa..cb992011d7b 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryLands.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryLands.java @@ -25,7 +25,6 @@ import javax.swing.JOptionPane; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -37,6 +36,7 @@ import forge.card.cost.Cost; import forge.card.spellability.AbilityActivated; import forge.card.spellability.Target; import forge.control.input.Input; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.zone.PlayerZone; @@ -97,7 +97,7 @@ class CardFactoryLands { boolean needsTheMana = false; final Player ai = card.getController(); if (ai.getLife() > 3) { - final int landsize = AllZoneUtil.getPlayerLandsInPlay(ai).size(); + final int landsize = GameState.getPlayerLandsInPlay(ai).size(); for (Card c : ai.getCardsIn(ZoneType.Hand)) { if (landsize == c.getCMC()) { needsTheMana = true; @@ -145,7 +145,7 @@ class CardFactoryLands { @Override public boolean apply(final Card c) { - return AllZoneUtil.isCardInPlay(c) && c.isCreature() + return GameState.isCardInPlay(c) && c.isCreature() && (c.getTurnInZone() == Singletons.getModel().getGameState().getPhaseHandler().getTurn()); } }; @@ -181,7 +181,7 @@ class CardFactoryLands { @Override public void resolve() { this.inPlay.clear(); - this.inPlay.addAll(AllZoneUtil.getCardsIn(ZoneType.Battlefield)); + this.inPlay.addAll(GameState.getCardsIn(ZoneType.Battlefield)); for (final Card targ : CardLists.filter(this.inPlay, targets)) { targ.addCounter(Counters.P1P1, 1); } diff --git a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java index 6ecb651c493..20be0d7760b 100644 --- a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java +++ b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java @@ -32,7 +32,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -50,6 +49,7 @@ import forge.card.spellability.Target; import forge.control.input.Input; import forge.control.input.InputPayManaCost; import forge.control.input.InputPayManaCostAbility; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.player.PlayerUtil; @@ -262,15 +262,15 @@ public class CardFactorySorceries { public boolean canPlayAI() { final Player ai = getActivatingPlayer(); final Player opp = ai.getOpponent(); - List humTokenCreats = CardLists.filter(AllZoneUtil.getCreaturesInPlay(opp), Presets.TOKEN); - List compTokenCreats = CardLists.filter(AllZoneUtil.getCreaturesInPlay(ai), Presets.TOKEN); + List humTokenCreats = CardLists.filter(GameState.getCreaturesInPlay(opp), Presets.TOKEN); + List compTokenCreats = CardLists.filter(GameState.getCreaturesInPlay(ai), Presets.TOKEN); return compTokenCreats.size() > humTokenCreats.size(); } // canPlayAI() @Override public void resolve() { - List tokens = AllZoneUtil.getCreaturesInPlay(); + List tokens = GameState.getCreaturesInPlay(); tokens = CardLists.filter(tokens, Presets.TOKEN); CardFactoryUtil.copyTokens(tokens); @@ -318,7 +318,7 @@ public class CardFactorySorceries { // Vector computerBasic = new Vector(); // figure out which basic land types the computer has - List land = AllZoneUtil.getPlayerLandsInPlay(Singletons.getControl().getPlayer().getOpponent()); + List land = GameState.getPlayerLandsInPlay(Singletons.getControl().getPlayer().getOpponent()); for (final String element : Constant.Color.BASIC_LANDS) { final List cl = CardLists.getType(land, element); @@ -353,7 +353,7 @@ public class CardFactorySorceries { // when this spell resolves all basic lands which were not // selected are sacrificed. for (int i = 0; i < target.size(); i++) { - if (AllZoneUtil.isCardInPlay(target.get(i)) && !saveList.contains(target.get(i))) { + if (GameState.isCardInPlay(target.get(i)) && !saveList.contains(target.get(i))) { Singletons.getModel().getGameAction().sacrifice(target.get(i), this); } } @@ -402,7 +402,7 @@ public class CardFactorySorceries { /* && !saveList.contains(c) */) { // get all other basic[count] lands human player // controls and add them to target - List land = AllZoneUtil.getPlayerLandsInPlay(c.getController()); + List land = GameState.getPlayerLandsInPlay(c.getController()); List cl = CardLists.getType(land, humanBasic.get(this.count)); cl = CardLists.filter(cl, new Predicate() { @Override @@ -576,7 +576,7 @@ public class CardFactorySorceries { List> lands = new ArrayList>(); for (Player p : Singletons.getModel().getGameState().getPlayers()) { - lands.add(AllZoneUtil.getPlayerLandsInPlay(p)); + lands.add(GameState.getPlayerLandsInPlay(p)); } int min = Integer.MAX_VALUE; @@ -626,7 +626,7 @@ public class CardFactorySorceries { List> creats = new ArrayList>(); for (Player p : Singletons.getModel().getGameState().getPlayers()) { - creats.add(AllZoneUtil.getCreaturesInPlay(p)); + creats.add(GameState.getCreaturesInPlay(p)); } int min = Integer.MAX_VALUE; for(List h : creats) { @@ -668,12 +668,12 @@ public class CardFactorySorceries { int diff = 0; final Player ai = getActivatingPlayer(); final Player opp = ai.getOpponent(); - final List humLand = AllZoneUtil.getPlayerLandsInPlay(opp); - final List compLand = AllZoneUtil.getPlayerLandsInPlay(ai); + final List humLand = GameState.getPlayerLandsInPlay(opp); + final List compLand = GameState.getPlayerLandsInPlay(ai); diff += humLand.size() - compLand.size(); - final List humCreats = AllZoneUtil.getCreaturesInPlay(opp); - List compCreats = AllZoneUtil.getCreaturesInPlay(ai); + final List humCreats = GameState.getCreaturesInPlay(opp); + List compCreats = GameState.getCreaturesInPlay(ai); compCreats = CardLists.filter(compCreats, CardPredicates.Presets.CREATURES); diff += 1.5 * (humCreats.size() - compCreats.size()); @@ -826,7 +826,7 @@ public class CardFactorySorceries { } } - List bidded = CardLists.filter(AllZoneUtil.getCardsIn(ZoneType.Graveyard), CardPredicates.Presets.CREATURES); + List bidded = CardLists.filter(GameState.getCardsIn(ZoneType.Graveyard), CardPredicates.Presets.CREATURES); for (final Card c : bidded) { for(int i = 0; i < types.size(); i++) { if (c.isType(types.get(i))) { @@ -988,7 +988,7 @@ public class CardFactorySorceries { if (card.getChoice(i).equals(cardChoice[2])) { final Card c = ab2card[0]; if (c != null) { - if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { final int boost = x[0] * -1; c.addTempAttackBoost(boost); c.addTempDefenseBoost(boost); @@ -997,7 +997,7 @@ public class CardFactorySorceries { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(c)) { + if (GameState.isCardInPlay(c)) { c.addTempAttackBoost(-1 * boost); c.addTempDefenseBoost(-1 * boost); @@ -1015,14 +1015,14 @@ public class CardFactorySorceries { final ArrayList cs = new ArrayList(); cs.addAll(ab3cards); for (final Card c : cs) { - if (AllZoneUtil.isCardInPlay(c) && c.canBeTargetedBy(this)) { + if (GameState.isCardInPlay(c) && c.canBeTargetedBy(this)) { c.addExtrinsicKeyword("Fear"); final Command untilEOT = new Command() { private static final long serialVersionUID = 986259855862338866L; @Override public void execute() { - if (AllZoneUtil.isCardInPlay(c)) { + if (GameState.isCardInPlay(c)) { c.removeExtrinsicKeyword("Fear"); } } @@ -1302,7 +1302,7 @@ public class CardFactorySorceries { final ArrayList display = new ArrayList(); // get all - final List creatures = AllZoneUtil.getCreaturesInPlay(); + final List creatures = GameState.getCreaturesInPlay(); List grave = card.getController().getCardsIn(ZoneType.Graveyard); grave = CardLists.filter(grave, Presets.CREATURES); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 4786223118c..96ef46b540f 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -32,7 +32,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -69,6 +68,7 @@ import forge.card.trigger.TriggerType; import forge.control.input.Input; import forge.control.input.InputPayManaCost; import forge.control.input.InputPayManaCostUtil; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; @@ -917,7 +917,7 @@ public class CardFactoryUtil { @Override public boolean canPlay() { return sourceCard.getController().equals(this.getActivatingPlayer()) && sourceCard.isFaceDown() - && AllZoneUtil.isCardInPlay(sourceCard); + && GameState.isCardInPlay(sourceCard); } }; // morph_up @@ -1849,7 +1849,7 @@ public class CardFactoryUtil { if (l[0].contains("Valid")) { final String restrictions = l[0].replace("Valid ", ""); final String[] rest = restrictions.split(","); - List cardsonbattlefield = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List cardsonbattlefield = GameState.getCardsIn(ZoneType.Battlefield); cardsonbattlefield = CardLists.getValidCards(cardsonbattlefield, rest, players.get(0), source); n = cardsonbattlefield.size(); @@ -1899,7 +1899,7 @@ public class CardFactoryUtil { if (sq[0].contains("CreaturesInPlay")) { if (players.size() > 0) { - return CardFactoryUtil.doXMath(AllZoneUtil.getCreaturesInPlay(players.get(0)).size(), m, source); + return CardFactoryUtil.doXMath(GameState.getCreaturesInPlay(players.get(0)).size(), m, source); } } @@ -2057,7 +2057,7 @@ public class CardFactoryUtil { String restrictions = l[0].replace("ValidGrave ", ""); restrictions = restrictions.replace("Count$", ""); final String[] rest = restrictions.split(","); - List cards = AllZoneUtil.getCardsIn(ZoneType.Graveyard); + List cards = GameState.getCardsIn(ZoneType.Graveyard); cards = CardLists.getValidCards(cards, rest, cardController, c); n = cards.size(); @@ -2069,7 +2069,7 @@ public class CardFactoryUtil { String restrictions = l[0].replace("Valid ", ""); restrictions = restrictions.replace("Count$", ""); final String[] rest = restrictions.split(","); - List cardsonbattlefield = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List cardsonbattlefield = GameState.getCardsIn(ZoneType.Battlefield); cardsonbattlefield = CardLists.getValidCards(cardsonbattlefield, rest, cardController, c); n = cardsonbattlefield.size(); @@ -2096,7 +2096,7 @@ public class CardFactoryUtil { } if (l[0].contains("GreatestPowerYouControl")) { - final List list = AllZoneUtil.getCreaturesInPlay(c.getController()); + final List list = GameState.getCreaturesInPlay(c.getController()); int highest = 0; for (final Card crd : list) { if (crd.getNetAttack() > highest) { @@ -2107,7 +2107,7 @@ public class CardFactoryUtil { } if (l[0].contains("GreatestPowerYouDontControl")) { - final List list = AllZoneUtil.getCreaturesInPlay(c.getController().getOpponent()); + final List list = GameState.getCreaturesInPlay(c.getController().getOpponent()); int highest = 0; for (final Card crd : list) { if (crd.getNetAttack() > highest) { @@ -2122,7 +2122,7 @@ public class CardFactoryUtil { int highest = 0; for (final Object o : c.getRemembered()) { if (o instanceof Card) { - list.add(AllZoneUtil.getCardState((Card) o)); + list.add(GameState.getCardState((Card) o)); } } for (final Card crd : list) { @@ -2137,7 +2137,7 @@ public class CardFactoryUtil { final List list = new ArrayList(); for (final Object o : c.getRemembered()) { if (o instanceof Card) { - list.add(AllZoneUtil.getCardState((Card) o)); + list.add(GameState.getCardState((Card) o)); } } return Aggregates.sum(Iterables.filter(list, CardPredicates.Presets.hasSecondStrike), CardPredicates.Accessors.fnGetAttack); @@ -2450,7 +2450,7 @@ public class CardFactoryUtil { if (sq[0].contains("SumPower")) { final String[] restrictions = l[0].split("_"); final String[] rest = restrictions[1].split(","); - List cardsonbattlefield = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List cardsonbattlefield = GameState.getCardsIn(ZoneType.Battlefield); List filteredCards = CardLists.getValidCards(cardsonbattlefield, rest, cardController, c); int sumPower = 0; for (int i = 0; i < filteredCards.size(); i++) { @@ -2470,7 +2470,7 @@ public class CardFactoryUtil { if (sq[0].contains("SumCMC")) { final String[] restrictions = l[0].split("_"); final String[] rest = restrictions[1].split(","); - List cardsonbattlefield = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List cardsonbattlefield = GameState.getCardsIn(ZoneType.Battlefield); List filteredCards = CardLists.getValidCards(cardsonbattlefield, rest, cardController, c); return CardLists.sumCMC(filteredCards); } @@ -2491,7 +2491,7 @@ public class CardFactoryUtil { final String[] restrictions = l[0].split("_"); final Counters cType = Counters.getType(restrictions[1]); final String[] validFilter = restrictions[2].split(","); - List validCards = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List validCards = GameState.getCardsIn(ZoneType.Battlefield); validCards = CardLists.getValidCards(validCards, validFilter, cardController, c); int cCount = 0; for (final Card card : validCards) { @@ -2520,9 +2520,9 @@ public class CardFactoryUtil { // Count$M12Empires.. if (sq[0].contains("AllM12Empires")) { - boolean has = AllZoneUtil.isCardInPlay("Crown of Empires", c.getController()); - has &= AllZoneUtil.isCardInPlay("Scepter of Empires", c.getController()); - has &= AllZoneUtil.isCardInPlay("Throne of Empires", c.getController()); + boolean has = GameState.isCardInPlay("Crown of Empires", c.getController()); + has &= GameState.isCardInPlay("Scepter of Empires", c.getController()); + has &= GameState.isCardInPlay("Throne of Empires", c.getController()); if (has) { return CardFactoryUtil.doXMath(Integer.parseInt(sq[1]), m, c); } else { @@ -2664,7 +2664,7 @@ public class CardFactoryUtil { } if (sq[0].contains("SpellsOnStack")) { - someCards.addAll(AllZoneUtil.getCardsIn(ZoneType.Stack)); + someCards.addAll(GameState.getCardsIn(ZoneType.Stack)); } if (sq[0].contains("InAllHands")) { @@ -3248,7 +3248,7 @@ public class CardFactoryUtil { c.setBaseAttack(baseAttack); c.setBaseDefense(baseDefense); - final int multiplier = AllZoneUtil.getTokenDoublersMagnitude(controller); + final int multiplier = GameState.getTokenDoublersMagnitude(controller); for (int i = 0; i < multiplier; i++) { Card temp = CardFactoryUtil.copyStats(c); @@ -3336,7 +3336,7 @@ public class CardFactoryUtil { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(crd)) { + if (GameState.isCardInPlay(crd)) { crd.addTempAttackBoost(-1 * magnitude); crd.addTempDefenseBoost(-1 * magnitude); } @@ -3400,7 +3400,7 @@ public class CardFactoryUtil { * @return the worst land found based on the description above */ public static Card getWorstLand(final Player player) { - final List lands = AllZoneUtil.getPlayerLandsInPlay(player); + final List lands = GameState.getPlayerLandsInPlay(player); return CardFactoryUtil.getWorstLand(lands); } // end getWorstLand @@ -4020,7 +4020,7 @@ public class CardFactoryUtil { final Ability haunterDiesSetup = new Ability(card, "0") { @Override public void resolve() { - final List creats = AllZoneUtil.getCreaturesInPlay(); + final List creats = GameState.getCreaturesInPlay(); for (int i = 0; i < creats.size(); i++) { if (!creats.get(i).canBeTargetedBy(this)) { creats.remove(i); @@ -4475,7 +4475,7 @@ public class CardFactoryUtil { @Override public void execute() { - final List lands = AllZoneUtil.getPlayerLandsInPlay(card.getController()); + final List lands = GameState.getPlayerLandsInPlay(card.getController()); lands.remove(card); if (!(lands.size() <= 2)) { // it enters the battlefield this way, and should not @@ -4560,7 +4560,7 @@ public class CardFactoryUtil { @Override public void execute() { - final List cardsInPlay = CardLists.getType(AllZoneUtil.getCardsIn(ZoneType.Battlefield), "World"); + final List cardsInPlay = CardLists.getType(GameState.getCardsIn(ZoneType.Battlefield), "World"); cardsInPlay.remove(card); for (int i = 0; i < cardsInPlay.size(); i++) { Singletons.getModel().getGameAction().sacrificeDestroy(cardsInPlay.get(i)); @@ -4647,7 +4647,7 @@ public class CardFactoryUtil { @Override public void execute() { - final List creats = AllZoneUtil.getCreaturesInPlay(card.getController()); + final List creats = GameState.getCreaturesInPlay(card.getController()); creats.remove(card); // System.out.println("Creats size: " + creats.size()); diff --git a/src/main/java/forge/card/cost/CostReturn.java b/src/main/java/forge/card/cost/CostReturn.java index d204ce39cb7..05018855d49 100644 --- a/src/main/java/forge/card/cost/CostReturn.java +++ b/src/main/java/forge/card/cost/CostReturn.java @@ -21,7 +21,6 @@ import java.util.List; import javax.swing.JOptionPane; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -29,6 +28,7 @@ import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.spellability.SpellAbility; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.PlayerZone; @@ -116,7 +116,7 @@ public class CostReturn extends CostPartWithList { if ((amount != null) && (typeList.size() < amount)) { return false; } - } else if (!AllZoneUtil.isCardInPlay(source)) { + } else if (!GameState.isCardInPlay(source)) { return false; } @@ -297,7 +297,7 @@ public class CostReturn extends CostPartWithList { @Override public void showMessage() { final Card card = sa.getSourceCard(); - if (card.getController().isHuman() && AllZoneUtil.isCardInPlay(card)) { + if (card.getController().isHuman() && GameState.isCardInPlay(card)) { final StringBuilder sb = new StringBuilder(); sb.append(card.getName()); sb.append(" - Return to Hand?"); diff --git a/src/main/java/forge/card/cost/CostSacrifice.java b/src/main/java/forge/card/cost/CostSacrifice.java index 79daaec159e..28ed381d6c3 100644 --- a/src/main/java/forge/card/cost/CostSacrifice.java +++ b/src/main/java/forge/card/cost/CostSacrifice.java @@ -21,7 +21,6 @@ import java.util.List; import javax.swing.JOptionPane; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -29,6 +28,7 @@ import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.spellability.SpellAbility; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.PlayerZone; @@ -120,7 +120,7 @@ public class CostSacrifice extends CostPartWithList { // choice, it can be Paid even if it's 0 } else { - if (!AllZoneUtil.isCardInPlay(source)) { + if (!GameState.isCardInPlay(source)) { return false; } else if (source.isCreature() && activator.hasKeyword("You can't sacrifice creatures to cast spells or activate abilities.")) { @@ -357,7 +357,7 @@ public class CostSacrifice extends CostPartWithList { @Override public void showMessage() { final Card card = sa.getSourceCard(); - if (card.getController().isHuman() && AllZoneUtil.isCardInPlay(card)) { + if (card.getController().isHuman() && GameState.isCardInPlay(card)) { final StringBuilder sb = new StringBuilder(); sb.append(card.getName()); sb.append(" - Sacrifice?"); diff --git a/src/main/java/forge/card/cost/CostUntapType.java b/src/main/java/forge/card/cost/CostUntapType.java index fecb7e66603..761fa21b452 100644 --- a/src/main/java/forge/card/cost/CostUntapType.java +++ b/src/main/java/forge/card/cost/CostUntapType.java @@ -19,7 +19,6 @@ package forge.card.cost; import java.util.List; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -27,6 +26,7 @@ import forge.CardPredicates.Presets; import forge.card.abilityfactory.AbilityFactory; import forge.card.spellability.SpellAbility; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.PlayerZone; @@ -120,7 +120,7 @@ public class CostUntapType extends CostPartWithList { */ @Override public final boolean canPay(final SpellAbility ability, final Card source, final Player activator, final Cost cost) { - List typeList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List typeList = GameState.getCardsIn(ZoneType.Battlefield); typeList = CardLists.getValidCards(typeList, this.getType().split(";"), activator, source); @@ -160,7 +160,7 @@ public class CostUntapType extends CostPartWithList { @Override public final boolean payHuman(final SpellAbility ability, final Card source, final CostPayment payment) { final boolean untap = payment.getCost().getUntap(); - List typeList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List typeList = GameState.getCardsIn(ZoneType.Battlefield); typeList = CardLists.getValidCards(typeList, this.getType().split(";"), ability.getActivatingPlayer(), ability.getSourceCard()); typeList = CardLists.filter(typeList, Presets.TAPPED); if (untap) { @@ -197,7 +197,7 @@ public class CostUntapType extends CostPartWithList { if (c == null) { final String sVar = ability.getSVar(amount); if (sVar.equals("XChoice")) { - List typeList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List typeList = GameState.getCardsIn(ZoneType.Battlefield); typeList = CardLists.getValidCards(typeList, this.getType().split(";"), ai, ability.getSourceCard()); if (untap) { typeList.remove(source); diff --git a/src/main/java/forge/card/mana/ManaPool.java b/src/main/java/forge/card/mana/ManaPool.java index b12e03c4cfe..85003e4f535 100644 --- a/src/main/java/forge/card/mana/ManaPool.java +++ b/src/main/java/forge/card/mana/ManaPool.java @@ -21,12 +21,12 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; -import forge.AllZoneUtil; import forge.Constant; import forge.Singletons; import forge.card.spellability.AbilityMana; import forge.card.spellability.SpellAbility; import forge.control.input.InputPayManaCostUtil; +import forge.game.GameState; import forge.game.player.Player; import forge.gui.GuiChoose; @@ -185,7 +185,7 @@ public class ManaPool { return numRemoved; } - if (AllZoneUtil.isCardInPlay("Omnath, Locus of Mana", this.owner)) { + if (GameState.isCardInPlay("Omnath, Locus of Mana", this.owner)) { // Omnath in play, clear all non-green mana int i = 0; while (i < this.floatingMana.size()) { diff --git a/src/main/java/forge/card/replacement/ReplacementEffect.java b/src/main/java/forge/card/replacement/ReplacementEffect.java index 829ec118b2c..84a30110094 100644 --- a/src/main/java/forge/card/replacement/ReplacementEffect.java +++ b/src/main/java/forge/card/replacement/ReplacementEffect.java @@ -30,6 +30,7 @@ import forge.card.TriggerReplacementBase; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.SpellAbility; +import forge.game.GameState; import forge.game.zone.ZoneType; /** @@ -320,7 +321,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { } if (this.getMapParams().containsKey("CheckSVar")) { - final int sVar = AbilityFactory.calculateAmount(AllZoneUtil.getCardState(this.getHostCard()), this + final int sVar = AbilityFactory.calculateAmount(GameState.getCardState(this.getHostCard()), this .getMapParams().get("CheckSVar"), null); String comparator = "GE1"; if (this.getMapParams().containsKey("SVarCompare")) { @@ -328,7 +329,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { } final String svarOperator = comparator.substring(0, 2); final String svarOperand = comparator.substring(2); - final int operandValue = AbilityFactory.calculateAmount(AllZoneUtil.getCardState(this.getHostCard()), + final int operandValue = AbilityFactory.calculateAmount(GameState.getCardState(this.getHostCard()), svarOperand, null); if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { return false; diff --git a/src/main/java/forge/card/spellability/Ability.java b/src/main/java/forge/card/spellability/Ability.java index 2bc50cbb37c..d3d22703e5a 100644 --- a/src/main/java/forge/card/spellability/Ability.java +++ b/src/main/java/forge/card/spellability/Ability.java @@ -20,8 +20,8 @@ package forge.card.spellability; import com.esotericsoftware.minlog.Log; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; +import forge.game.GameState; /** *

@@ -73,6 +73,6 @@ public abstract class Ability extends SpellAbility { return false; } - return AllZoneUtil.isCardInPlay(this.getSourceCard()) && !this.getSourceCard().isFaceDown(); + return GameState.isCardInPlay(this.getSourceCard()) && !this.getSourceCard().isFaceDown(); } } diff --git a/src/main/java/forge/card/spellability/AbilityActivated.java b/src/main/java/forge/card/spellability/AbilityActivated.java index fd5d5bccc4e..6b2672b4fc4 100644 --- a/src/main/java/forge/card/spellability/AbilityActivated.java +++ b/src/main/java/forge/card/spellability/AbilityActivated.java @@ -21,12 +21,12 @@ import java.util.ArrayList; import java.util.List; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.card.cost.Cost; import forge.card.cost.CostPayment; import forge.card.staticability.StaticAbility; +import forge.game.GameState; import forge.game.zone.ZoneType; /** @@ -94,7 +94,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S } // CantBeActivated static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { @@ -108,7 +108,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S return false; } - if (this.isCycling() && AllZoneUtil.isCardInPlay("Stabilizer")) { + if (this.isCycling() && GameState.isCardInPlay("Stabilizer")) { return false; } diff --git a/src/main/java/forge/card/spellability/AbilityMana.java b/src/main/java/forge/card/spellability/AbilityMana.java index c95c509a520..2e7fbf9d6f4 100644 --- a/src/main/java/forge/card/spellability/AbilityMana.java +++ b/src/main/java/forge/card/spellability/AbilityMana.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.HashMap; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; @@ -30,6 +29,7 @@ import forge.card.mana.Mana; import forge.card.mana.ManaPool; import forge.card.trigger.TriggerType; import forge.control.input.InputPayManaCostUtil; +import forge.game.GameState; import forge.game.player.Player; /** @@ -539,7 +539,7 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl * @return a boolean. */ public final boolean isUndoable() { - return this.undoable && this.getPayCosts().isUndoable() && AllZoneUtil.isCardInPlay(this.getSourceCard()); + return this.undoable && this.getPayCosts().isUndoable() && GameState.isCardInPlay(this.getSourceCard()); } /** diff --git a/src/main/java/forge/card/spellability/Spell.java b/src/main/java/forge/card/spellability/Spell.java index f2af42bc5ac..b881487c924 100644 --- a/src/main/java/forge/card/spellability/Spell.java +++ b/src/main/java/forge/card/spellability/Spell.java @@ -30,6 +30,7 @@ import forge.card.cost.Cost; import forge.card.cost.CostPayment; import forge.card.staticability.StaticAbility; import forge.error.ErrorViewer; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -124,7 +125,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable } // CantBeCast static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); allp.add(card); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); @@ -144,7 +145,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable final Card card = this.getSourceCard(); if (card.getSVar("NeedsToPlay").length() > 0) { final String needsToPlay = card.getSVar("NeedsToPlay"); - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, needsToPlay.split(","), card.getController(), card); if (list.isEmpty()) { diff --git a/src/main/java/forge/card/spellability/SpellAbilityCondition.java b/src/main/java/forge/card/spellability/SpellAbilityCondition.java index 0ae7aba6791..cd58ebd4ab0 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityCondition.java +++ b/src/main/java/forge/card/spellability/SpellAbilityCondition.java @@ -28,6 +28,7 @@ import forge.CardLists; import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; @@ -227,18 +228,18 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (this.isAllM12Empires()) { final Player p = sa.getSourceCard().getController(); - boolean has = AllZoneUtil.isCardInPlay("Crown of Empires", p); - has &= AllZoneUtil.isCardInPlay("Scepter of Empires", p); - has &= AllZoneUtil.isCardInPlay("Throne of Empires", p); + boolean has = GameState.isCardInPlay("Crown of Empires", p); + has &= GameState.isCardInPlay("Scepter of Empires", p); + has &= GameState.isCardInPlay("Throne of Empires", p); if (!has) { return false; } } if (this.isNotAllM12Empires()) { final Player p = sa.getSourceCard().getController(); - boolean has = AllZoneUtil.isCardInPlay("Crown of Empires", p); - has &= AllZoneUtil.isCardInPlay("Scepter of Empires", p); - has &= AllZoneUtil.isCardInPlay("Throne of Empires", p); + boolean has = GameState.isCardInPlay("Crown of Empires", p); + has &= GameState.isCardInPlay("Scepter of Empires", p); + has &= GameState.isCardInPlay("Throne of Empires", p); if (has) { return false; } @@ -256,7 +257,7 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (this.getPresentDefined() != null) { list.addAll(AbilityFactory.getDefinedCards(sa.getSourceCard(), this.getPresentDefined(), sa)); } else { - list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + list = GameState.getCardsIn(ZoneType.Battlefield); } list = CardLists.getValidCards(list, this.getIsPresent().split(","), sa.getActivatingPlayer(), sa.getSourceCard()); diff --git a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java index db02cc4c0bc..1f81c8bd8c9 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java @@ -29,6 +29,7 @@ import forge.CardLists; import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; @@ -356,7 +357,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { } } if (this.getIsPresent() != null) { - List list = AllZoneUtil.getCardsIn(this.getPresentZone()); + List list = GameState.getCardsIn(this.getPresentZone()); list = CardLists.getValidCards(list, this.getIsPresent().split(","), activator, c); diff --git a/src/main/java/forge/card/spellability/SpellPermanent.java b/src/main/java/forge/card/spellability/SpellPermanent.java index 34a02377cd9..719f039564a 100644 --- a/src/main/java/forge/card/spellability/SpellPermanent.java +++ b/src/main/java/forge/card/spellability/SpellPermanent.java @@ -24,7 +24,6 @@ import java.util.List; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -41,6 +40,7 @@ import forge.card.replacement.ReplacementEffect; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; import forge.control.input.Input; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerAIGeneral; @@ -115,7 +115,7 @@ public class SpellPermanent extends Spell { if (computer.size() != 0) { final Card c = computer.get(0); source.setChampionedCard(c); - if (AllZoneUtil.isCardInPlay(c)) { + if (GameState.isCardInPlay(c)) { Singletons.getModel().getGameAction().exile(c); } @@ -158,7 +158,7 @@ public class SpellPermanent extends Spell { @Override public void resolve() { final Card c = this.getSourceCard().getChampionedCard(); - if ((c != null) && !c.isToken() && AllZoneUtil.isCardExiled(c)) { + if ((c != null) && !c.isToken() && GameState.isCardExiled(c)) { Singletons.getModel().getGameAction().moveToPlay(c); } } // resolve() @@ -353,7 +353,7 @@ public class SpellPermanent extends Spell { } // check on legendary - if (card.isType("Legendary") && !AllZoneUtil.isCardInPlay("Mirror Gallery")) { + if (card.isType("Legendary") && !GameState.isCardInPlay("Mirror Gallery")) { final List list = ai.getCardsIn(ZoneType.Battlefield); if (Iterables.any(list, CardPredicates.nameEquals(card.getName()))) { return false; @@ -415,7 +415,7 @@ public class SpellPermanent extends Spell { private static boolean checkETBEffects(final Card card, final SpellAbility sa, final String api, final Player ai) { - if (card.isCreature() && AllZoneUtil.isCardInPlay("Torpor Orb")) { + if (card.isCreature() && GameState.isCardInPlay("Torpor Orb")) { return true; } diff --git a/src/main/java/forge/card/spellability/Target.java b/src/main/java/forge/card/spellability/Target.java index ee144d636e7..bca598ff4fe 100644 --- a/src/main/java/forge/card/spellability/Target.java +++ b/src/main/java/forge/card/spellability/Target.java @@ -21,11 +21,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import forge.AllZoneUtil; import forge.Card; import forge.CardUtil; import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -714,7 +714,7 @@ public class Target { if (this.tgtZone.contains(ZoneType.Stack)) { return true; } else { - for (final Card c : AllZoneUtil.getCardsIn(this.tgtZone)) { + for (final Card c : GameState.getCardsIn(this.tgtZone)) { if (c.isValid(this.validTgts, this.srcCard.getController(), this.srcCard) && (!isTargeted || c.canBeTargetedBy(sa)) && !this.getTargetCards().contains(c)) { diff --git a/src/main/java/forge/card/spellability/TargetSelection.java b/src/main/java/forge/card/spellability/TargetSelection.java index a0b0d97b482..85d8f5fcd42 100644 --- a/src/main/java/forge/card/spellability/TargetSelection.java +++ b/src/main/java/forge/card/spellability/TargetSelection.java @@ -24,12 +24,12 @@ import java.util.List; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; import forge.card.abilityfactory.AbilityFactory; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -269,7 +269,7 @@ public class TargetSelection { return; } - List choices = CardLists.getTargetableCards(CardLists.getValidCards(AllZoneUtil + List choices = CardLists.getTargetableCards(CardLists.getValidCards(GameState .getCardsIn(zone), this.target.getValidTgts(), this.ability.getActivatingPlayer(), this.ability.getSourceCard()), this.ability); ArrayList objects = new ArrayList(); @@ -461,15 +461,15 @@ public class TargetSelection { final List crdsLibrary = new ArrayList(); final List crdsStack = new ArrayList(); for (final Card inZone : choicesZoneUnfiltered) { - if (AllZoneUtil.getCardsIn(ZoneType.Battlefield).contains(inZone)) { + if (GameState.getCardsIn(ZoneType.Battlefield).contains(inZone)) { crdsBattle.add(inZone); - } else if (AllZoneUtil.getCardsIn(ZoneType.Exile).contains(inZone)) { + } else if (GameState.getCardsIn(ZoneType.Exile).contains(inZone)) { crdsExile.add(inZone); - } else if (AllZoneUtil.getCardsIn(ZoneType.Graveyard).contains(inZone)) { + } else if (GameState.getCardsIn(ZoneType.Graveyard).contains(inZone)) { crdsGrave.add(inZone); - } else if (AllZoneUtil.getCardsIn(ZoneType.Library).contains(inZone)) { + } else if (GameState.getCardsIn(ZoneType.Library).contains(inZone)) { crdsLibrary.add(inZone); - } else if (AllZoneUtil.getCardsIn(ZoneType.Stack).contains(inZone)) { + } else if (GameState.getCardsIn(ZoneType.Stack).contains(inZone)) { crdsStack.add(inZone); } } diff --git a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java index 6cd73dd32cb..9287b16c250 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java +++ b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java @@ -23,7 +23,6 @@ import java.util.HashMap; import java.util.List; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.Singletons; @@ -37,6 +36,7 @@ import forge.card.spellability.AbilityActivated; import forge.card.spellability.SpellAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -233,7 +233,7 @@ public class StaticAbilityContinuous { } } - List cardsIGainedAbilitiesFrom = AllZoneUtil.getCardsIn(validZones); + List cardsIGainedAbilitiesFrom = GameState.getCardsIn(validZones); cardsIGainedAbilitiesFrom = CardLists.getValidCards(cardsIGainedAbilitiesFrom, valids, hostCard.getController(), hostCard); if (cardsIGainedAbilitiesFrom.size() > 0) { @@ -431,9 +431,9 @@ public class StaticAbilityContinuous { List affectedCards = new ArrayList(); if (params.containsKey("AffectedZone")) { - affectedCards.addAll(AllZoneUtil.getCardsIn(ZoneType.listValueOf(params.get("AffectedZone")))); + affectedCards.addAll(GameState.getCardsIn(ZoneType.listValueOf(params.get("AffectedZone")))); } else { - affectedCards = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + affectedCards = GameState.getCardsIn(ZoneType.Battlefield); } if (params.containsKey("Affected") && !params.get("Affected").contains(",")) { diff --git a/src/main/java/forge/card/trigger/Trigger.java b/src/main/java/forge/card/trigger/Trigger.java index 6eba51e5362..d59f14b4d14 100644 --- a/src/main/java/forge/card/trigger/Trigger.java +++ b/src/main/java/forge/card/trigger/Trigger.java @@ -33,6 +33,7 @@ import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.Ability; import forge.card.spellability.SpellAbility; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.zone.ZoneType; @@ -410,7 +411,7 @@ public abstract class Trigger extends TriggerReplacementBase { } if (this.getMapParams().containsKey("CheckSVar")) { - final int sVar = AbilityFactory.calculateAmount(AllZoneUtil.getCardState(this.getHostCard()), this + final int sVar = AbilityFactory.calculateAmount(GameState.getCardState(this.getHostCard()), this .getMapParams().get("CheckSVar"), null); String comparator = "GE1"; if (this.getMapParams().containsKey("SVarCompare")) { @@ -418,7 +419,7 @@ public abstract class Trigger extends TriggerReplacementBase { } final String svarOperator = comparator.substring(0, 2); final String svarOperand = comparator.substring(2); - final int operandValue = AbilityFactory.calculateAmount(AllZoneUtil.getCardState(this.getHostCard()), + final int operandValue = AbilityFactory.calculateAmount(GameState.getCardState(this.getHostCard()), svarOperand, null); if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { return false; diff --git a/src/main/java/forge/card/trigger/TriggerHandler.java b/src/main/java/forge/card/trigger/TriggerHandler.java index 55500ae40ac..d89438bd532 100644 --- a/src/main/java/forge/card/trigger/TriggerHandler.java +++ b/src/main/java/forge/card/trigger/TriggerHandler.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -41,6 +40,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityRestriction; import forge.card.spellability.Target; import forge.control.input.Input; +import forge.game.GameState; import forge.game.phase.PhaseType; //import forge.util.TextUtil; import forge.game.player.ComputerUtil; @@ -65,7 +65,7 @@ public class TriggerHandler { * Clean up temporary triggers. */ public final void cleanUpTemporaryTriggers() { - final List absolutelyAllCards = AllZoneUtil.getCardsInGame(); + final List absolutelyAllCards = GameState.getCardsInGame(); for (final Card c : absolutelyAllCards) { for (int i = 0; i < c.getTriggers().size(); i++) { if (c.getTriggers().get(i).isTemporary()) { @@ -287,8 +287,8 @@ public class TriggerHandler { // This is done to allow the list of triggers to be modified while // triggers are running. final ArrayList delayedTriggersWorkingCopy = new ArrayList(this.delayedTriggers); - List allCards = AllZoneUtil.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); - allCards.addAll(AllZoneUtil.getCardsIn(ZoneType.Stack)); + List allCards = GameState.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); + allCards.addAll(GameState.getCardsIn(ZoneType.Stack)); boolean checkStatics = false; // Static triggers @@ -314,7 +314,7 @@ public class TriggerHandler { // AP allCards = playerAP.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); - allCards.addAll(CardLists.filterControlledBy(AllZoneUtil.getCardsIn(ZoneType.Stack), playerAP)); + allCards.addAll(CardLists.filterControlledBy(GameState.getCardsIn(ZoneType.Stack), playerAP)); // add cards that move to hidden zones if (runParams.containsKey("Destination") && runParams.containsKey("Card")) { Card card = (Card) runParams.get("Card"); @@ -340,7 +340,7 @@ public class TriggerHandler { // NAP allCards = playerAP.getOpponent().getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); - allCards.addAll(CardLists.filterControlledBy(AllZoneUtil.getCardsIn(ZoneType.Stack), playerAP.getOpponent())); + allCards.addAll(CardLists.filterControlledBy(GameState.getCardsIn(ZoneType.Stack), playerAP.getOpponent())); // add cards that move to hidden zones if (runParams.containsKey("Destination") && runParams.containsKey("Card")) { Card card = (Card) runParams.get("Card"); @@ -421,7 +421,7 @@ public class TriggerHandler { String dest = (String) runParams.get("Destination"); if (dest.equals("Battlefield") && runParams.get("Card") instanceof Card) { Card card = (Card) runParams.get("Card"); - if (card.isCreature() && AllZoneUtil.isCardInPlay("Torpor Orb")) { + if (card.isCreature() && GameState.isCardInPlay("Torpor Orb")) { return false; } } @@ -448,7 +448,7 @@ public class TriggerHandler { final AbilityFactory abilityFactory = new AbilityFactory(); final SpellAbility[] sa = new SpellAbility[1]; - Card host = AllZoneUtil.getCardState(regtrig.getHostCard()); + Card host = GameState.getCardState(regtrig.getHostCard()); if (host == null) { host = regtrig.getHostCard(); diff --git a/src/main/java/forge/control/input/InputMulligan.java b/src/main/java/forge/control/input/InputMulligan.java index 10f38d83230..9b9379f34d0 100644 --- a/src/main/java/forge/control/input/InputMulligan.java +++ b/src/main/java/forge/control/input/InputMulligan.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.List; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -30,6 +29,7 @@ import forge.GameActionUtil; import forge.Singletons; import forge.card.abilityfactory.AbilityFactory; import forge.card.spellability.SpellAbility; +import forge.game.GameState; import forge.game.phase.PhaseUtil; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -160,7 +160,7 @@ public class InputMulligan extends Input { } } if (c.getName().startsWith("Leyline") - && !(c.getName().startsWith("Leyline of Singularity") && (AllZoneUtil.getCardsIn(ZoneType.Battlefield, + && !(c.getName().startsWith("Leyline of Singularity") && (GameState.getCardsIn(ZoneType.Battlefield, "Leyline of Singularity").size() > 0))) { ga.moveToPlay(c); //ga.checkStateEffects(); diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 97e99458630..8dc01f2ac07 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -21,7 +21,18 @@ import java.util.ArrayList; import java.util.Collections; 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; +import forge.CardPredicates.Presets; +import forge.CardUtil; +import forge.Counters; import forge.GameLog; +import forge.Singletons; import forge.StaticEffects; import forge.card.replacement.ReplacementHandler; import forge.card.trigger.TriggerHandler; @@ -277,4 +288,304 @@ public class GameState { public void notifyNextTurn() { nTurn++; } + + + // THESE WERE MOVED HERE FROM AllZoneUtil + // They must once become non-static members of this class + + /** + * gets a list of all cards owned by both players that have are currently in + * the given zone. + * + * @param zone + * Constant.Zone + * @return a List with all cards currently in a graveyard + */ + public static List getCardsIn(final ZoneType zone) { + if (zone == ZoneType.Stack) { + return AllZone.getStackZone().getCards(); + } else { + List cards = null; + for (final Player p : Singletons.getModel().getGameState().getPlayers()) { + if ( cards == null ) + cards = p.getZone(zone).getCards(); + else + cards.addAll(p.getZone(zone).getCards()); + } + return cards; + } + } + + public static List getCardsIn(final Iterable zones) { + final List cards = new ArrayList(); + for (final ZoneType z : zones) { + cards.addAll(getCardsIn(z)); + } + return cards; + } + + /** + * gets a list of all cards owned by both players that have are currently in + * the given zone. + * + * @param zone + * a Constant.Zone + * @param cardName + * a String + * @return a List with all cards currently in a graveyard + */ + public static List getCardsIn(final ZoneType zone, final String cardName) { + return CardLists.filter(GameState.getCardsIn(zone), CardPredicates.nameEquals(cardName)); + } + + /** + * use to get a List of all creatures on the battlefield for both. + * players + * + * @return a List of all creatures on the battlefield on both sides + */ + public static List getCreaturesInPlay() { + final List creats = GameState.getCardsIn(ZoneType.Battlefield); + return CardLists.filter(creats, Presets.CREATURES); + } + + /** + * use to get a list of creatures in play for a given player. + * + * @param player + * the player to get creatures for + * @return a List containing all creatures a given player has in play + */ + public static List getCreaturesInPlay(final Player player) { + final List creats = player.getCardsIn(ZoneType.Battlefield); + return CardLists.filter(creats, Presets.CREATURES); + } + + /** + * use to get a list of all lands a given player has on the battlefield. + * + * @param player + * the player whose lands we want to get + * @return a List containing all lands the given player has in play + */ + public static List getPlayerLandsInPlay(final Player player) { + return CardLists.filter(player.getCardsIn(ZoneType.Battlefield), Presets.LANDS); + } + + /** + * gets a list of all lands in play. + * + * @return a List of all lands on the battlefield + */ + public static List getLandsInPlay() { + return CardLists.filter(GameState.getCardsIn(ZoneType.Battlefield), Presets.LANDS); + } + + /** + * answers the question "is the given card in any exile zone?". + * + * @param c + * the card to look for in Exile + * @return true is the card is in Human or Computer's Exile zone + */ + public static boolean isCardExiled(final Card c) { + return GameState.getCardsIn(ZoneType.Exile).contains(c); + } + + // /Check if a certain card is in play + /** + *

+ * isCardInPlay. + *

+ * + * @param card + * a {@link forge.Card} object. + * @return a boolean. + */ + public static boolean isCardInPlay(final Card card) { + if (card.getController() == null) { + return false; + } + return card.getController().getCardsIn(ZoneType.Battlefield).contains(card); + } + + /** + * Answers the question: "Is in play?". + * + * @param cardName + * the name of the card to look for + * @return true is the card is in play, false otherwise + */ + public static boolean isCardInPlay(final String cardName) { + for (final Player p : Singletons.getModel().getGameState().getPlayers()) { + if (isCardInPlay(cardName, p)) + return true; + } + return false; + } + + /** + * Answers the question: "Does have in play?". + * + * @param cardName + * the name of the card to look for + * @param player + * the player whose battlefield we want to check + * @return true if that player has that card in play, false otherwise + */ + public static boolean isCardInPlay(final String cardName, final Player player) { + return Iterables.any(player.getZone(ZoneType.Battlefield), CardPredicates.nameEquals(cardName)); + } + + /** + * gets a list of all Cards of a given color on the battlefield. + * + * @param color + * the color of cards to get + * @return a List of all cards in play of a given color + */ + public static List getColorInPlay(final String color) { + final List cards = new ArrayList(); + for(Player p : Singletons.getModel().getGameState().getPlayers()) { + cards.addAll(getPlayerColorInPlay(p, color)); + } + return cards; + } + + /** + * gets a list of all Cards of a given color a given player has on the + * battlefield. + * + * @param player + * the player's cards to get + * @param color + * the color of cards to get + * @return a List of all cards in play of a given color + */ + public static List getPlayerColorInPlay(final Player player, final String color) { + List cards = player.getCardsIn(ZoneType.Battlefield); + cards = CardLists.filter(cards, new Predicate() { + @Override + public boolean apply(final Card c) { + final List colorList = CardUtil.getColors(c); + return colorList.contains(color); + } + }); + return cards; + } + + /** + *

+ * getCardState. + *

+ * + * @param card + * a {@link forge.Card} object. + * @return a {@link forge.Card} object. + */ + public static Card getCardState(final Card card) { + + for (final Card c : GameState.getCardsInGame()) { + if (card.equals(c)) { + return c; + } + } + + return card; + } + + /** + *

+ * compareTypeAmountInPlay. + *

+ * + * @param player + * a {@link forge.game.player.Player} object. + * @param type + * a {@link java.lang.String} object. + * @return a int. + */ + public static int compareTypeAmountInPlay(final Player player, final String type) { + // returns the difference between player's + final Player opponent = player.getOpponent(); + final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Battlefield), type); + final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Battlefield), type); + return (playerList.size() - opponentList.size()); + } + + /** + *

+ * compareTypeAmountInGraveyard. + *

+ * + * @param player + * a {@link forge.game.player.Player} object. + * @param type + * a {@link java.lang.String} object. + * @return a int. + */ + public static int compareTypeAmountInGraveyard(final Player player, final String type) { + // returns the difference between player's + final Player opponent = player.getOpponent(); + final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Graveyard), type); + final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Graveyard), type); + return (playerList.size() - opponentList.size()); + } + + /** + * a CardListFilter to get all cards that are a part of this game. + * + * @return a {@link forge.CardList} with all cards in all Battlefields, + * Hands, Graveyards, Libraries, and Exiles. + */ + public static List getCardsInGame() { + final List all = new ArrayList(); + for (final Player player : Singletons.getModel().getGameState().getPlayers()) { + all.addAll(player.getZone(ZoneType.Graveyard).getCards()); + all.addAll(player.getZone(ZoneType.Hand).getCards()); + all.addAll(player.getZone(ZoneType.Library).getCards()); + all.addAll(player.getZone(ZoneType.Battlefield).getCards(false)); + all.addAll(player.getZone(ZoneType.Exile).getCards()); + } + all.addAll(AllZone.getStackZone().getCards()); + return all; + } + + /** + *

+ * getDoublingSeasonMagnitude. + *

+ * + * @param player + * the {@link forge.game.player.Player} player to determine if is affected by + * Doubling Season + * @return a int. + */ + public static int getCounterDoublersMagnitude(final Player player, Counters type) { + int counterDoublers = player.getCardsIn(ZoneType.Battlefield, "Doubling Season").size(); + if(type == Counters.P1P1) { + counterDoublers += player.getCardsIn(ZoneType.Battlefield, "Corpsejack Menace").size(); + } + return (int) Math.pow(2, counterDoublers); // pow(a,0) = 1; pow(a,1) = a + // ... no worries about size + // = 0 + } + + /** + *

+ * getTokenDoublersMagnitude. + *

+ * + * @param player + * the {@link forge.game.player.Player} player to determine if is affected by + * Doubling Season + * @return a int. + */ + public static int getTokenDoublersMagnitude(final Player player) { + final int tokenDoublers = player.getCardsIn(ZoneType.Battlefield, "Parallel Lives").size() + + player.getCardsIn(ZoneType.Battlefield, "Doubling Season").size(); + return (int) Math.pow(2, tokenDoublers); // pow(a,0) = 1; pow(a,1) = a + // ... no worries about size = + // 0 + } } diff --git a/src/main/java/forge/game/phase/Combat.java b/src/main/java/forge/game/phase/Combat.java index 8dd86c63367..2e82db24a93 100644 --- a/src/main/java/forge/game/phase/Combat.java +++ b/src/main/java/forge/game/phase/Combat.java @@ -27,7 +27,6 @@ import java.util.Set; import java.util.TreeMap; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -36,6 +35,7 @@ import forge.GameActionUtil; import forge.GameEntity; import forge.Singletons; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.match.CMatchUI; @@ -626,7 +626,7 @@ public class Combat { all.addAll(this.getAllBlockers()); for (int i = 0; i < all.size(); i++) { - if (!AllZoneUtil.isCardInPlay(all.get(i))) { + if (!GameState.isCardInPlay(all.get(i))) { this.removeFromCombat(all.get(i)); } } diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java index 870fb27f7cb..140b75694c7 100644 --- a/src/main/java/forge/game/phase/CombatUtil.java +++ b/src/main/java/forge/game/phase/CombatUtil.java @@ -29,7 +29,6 @@ import com.esotericsoftware.minlog.Log; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -55,6 +54,7 @@ import forge.card.staticability.StaticAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.ComputerUtilBlock; import forge.game.player.Player; @@ -101,7 +101,7 @@ public class CombatUtil { return false; } - for (final Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (final Card c : GameState.getCardsIn(ZoneType.Battlefield)) { for (final String keyword : c.getKeyword()) { if (keyword.equals("No more than one creature can block each combat.") && (combat.getAllBlockers().size() > 0)) { @@ -114,7 +114,7 @@ public class CombatUtil { } } - if (combat.getAllBlockers().size() > 0 && AllZoneUtil.isCardInPlay("Dueling Grounds")) { + if (combat.getAllBlockers().size() > 0 && GameState.isCardInPlay("Dueling Grounds")) { return false; } @@ -160,7 +160,7 @@ public class CombatUtil { return false; } - final List list = AllZoneUtil.getCreaturesInPlay(blocker.getController()); + final List list = GameState.getCreaturesInPlay(blocker.getController()); if (list.size() < 2 && blocker.hasKeyword("CARDNAME can't attack or block alone.")) { return false; } @@ -382,7 +382,7 @@ public class CombatUtil { */ public static boolean finishedMandatoryBlocks(final Combat combat) { - final List blockers = AllZoneUtil.getCreaturesInPlay(Singletons.getControl().getPlayer()); + final List blockers = GameState.getCreaturesInPlay(Singletons.getControl().getPlayer()); final List attackers = combat.getAttackerList(); // if a creature does not block but should, return false @@ -761,7 +761,7 @@ public class CombatUtil { return false; } - if (AllZoneUtil.isCardInPlay("Shifting Sliver")) { + if (GameState.isCardInPlay("Shifting Sliver")) { if (attacker.isType("Sliver") && !blocker.isType("Sliver")) { return false; } @@ -785,7 +785,7 @@ public class CombatUtil { public static boolean canAttack(final Card c, final Combat combat) { int cntAttackers = combat.getAttackers().size(); - for (final Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (final Card card : GameState.getCardsIn(ZoneType.Battlefield)) { for (final String keyword : card.getKeyword()) { if (keyword.equals("No more than one creature can attack each combat.") && cntAttackers > 0) { return false; @@ -803,7 +803,7 @@ public class CombatUtil { } } - final List list = AllZoneUtil.getCreaturesInPlay(c.getController()); + final List list = GameState.getCreaturesInPlay(c.getController()); if (list.size() < 2 && c.hasKeyword("CARDNAME can't attack or block alone.")) { return false; } @@ -812,7 +812,7 @@ public class CombatUtil { return false; } - if (cntAttackers > 0 && AllZoneUtil.isCardInPlay("Dueling Grounds")) { + if (cntAttackers > 0 && GameState.isCardInPlay("Dueling Grounds")) { return false; } @@ -880,7 +880,7 @@ public class CombatUtil { if (asSeparateWords[12].matches("[0-9][0-9]?")) { powerLimit[0] = Integer.parseInt((asSeparateWords[12]).trim()); - List list = AllZoneUtil.getCreaturesInPlay(c.getController().getOpponent()); + List list = GameState.getCreaturesInPlay(c.getController().getOpponent()); list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card ct) { @@ -959,7 +959,7 @@ public class CombatUtil { public static int getTotalFirstStrikeBlockPower(final Card attacker, final Player player) { final Card att = attacker; - List list = AllZoneUtil.getCreaturesInPlay(player); + List list = GameState.getCreaturesInPlay(player); list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { @@ -1322,7 +1322,7 @@ public class CombatUtil { } int defenderDamage = defender.getNetAttack() + CombatUtil.predictPowerBonusOfBlocker(attacker, defender, true); - if (AllZoneUtil.isCardInPlay("Doran, the Siege Tower")) { + if (GameState.isCardInPlay("Doran, the Siege Tower")) { defenderDamage = defender.getNetDefense() + CombatUtil.predictToughnessBonusOfBlocker(attacker, defender, true); } @@ -1582,7 +1582,7 @@ public class CombatUtil { // look out for continuous static abilities that only care for blocking // creatures - final List cardList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List cardList = GameState.getCardsIn(ZoneType.Battlefield); for (final Card card : cardList) { for (final StaticAbility stAb : card.getStaticAbilities()) { final HashMap params = stAb.getMapParams(); @@ -1609,7 +1609,7 @@ public class CombatUtil { } final ArrayList theTriggers = new ArrayList(); - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { theTriggers.addAll(card.getTriggers()); } theTriggers.addAll(attacker.getTriggers()); @@ -1708,7 +1708,7 @@ public class CombatUtil { toughness += defender.getKeywordMagnitude("Bushido"); final ArrayList theTriggers = new ArrayList(); - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { theTriggers.addAll(card.getTriggers()); } theTriggers.addAll(attacker.getTriggers()); @@ -1830,7 +1830,7 @@ public class CombatUtil { } final ArrayList theTriggers = new ArrayList(); - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { theTriggers.addAll(card.getTriggers()); } // if the defender has first strike and wither the attacker will deal @@ -1847,7 +1847,7 @@ public class CombatUtil { // look out for continuous static abilities that only care for attacking // creatures - final List cardList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List cardList = GameState.getCardsIn(ZoneType.Battlefield); for (final Card card : cardList) { for (final StaticAbility stAb : card.getStaticAbilities()) { final HashMap params = stAb.getMapParams(); @@ -1962,7 +1962,7 @@ public class CombatUtil { } final ArrayList theTriggers = new ArrayList(); - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { theTriggers.addAll(card.getTriggers()); } if (defender != null) { @@ -1972,7 +1972,7 @@ public class CombatUtil { // look out for continuous static abilities that only care for attacking // creatures - final List cardList = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List cardList = GameState.getCardsIn(ZoneType.Battlefield); for (final Card card : cardList) { for (final StaticAbility stAb : card.getStaticAbilities()) { final HashMap params = stAb.getMapParams(); @@ -2093,7 +2093,7 @@ public class CombatUtil { */ public static boolean checkDestroyBlockerTrigger(final Card attacker, final Card defender) { final ArrayList theTriggers = new ArrayList(); - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { theTriggers.addAll(card.getTriggers()); } for (Trigger trigger : theTriggers) { @@ -2148,7 +2148,7 @@ public class CombatUtil { */ public static boolean checkDestroyAttackerTrigger(final Card attacker, final Card defender) { final ArrayList theTriggers = new ArrayList(); - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card card : GameState.getCardsIn(ZoneType.Battlefield)) { theTriggers.addAll(card.getTriggers()); } for (Trigger trigger : theTriggers) { @@ -2242,7 +2242,7 @@ public class CombatUtil { + CombatUtil.predictPowerBonusOfBlocker(attacker, defender, withoutAbilities); int attackerDamage = attacker.getNetAttack() + CombatUtil.predictPowerBonusOfAttacker(attacker, defender, combat); - if (AllZoneUtil.isCardInPlay("Doran, the Siege Tower")) { + if (GameState.isCardInPlay("Doran, the Siege Tower")) { defenderDamage = defender.getNetDefense() + CombatUtil.predictToughnessBonusOfBlocker(attacker, defender, withoutAbilities); attackerDamage = attacker.getNetDefense() @@ -2390,7 +2390,7 @@ public class CombatUtil { + CombatUtil.predictPowerBonusOfBlocker(attacker, defender, withoutAbilities); int attackerDamage = attacker.getNetAttack() + CombatUtil.predictPowerBonusOfAttacker(attacker, defender, combat); - if (AllZoneUtil.isCardInPlay("Doran, the Siege Tower")) { + if (GameState.isCardInPlay("Doran, the Siege Tower")) { defenderDamage = defender.getNetDefense() + CombatUtil.predictToughnessBonusOfBlocker(attacker, defender, withoutAbilities); attackerDamage = attacker.getNetDefense() @@ -2479,7 +2479,7 @@ public class CombatUtil { *

*/ public static void removeAllDamage() { - final List cl = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List cl = GameState.getCardsIn(ZoneType.Battlefield); for (final Card c : cl) { c.setDamage(0); } @@ -2645,7 +2645,7 @@ public class CombatUtil { public static void checkPropagandaEffects(final Card c, final boolean bLast) { Cost attackCost = new Cost(c, "0", true); // Sort abilities to apply them in proper order - for (Card card : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + 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)); @@ -2801,13 +2801,13 @@ public class CombatUtil { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(charger)) { + if (GameState.isCardInPlay(charger)) { charger.removeIntrinsicKeyword("Trample"); } } }; // Command - if (AllZoneUtil.isCardInPlay(charger)) { + if (GameState.isCardInPlay(charger)) { charger.addIntrinsicKeyword("Trample"); AllZone.getEndOfTurn().addUntil(untilEOT); @@ -2953,14 +2953,14 @@ public class CombatUtil { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(blocker)) { + if (GameState.isCardInPlay(blocker)) { blocker.addTempAttackBoost(mag); blocker.addTempDefenseBoost(mag); } } }; // Command - if (AllZoneUtil.isCardInPlay(blocker)) { + if (GameState.isCardInPlay(blocker)) { blocker.addTempAttackBoost(-mag); blocker.addTempDefenseBoost(-mag); @@ -3009,14 +3009,14 @@ public class CombatUtil { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(crd)) { + if (GameState.isCardInPlay(crd)) { crd.addTempAttackBoost(-1); crd.addTempDefenseBoost(-1); } } }; // Command - if (AllZoneUtil.isCardInPlay(crd)) { + if (GameState.isCardInPlay(crd)) { crd.addTempAttackBoost(1); crd.addTempDefenseBoost(1); @@ -3106,7 +3106,7 @@ public class CombatUtil { } else { enchantment = CardFactoryUtil.getBestEnchantmentAI(enchantments, this, false); } - if ((enchantment != null) && AllZoneUtil.isCardInPlay(attacker)) { + if ((enchantment != null) && GameState.isCardInPlay(attacker)) { GameAction.changeZone(AllZone.getZoneOf(enchantment), enchantment.getOwner().getZone(ZoneType.Battlefield), enchantment, null); enchantment.enchantEntity(attacker); @@ -3153,14 +3153,14 @@ public class CombatUtil { @Override public void execute() { - if (AllZoneUtil.isCardInPlay(crd)) { + if (GameState.isCardInPlay(crd)) { crd.addTempAttackBoost(-pump); crd.addTempDefenseBoost(-pump); } } }; // Command - if (AllZoneUtil.isCardInPlay(crd)) { + if (GameState.isCardInPlay(crd)) { crd.addTempAttackBoost(pump); crd.addTempDefenseBoost(pump); diff --git a/src/main/java/forge/game/phase/EndOfTurn.java b/src/main/java/forge/game/phase/EndOfTurn.java index ef834d3e7e5..ccc77b293d4 100644 --- a/src/main/java/forge/game/phase/EndOfTurn.java +++ b/src/main/java/forge/game/phase/EndOfTurn.java @@ -22,7 +22,6 @@ import java.util.List; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -31,6 +30,7 @@ import forge.Singletons; import forge.card.spellability.Ability; import forge.card.spellability.SpellAbility; import forge.game.GameLossReason; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -57,7 +57,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { // TODO - should this freeze the Stack? - final List all = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List all = GameState.getCardsIn(ZoneType.Battlefield); //EndOfTurn.endOfTurnWallOfReverence(); EndOfTurn.endOfTurnLighthouseChronologist(); @@ -73,7 +73,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility sac = new Ability(card, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(card)) { + if (GameState.isCardInPlay(card)) { Singletons.getModel().getGameAction().sacrifice(card, null); } } @@ -91,7 +91,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility exile = new Ability(card, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(card)) { + if (GameState.isCardInPlay(card)) { Singletons.getModel().getGameAction().exile(card); } } @@ -109,7 +109,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility destroy = new Ability(card, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(card)) { + if (GameState.isCardInPlay(card)) { Singletons.getModel().getGameAction().destroy(card); } } @@ -129,7 +129,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility sac = new Ability(card, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(card)) { + if (GameState.isCardInPlay(card)) { Singletons.getModel().getGameAction().destroy(card); } } @@ -151,7 +151,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility change = new Ability(vale, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(vale)) { + if (GameState.isCardInPlay(vale)) { vale.addController(vale.getController().getOpponent()); // Singletons.getModel().getGameAction().changeController( // new ArrayList(vale), vale.getController(), @@ -176,7 +176,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility change = new Ability(raider, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(raider)) { + if (GameState.isCardInPlay(raider)) { raider.getController().addDamage(2, raider); } } @@ -195,7 +195,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { final SpellAbility change = new Ability(source, "0") { @Override public void resolve() { - if (AllZoneUtil.isCardInPlay(source)) { + if (GameState.isCardInPlay(source)) { Singletons.getModel().getGameAction().moveToHand(source); } } diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 359af529f88..50721bed90f 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -23,7 +23,6 @@ import java.util.Stack; import com.esotericsoftware.minlog.Log; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -32,6 +31,7 @@ import forge.GameActionUtil; import forge.Singletons; import forge.card.spellability.SpellAbility; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.Player; import forge.game.player.PlayerType; import forge.game.zone.ZoneType; @@ -394,7 +394,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { case CLEANUP: // Reset Damage received map - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List list = GameState.getCardsIn(ZoneType.Battlefield); for (final Card c : list) { c.resetPreventNextDamage(); c.resetReceivedDamageFromThisTurn(); @@ -474,7 +474,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { return; } this.bPhaseEffects = true; - if (!AllZoneUtil.isCardInPlay("Upwelling")) { + if (!GameState.isCardInPlay("Upwelling")) { for (Player p : Singletons.getModel().getGameState().getPlayers()) { int burn = p.getManaPool().clearPool(); if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_MANABURN)) { @@ -938,7 +938,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { final Card source = sa.getRootSpellAbility().getSourceCard(); boolean onlyThis = true; if (AllZone.getStack().size() != 0) { - for (final Card card : AllZoneUtil.getCardsIn(ZoneType.Stack)) { + for (final Card card : GameState.getCardsIn(ZoneType.Stack)) { if (card != source) { onlyThis = false; //System.out.println("StackCard: " + card + " vs SourceCard: " + source); diff --git a/src/main/java/forge/game/phase/PhaseUtil.java b/src/main/java/forge/game/phase/PhaseUtil.java index f0f368567a1..b8c2fc6fb5c 100644 --- a/src/main/java/forge/game/phase/PhaseUtil.java +++ b/src/main/java/forge/game/phase/PhaseUtil.java @@ -24,12 +24,12 @@ import java.util.List; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; import forge.CardPredicates.Presets; import forge.Singletons; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.match.CMatchUI; @@ -66,7 +66,7 @@ public class PhaseUtil { return true; } - if (AllZoneUtil.isCardInPlay("Sands of Time") || AllZoneUtil.isCardInPlay("Stasis")) { + if (GameState.isCardInPlay("Sands of Time") || GameState.isCardInPlay("Stasis")) { return true; } @@ -105,7 +105,7 @@ public class PhaseUtil { Singletons.getModel().getGameAction().resetActivationsPerTurn(); - final List lands = CardLists.filter(AllZoneUtil.getPlayerLandsInPlay(turn), Presets.UNTAPPED); + final List lands = CardLists.filter(GameState.getPlayerLandsInPlay(turn), Presets.UNTAPPED); turn.setNumPowerSurgeLands(lands.size()); // anything before this point happens regardless of whether the Untap @@ -155,13 +155,13 @@ public class PhaseUtil { * @return a boolean. */ public static boolean skipUpkeep() { - if (AllZoneUtil.isCardInPlay("Eon Hub")) { + if (GameState.isCardInPlay("Eon Hub")) { return true; } final Player turn = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - if ((turn.getCardsIn(ZoneType.Hand).size() == 0) && AllZoneUtil.isCardInPlay("Gibbering Descent", turn)) { + if ((turn.getCardsIn(ZoneType.Hand).size() == 0) && GameState.isCardInPlay("Gibbering Descent", turn)) { return true; } diff --git a/src/main/java/forge/game/phase/Untap.java b/src/main/java/forge/game/phase/Untap.java index bb9e76b2d50..e6c89da137c 100644 --- a/src/main/java/forge/game/phase/Untap.java +++ b/src/main/java/forge/game/phase/Untap.java @@ -23,7 +23,6 @@ import java.util.List; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -34,6 +33,7 @@ import forge.GameEntity; import forge.Singletons; import forge.card.cardfactory.CardFactoryUtil; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -87,7 +87,7 @@ public class Untap extends Phase implements java.io.Serializable { return false; } - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { if (ca.hasStartOfKeyword("Permanents don't untap during their controllers' untap steps")) { final int keywordPosition = ca @@ -131,11 +131,11 @@ public class Untap extends Phase implements java.io.Serializable { if (Untap.canOnlyUntapOneLand() && c.isLand()) { return false; } - if ((AllZoneUtil.isCardInPlay("Damping Field") || AllZoneUtil.isCardInPlay("Imi Statue")) + if ((GameState.isCardInPlay("Damping Field") || GameState.isCardInPlay("Imi Statue")) && c.isArtifact()) { return false; } - if ((AllZoneUtil.isCardInPlay("Smoke") || AllZoneUtil.isCardInPlay("Stoic Angel") || AllZoneUtil + if ((GameState.isCardInPlay("Smoke") || GameState.isCardInPlay("Stoic Angel") || GameState .isCardInPlay("Intruder Alarm")) && c.isCreature()) { return false; } @@ -154,7 +154,7 @@ public class Untap extends Phase implements java.io.Serializable { prompt += "\r\n" + c + " is controlling: "; for (final Card target : targets) { prompt += target; - if (AllZoneUtil.isCardInPlay(target)) { + if (GameState.isCardInPlay(target)) { defaultChoice = false; } } @@ -170,7 +170,7 @@ public class Untap extends Phase implements java.io.Serializable { final ArrayList targets = c.getGainControlTargets(); boolean untap = true; for (final Card target : targets) { - if (AllZoneUtil.isCardInPlay(target)) { + if (GameState.isCardInPlay(target)) { untap |= true; } } @@ -180,7 +180,7 @@ public class Untap extends Phase implements java.io.Serializable { } } } - } else if ((c.getCounters(Counters.WIND) > 0) && AllZoneUtil.isCardInPlay("Freyalise's Winds")) { + } else if ((c.getCounters(Counters.WIND) > 0) && GameState.isCardInPlay("Freyalise's Winds")) { // remove a WIND counter instead of untapping c.subtractCounter(Counters.WIND, 1); } else { @@ -200,7 +200,7 @@ public class Untap extends Phase implements java.io.Serializable { if (Untap.canOnlyUntapOneLand()) { if (player.isComputer()) { // search for lands the computer has and only untap 1 - List landList = AllZoneUtil.getPlayerLandsInPlay(player); + List landList = GameState.getPlayerLandsInPlay(player); landList = CardLists.filter(landList, tappedCanUntap); if (landList.size() > 0) { @@ -229,14 +229,14 @@ public class Untap extends Phase implements java.io.Serializable { } } // selectCard() }; // Input - List landList = AllZoneUtil.getPlayerLandsInPlay(player); + List landList = GameState.getPlayerLandsInPlay(player); landList = CardLists.filter(landList, tappedCanUntap); if (landList.size() > 0) { AllZone.getInputControl().setInput(target); } } } - if (AllZoneUtil.isCardInPlay("Damping Field") || AllZoneUtil.isCardInPlay("Imi Statue")) { + if (GameState.isCardInPlay("Damping Field") || GameState.isCardInPlay("Imi Statue")) { final Player turnOwner = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); if (turnOwner.isComputer()) { List artList = turnOwner.getCardsIn(ZoneType.Battlefield); @@ -277,9 +277,9 @@ public class Untap extends Phase implements java.io.Serializable { } } } - if ((AllZoneUtil.isCardInPlay("Smoke") || AllZoneUtil.isCardInPlay("Stoic Angel"))) { + if ((GameState.isCardInPlay("Smoke") || GameState.isCardInPlay("Stoic Angel"))) { if (player.isComputer()) { - List creatures = AllZoneUtil.getCreaturesInPlay(player); + List creatures = GameState.getCreaturesInPlay(player); creatures = CardLists.filter(creatures, tappedCanUntap); if (creatures.size() > 0) { creatures.get(0).untap(); @@ -308,7 +308,7 @@ public class Untap extends Phase implements java.io.Serializable { } } // selectCard() }; // Input - List creatures = AllZoneUtil.getCreaturesInPlay(player); + List creatures = GameState.getCreaturesInPlay(player); creatures = CardLists.filter(creatures, tappedCanUntap); if (creatures.size() > 0) { AllZone.getInputControl().setInput(target); @@ -331,7 +331,7 @@ public class Untap extends Phase implements java.io.Serializable { private static boolean canOnlyUntapOneLand() { // Winter Orb was given errata so it no longer matters if it's tapped or // not - if (AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Winter Orb").size() > 0) { + if (GameState.getCardsIn(ZoneType.Battlefield, "Winter Orb").size() > 0) { return true; } diff --git a/src/main/java/forge/game/phase/Upkeep.java b/src/main/java/forge/game/phase/Upkeep.java index 3354c512676..bf549f56c12 100644 --- a/src/main/java/forge/game/phase/Upkeep.java +++ b/src/main/java/forge/game/phase/Upkeep.java @@ -24,7 +24,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -42,6 +41,7 @@ import forge.card.spellability.AbilityMana; import forge.card.spellability.AbilityStatic; import forge.card.spellability.SpellAbility; import forge.control.input.Input; +import forge.game.GameState; import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.player.PlayerUtil; @@ -476,8 +476,8 @@ public class Upkeep extends Phase implements java.io.Serializable { * regenerated. */ final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - final List the = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "The Abyss"); - final List magus = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Magus of the Abyss"); + final List the = GameState.getCardsIn(ZoneType.Battlefield, "The Abyss"); + final List magus = GameState.getCardsIn(ZoneType.Battlefield, "Magus of the Abyss"); final List cards = new ArrayList(); cards.addAll(the); @@ -486,7 +486,7 @@ public class Upkeep extends Phase implements java.io.Serializable { for (final Card c : cards) { final Card abyss = c; - final List abyssGetTargets = CardLists.filter(AllZoneUtil.getCreaturesInPlay(player), Presets.NON_ARTIFACTS); + final List abyssGetTargets = CardLists.filter(GameState.getCreaturesInPlay(player), Presets.NON_ARTIFACTS); final Ability sacrificeCreature = new Ability(abyss, "") { @Override @@ -562,7 +562,7 @@ public class Upkeep extends Phase implements java.io.Serializable { final Ability ability = new Ability(c, "") { @Override public void resolve() { - final List creatures = AllZoneUtil.getCreaturesInPlay(); + final List creatures = GameState.getCreaturesInPlay(); if (creatures.size() > 0) { CardLists.sortAttackLowFirst(creatures); final int power = creatures.get(0).getNetAttack(); @@ -637,7 +637,7 @@ public class Upkeep extends Phase implements java.io.Serializable { final Ability noPay = new Ability(c, "B B B") { @Override public void resolve() { - final List playerLand = AllZoneUtil.getPlayerLandsInPlay(player); + final List playerLand = GameState.getPlayerLandsInPlay(player); c.tap(); if (c.getController().isComputer()) { @@ -1235,11 +1235,11 @@ public class Upkeep extends Phase implements java.io.Serializable { } // player isComputer() else { - List humanCreatures = AllZoneUtil.getCreaturesInPlay(player.getOpponent()); + List humanCreatures = GameState.getCreaturesInPlay(player.getOpponent()); humanCreatures = CardLists.getValidCards(humanCreatures, smallCreatures, k.getController(), k); humanCreatures = CardLists.getNotKeyword(humanCreatures, "Indestructible"); - List computerCreatures = AllZoneUtil.getCreaturesInPlay(player); + List computerCreatures = GameState.getCreaturesInPlay(player); computerCreatures = CardLists.getValidCards(computerCreatures, smallCreatures, k.getController(), k); computerCreatures = CardLists.getNotKeyword(computerCreatures, "Indestructible"); @@ -1256,7 +1256,7 @@ public class Upkeep extends Phase implements java.io.Serializable { } if (wantDamageCreatures) { - final List allCreatures = AllZoneUtil.getCreaturesInPlay(); + final List allCreatures = GameState.getCreaturesInPlay(); for (final Card crd : allCreatures) { crd.addDamage(2, k); } @@ -1607,7 +1607,7 @@ public class Upkeep extends Phase implements java.io.Serializable { } if (wantMerfolkBuff) { - final List creatures = AllZoneUtil.getCreaturesInPlay(player); + final List creatures = GameState.getCreaturesInPlay(player); for (int i = 0; i < creatures.size(); i++) { if (!creatures.get(i).hasKeyword("Flying")) { creatures.get(i).addExtrinsicKeyword("Flying"); @@ -1618,7 +1618,7 @@ public class Upkeep extends Phase implements java.io.Serializable { @Override public void execute() { - final List creatures = AllZoneUtil.getCreaturesInPlay(player); + final List creatures = GameState.getCreaturesInPlay(player); for (int i = 0; i < creatures.size(); i++) { if (creatures.get(i).hasKeyword("Flying")) { creatures.get(i).removeExtrinsicKeyword("Flying"); @@ -1937,14 +1937,14 @@ public class Upkeep extends Phase implements java.io.Serializable { *

*/ private static void upkeepOathOfDruids() { - final List oathList = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Oath of Druids"); + final List oathList = GameState.getCardsIn(ZoneType.Battlefield, "Oath of Druids"); if (oathList.isEmpty()) { return; } final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - if (AllZoneUtil.compareTypeAmountInPlay(player, "Creature") < 0) { + if (GameState.compareTypeAmountInPlay(player, "Creature") < 0) { for (int i = 0; i < oathList.size(); i++) { final Card oath = oathList.get(i); final Ability ability = new Ability(oath, "0") { @@ -1954,7 +1954,7 @@ public class Upkeep extends Phase implements java.io.Serializable { final PlayerZone battlefield = player.getZone(ZoneType.Battlefield); boolean oathFlag = true; - if (AllZoneUtil.compareTypeAmountInPlay(player, "Creature") < 0) { + if (GameState.compareTypeAmountInPlay(player, "Creature") < 0) { if (player.isHuman()) { final StringBuilder question = new StringBuilder(); question.append("Reveal cards from the top of your library and place "); @@ -2018,21 +2018,21 @@ public class Upkeep extends Phase implements java.io.Serializable { *

*/ private static void upkeepOathOfGhouls() { - final List oathList = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Oath of Ghouls"); + final List oathList = GameState.getCardsIn(ZoneType.Battlefield, "Oath of Ghouls"); if (oathList.isEmpty()) { return; } final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - if (AllZoneUtil.compareTypeAmountInGraveyard(player, "Creature") > 0) { + if (GameState.compareTypeAmountInGraveyard(player, "Creature") > 0) { for (int i = 0; i < oathList.size(); i++) { final Ability ability = new Ability(oathList.get(0), "0") { @Override public void resolve() { final List graveyardCreatures = CardLists.filter(player.getCardsIn(ZoneType.Graveyard), CardPredicates.Presets.CREATURES); - if (AllZoneUtil.compareTypeAmountInGraveyard(player, "Creature") > 0) { + if (GameState.compareTypeAmountInGraveyard(player, "Creature") > 0) { if (player.isHuman()) { final Card o = GuiChoose.oneOrNone("Pick a creature to return to hand", graveyardCreatures); if (o != null) { @@ -2068,7 +2068,7 @@ public class Upkeep extends Phase implements java.io.Serializable { */ private static void upkeepKarma() { final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - final List karmas = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Karma"); + final List karmas = GameState.getCardsIn(ZoneType.Battlefield, "Karma"); final List swamps = CardLists.getType(player.getCardsIn(ZoneType.Battlefield), "Swamp"); // determine how much damage to deal the current player @@ -2113,7 +2113,7 @@ public class Upkeep extends Phase implements java.io.Serializable { * controlled at the beginning of this turn. */ final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - final List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Power Surge"); + final List list = GameState.getCardsIn(ZoneType.Battlefield, "Power Surge"); final int damage = player.getNumPowerSurgeLands(); for (final Card surge : list) { @@ -2143,7 +2143,7 @@ public class Upkeep extends Phase implements java.io.Serializable { */ private static void upkeepTangleWire() { final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - final List wires = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Tangle Wire"); + final List wires = GameState.getCardsIn(ZoneType.Battlefield, "Tangle Wire"); for (final Card source : wires) { final SpellAbility ability = new Ability(source, "0") { diff --git a/src/main/java/forge/game/player/ComputerAIGeneral.java b/src/main/java/forge/game/player/ComputerAIGeneral.java index 39eaf89e756..9833fdeab28 100644 --- a/src/main/java/forge/game/player/ComputerAIGeneral.java +++ b/src/main/java/forge/game/player/ComputerAIGeneral.java @@ -24,7 +24,6 @@ import java.util.List; import com.esotericsoftware.minlog.Log; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.Singletons; @@ -36,6 +35,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.phase.CombatUtil; import forge.game.zone.ZoneType; @@ -312,7 +312,7 @@ public class ComputerAIGeneral implements Computer { */ @Override public final void declareBlockers() { - final List blockers = AllZoneUtil.getCreaturesInPlay(player); + final List blockers = GameState.getCreaturesInPlay(player); AllZone.setCombat(ComputerUtilBlock.getBlockers(player, AllZone.getCombat(), blockers)); diff --git a/src/main/java/forge/game/player/ComputerUtil.java b/src/main/java/forge/game/player/ComputerUtil.java index afef5ff2ec7..570bb1641d4 100644 --- a/src/main/java/forge/game/player/ComputerUtil.java +++ b/src/main/java/forge/game/player/ComputerUtil.java @@ -28,7 +28,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; import forge.CardPredicates; @@ -54,6 +53,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; import forge.control.input.InputPayManaCostUtil; import forge.error.ErrorViewer; +import forge.game.GameState; import forge.game.phase.Combat; import forge.game.phase.CombatUtil; import forge.game.phase.PhaseType; @@ -1280,7 +1280,7 @@ public class ComputerUtil { public boolean apply(final Card c) { if (c.getSVar("NeedsToPlay").length() > 0) { final String needsToPlay = c.getSVar("NeedsToPlay"); - List list = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List list = GameState.getCardsIn(ZoneType.Battlefield); list = CardLists.getValidCards(list, needsToPlay.split(","), c.getController(), c); if (list.isEmpty()) { @@ -1964,7 +1964,7 @@ public class ComputerUtil { final Target tgt = sa.getTarget(); if (tgt != null) { - if (CardLists.getValidCards(AllZoneUtil.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, sa.getSourceCard()).contains(card)) { + if (CardLists.getValidCards(GameState.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, sa.getSourceCard()).contains(card)) { return true; } } else if (AbilityFactory.getDefinedCards(sa.getSourceCard(), mapParams.get("Defined"), sa) @@ -2013,7 +2013,7 @@ public class ComputerUtil { } final Target tgt = sa.getTarget(); if (tgt != null) { - if (CardLists.getValidCards(AllZoneUtil.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, af.getHostCard()).contains(card)) { + if (CardLists.getValidCards(GameState.getCardsIn(ZoneType.Battlefield), tgt.getValidTgts(), controller, af.getHostCard()).contains(card)) { prevented += AbilityFactory.calculateAmount(af.getHostCard(), mapParams.get("Amount"), sa); } @@ -2113,13 +2113,13 @@ public class ComputerUtil { // Otherwise, if life is possibly in danger, then this is fine. Combat combat = new Combat(); combat.initiatePossibleDefenders(ai); - List attackers = AllZoneUtil.getCreaturesInPlay(ai.getOpponent()); + List attackers = GameState.getCreaturesInPlay(ai.getOpponent()); for (Card att : attackers) { if (CombatUtil.canAttackNextTurn(att)) { combat.addAttacker(att); } } - combat = ComputerUtilBlock.getBlockers(ai, combat, AllZoneUtil.getCreaturesInPlay(ai)); + combat = ComputerUtilBlock.getBlockers(ai, combat, GameState.getCreaturesInPlay(ai)); if (!CombatUtil.lifeInDanger(ai, combat)) { // Otherwise, return false. Do not play now. ret = false; diff --git a/src/main/java/forge/game/player/ComputerUtilAttack.java b/src/main/java/forge/game/player/ComputerUtilAttack.java index 4e80fa3ad95..28a9668e318 100644 --- a/src/main/java/forge/game/player/ComputerUtilAttack.java +++ b/src/main/java/forge/game/player/ComputerUtilAttack.java @@ -24,7 +24,6 @@ import java.util.Random; import com.google.common.base.Predicate; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -35,6 +34,7 @@ import forge.Singletons; import forge.card.cardfactory.CardFactoryUtil; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.phase.Combat; import forge.game.phase.CombatUtil; import forge.game.zone.ZoneType; @@ -314,7 +314,7 @@ public class ComputerUtilAttack { // bonus TWICE humanBaseAttack = humanBaseAttack + humanExaltedBonus; } - final int totalExaltedAttack = AllZoneUtil.isCardInPlay("Rafiq of the Many", opp) ? 2 * humanBaseAttack + final int totalExaltedAttack = GameState.isCardInPlay("Rafiq of the Many", opp) ? 2 * humanBaseAttack : humanBaseAttack; if (ai.getLife() - 3 <= totalExaltedAttack) { // We will lose if there is an Exalted attack -- keep one @@ -382,7 +382,7 @@ public class ComputerUtilAttack { */ private boolean doAssault(final Player ai) { // Beastmaster Ascension - if (AllZoneUtil.isCardInPlay("Beastmaster Ascension", ai) + if (GameState.isCardInPlay("Beastmaster Ascension", ai) && (this.attackers.size() > 1)) { final List beastions = ai.getCardsIn(ZoneType.Battlefield, "Beastmaster Ascension"); int minCreatures = 7; diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index b9b615b3176..4a7f8e03f90 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -34,7 +34,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -52,6 +51,7 @@ import forge.card.spellability.SpellAbility; import forge.card.staticability.StaticAbility; import forge.card.trigger.TriggerType; import forge.game.GameLossReason; +import forge.game.GameState; import forge.game.phase.PhaseHandler; import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZoneBattlefield; @@ -584,7 +584,7 @@ public abstract class Player extends GameEntity implements Comparable { @Override public final int staticDamagePrevention(final int damage, final Card source, final boolean isCombat) { - if (AllZoneUtil.isCardInPlay("Leyline of Punishment")) { + if (GameState.isCardInPlay("Leyline of Punishment")) { return damage; } @@ -616,7 +616,7 @@ public abstract class Player extends GameEntity implements Comparable { } // Prevent Damage static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { @@ -625,12 +625,12 @@ public abstract class Player extends GameEntity implements Comparable { } // specific cards - if (AllZoneUtil.isCardInPlay("Spirit of Resistance", this)) { - if ((AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.BLACK).size() > 0) - && (AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.BLUE).size() > 0) - && (AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.GREEN).size() > 0) - && (AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.RED).size() > 0) - && (AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.WHITE).size() > 0)) { + if (GameState.isCardInPlay("Spirit of Resistance", this)) { + if ((GameState.getPlayerColorInPlay(this, Constant.Color.BLACK).size() > 0) + && (GameState.getPlayerColorInPlay(this, Constant.Color.BLUE).size() > 0) + && (GameState.getPlayerColorInPlay(this, Constant.Color.GREEN).size() > 0) + && (GameState.getPlayerColorInPlay(this, Constant.Color.RED).size() > 0) + && (GameState.getPlayerColorInPlay(this, Constant.Color.WHITE).size() > 0)) { return 0; } } @@ -663,7 +663,7 @@ public abstract class Player extends GameEntity implements Comparable { int restDamage = damage; - for (Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (Card c : GameState.getCardsIn(ZoneType.Battlefield)) { if (c.getName().equals("Sulfuric Vapors")) { if (source.isSpell() && source.isRed()) { restDamage += 1; @@ -751,7 +751,7 @@ public abstract class Player extends GameEntity implements Comparable { return 0; } - if (AllZoneUtil.isCardInPlay("Crumbling Sanctuary")) { + if (GameState.isCardInPlay("Crumbling Sanctuary")) { for (int i = 0; i < damage; i++) { final List lib = this.getCardsIn(ZoneType.Library); if (lib.size() > 0) { @@ -782,7 +782,7 @@ public abstract class Player extends GameEntity implements Comparable { @Override public final int preventDamage(final int damage, final Card source, final boolean isCombat) { - if (AllZoneUtil.isCardInPlay("Leyline of Punishment") + if (GameState.isCardInPlay("Leyline of Punishment") || source.hasKeyword("Damage that would be dealt by CARDNAME can't be prevented.")) { return damage; } @@ -1195,7 +1195,7 @@ public abstract class Player extends GameEntity implements Comparable { } } - if (!firstFromDraw && AllZoneUtil.isCardInPlay("Chains of Mephistopheles")) { + if (!firstFromDraw && GameState.isCardInPlay("Chains of Mephistopheles")) { if (!this.getZone(ZoneType.Hand).isEmpty()) { if (this.isHuman()) { this.discardChainsOfMephistopheles(); @@ -1828,7 +1828,7 @@ public abstract class Player extends GameEntity implements Comparable { } // CantBeCast static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java index c72e00cf433..7b72763f751 100644 --- a/src/main/java/forge/game/zone/MagicStack.java +++ b/src/main/java/forge/game/zone/MagicStack.java @@ -25,7 +25,6 @@ import java.util.Stack; import com.esotericsoftware.minlog.Log; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -50,6 +49,7 @@ import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; import forge.control.input.Input; import forge.control.input.InputPayManaCostAbility; +import forge.game.GameState; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; @@ -775,11 +775,11 @@ public class MagicStack extends MyObservable { * name is in a graveyard or a nontoken permanent with the same name is * on the battlefield. */ - if (sp.isSpell() && AllZoneUtil.isCardInPlay("Bazaar of Wonders")) { + if (sp.isSpell() && GameState.isCardInPlay("Bazaar of Wonders")) { boolean found = false; - List all = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + List all = GameState.getCardsIn(ZoneType.Battlefield); all = CardLists.filter(all, Presets.NON_TOKEN); - final List graves = AllZoneUtil.getCardsIn(ZoneType.Graveyard); + final List graves = GameState.getCardsIn(ZoneType.Graveyard); all.addAll(graves); for (final Card c : all) { @@ -789,7 +789,7 @@ public class MagicStack extends MyObservable { } if (found) { - final List bazaars = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Bazaar of Wonders"); // should + final List bazaars = GameState.getCardsIn(ZoneType.Battlefield, "Bazaar of Wonders"); // should // only // be // 1... @@ -912,7 +912,7 @@ public class MagicStack extends MyObservable { if (source.hasStartOfKeyword("Haunt") && !source.isCreature() && AllZone.getZoneOf(source).is(ZoneType.Graveyard)) { - final List creats = AllZoneUtil.getCreaturesInPlay(); + final List creats = GameState.getCreaturesInPlay(); final Ability haunterDiesWork = new Ability(source, "0") { @Override public void resolve() { @@ -1058,7 +1058,7 @@ public class MagicStack extends MyObservable { final Card tmp = sa.getSourceCard(); tmp.setCanCounter(true); // reset mana pumped counter magic flag if (tmp.getClones().size() > 0) { - for (final Card c : AllZoneUtil.getCardsIn(ZoneType.Battlefield)) { + for (final Card c : GameState.getCardsIn(ZoneType.Battlefield)) { if (c.equals(tmp)) { c.setClones(tmp.getClones()); } @@ -1106,7 +1106,7 @@ public class MagicStack extends MyObservable { } else if (o instanceof Card) { final Card card = (Card) o; - Card current = AllZoneUtil.getCardState(card); + Card current = GameState.getCardState(card); invalidTarget = current.getTimestamp() != card.getTimestamp(); diff --git a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java index fb8aa9b40ee..a31d4798fa4 100644 --- a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java +++ b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java @@ -25,7 +25,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardLists; @@ -36,6 +35,7 @@ import forge.Singletons; import forge.card.spellability.Ability; import forge.card.spellability.SpellAbility; import forge.card.staticability.StaticAbility; +import forge.game.GameState; import forge.game.player.Player; /** @@ -85,7 +85,7 @@ public class PlayerZoneBattlefield extends PlayerZone { c.setTapped(true); } else { // ETBTapped static abilities - final List allp = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List allp = GameState.getCardsIn(ZoneType.Battlefield); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { @@ -124,7 +124,7 @@ public class PlayerZoneBattlefield extends PlayerZone { if (c.isLand()) { // Tectonic Instability - final List tis = AllZoneUtil.getCardsIn(ZoneType.Battlefield, "Tectonic Instability"); + final List tis = GameState.getCardsIn(ZoneType.Battlefield, "Tectonic Instability"); final Card tisLand = c; for (final Card ti : tis) { final Card source = ti; @@ -153,7 +153,7 @@ public class PlayerZoneBattlefield extends PlayerZone { final SpellAbility ability = new Ability(source, "") { @Override public void resolve() { - final List lands = AllZoneUtil.getPlayerLandsInPlay(lesLand.getOwner()); + final List lands = GameState.getPlayerLandsInPlay(lesLand.getOwner()); lesLand.getOwner().sacrificePermanent(source.getName() + " - Select a land to sacrifice", lands); } @@ -162,8 +162,8 @@ public class PlayerZoneBattlefield extends PlayerZone { sb.append(source).append(" - "); sb.append(tisLand.getController()).append(" sacrifices a land."); ability.setStackDescription(sb.toString()); - final List pLands = AllZoneUtil.getPlayerLandsInPlay(lesLand.getOwner()); - final List oLands = AllZoneUtil.getPlayerLandsInPlay(lesLand.getOwner().getOpponent()); + final List pLands = GameState.getPlayerLandsInPlay(lesLand.getOwner()); + final List oLands = GameState.getPlayerLandsInPlay(lesLand.getOwner().getOpponent()); // (pLands - 1) because this land is in play, and the // ability is before it is in play if (oLands.size() <= (pLands.size() - 1)) { diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java index 49a11f97534..8899f91b48a 100644 --- a/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/src/main/java/forge/gui/GuiDisplayUtil.java @@ -33,7 +33,6 @@ import javax.swing.JOptionPane; import javax.swing.border.Border; import forge.AllZone; -import forge.AllZoneUtil; import forge.Card; import forge.CardCharacteristicName; @@ -43,6 +42,7 @@ import forge.Counters; import forge.Singletons; import forge.card.spellability.AbilityMana; import forge.card.trigger.TriggerType; +import forge.game.GameState; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; @@ -681,7 +681,7 @@ public final class GuiDisplayUtil { * @since 1.0.15 */ public static void devModeAddCounter() { - final Card o = GuiChoose.oneOrNone("Add counters to which card?", AllZoneUtil.getCardsIn(ZoneType.Battlefield)); + final Card o = GuiChoose.oneOrNone("Add counters to which card?", GameState.getCardsIn(ZoneType.Battlefield)); if (null == o) { return; } else { @@ -712,7 +712,7 @@ public final class GuiDisplayUtil { * @since 1.0.15 */ public static void devModeTapPerm() { - final List play = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List play = GameState.getCardsIn(ZoneType.Battlefield); final Object o = GuiChoose.oneOrNone("Choose a permanent", play); if (null == o) { return; @@ -730,7 +730,7 @@ public final class GuiDisplayUtil { * @since 1.0.15 */ public static void devModeUntapPerm() { - final List play = AllZoneUtil.getCardsIn(ZoneType.Battlefield); + final List play = GameState.getCardsIn(ZoneType.Battlefield); final Object o = GuiChoose.oneOrNone("Choose a permanent", play); if (null == o) { return; diff --git a/src/main/java/forge/view/arcane/CardPanel.java b/src/main/java/forge/view/arcane/CardPanel.java index 6d04db7878a..e6920352300 100644 --- a/src/main/java/forge/view/arcane/CardPanel.java +++ b/src/main/java/forge/view/arcane/CardPanel.java @@ -36,11 +36,11 @@ import javax.swing.JPanel; import javax.swing.JRootPane; import javax.swing.SwingUtilities; -import forge.AllZoneUtil; import forge.Card; import forge.Counters; import forge.ImageCache; import forge.Singletons; +import forge.game.GameState; import forge.gui.CardContainer; import forge.gui.toolbox.CardFaceSymbols; import forge.properties.ForgePreferences.FPref; @@ -414,7 +414,7 @@ public class CardPanel extends JPanel implements CardContainer { (this.cardYOffset + this.cardHeight) - (this.cardHeight / 8) - 16); } - if (this.getCard().isSick() && AllZoneUtil.isCardInPlay(this.getCard())) { + if (this.getCard().isSick() && GameState.isCardInPlay(this.getCard())) { CardFaceSymbols.drawSymbol("summonsick", g, (this.cardXOffset + (this.cardWidth / 2)) - 16, (this.cardYOffset + this.cardHeight) - (this.cardHeight / 8) - 16); }