From 613b5a2bbd4050f16a93a194761f47de27230489 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Tue, 20 Sep 2011 02:37:44 +0000 Subject: [PATCH] contains() added to PlayerZone - that's another AllZoneUtil call eliminated as well as useless copying to arrays with the only purpose of checking --- src/main/java/forge/AllZone.java | 4 +-- src/main/java/forge/AllZoneUtil.java | 25 +------------------ src/main/java/forge/DefaultPlayerZone.java | 6 ++++- src/main/java/forge/IPlayerZone.java | 2 ++ .../card/cardFactory/CardFactory_Auras.java | 6 ++--- .../cardFactory/CardFactory_Creatures.java | 4 +-- src/main/java/forge/card/cost/CostExile.java | 4 +-- 7 files changed, 17 insertions(+), 34 deletions(-) diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java index 1f663e23582..65c531bc6ba 100644 --- a/src/main/java/forge/AllZone.java +++ b/src/main/java/forge/AllZone.java @@ -393,14 +393,14 @@ public final class AllZone implements NewConstants { final FGameState gameState = Singletons.getModel().getGameState(); if (gameState == null) { return null; } - if (AllZoneUtil.isCardInZone(gameState.getStackZone(), c)) { + if (gameState.getStackZone().contains(c)) { return gameState.getStackZone(); } for (Player p : gameState.getPlayers()) { for(Zone z : Player.ALL_ZONES) { PlayerZone pz = p.getZone(z); - if ( AllZoneUtil.isCardInZone(pz, c) ) + if (pz.contains(c)) return pz; } } diff --git a/src/main/java/forge/AllZoneUtil.java b/src/main/java/forge/AllZoneUtil.java index 5fa49eaaabd..4d25cbeaff5 100644 --- a/src/main/java/forge/AllZoneUtil.java +++ b/src/main/java/forge/AllZoneUtil.java @@ -135,34 +135,11 @@ public final class AllZoneUtil { * @return true if the card is present in this player's hand; false otherwise */ public static boolean isCardInPlayerGraveyard(final Player player, final Card card) { - return isCardInZone(player.getZone(Constant.Zone.Graveyard), card); + return player.getZone(Constant.Zone.Graveyard).contains(card); } //////// HAND - - - /** - * answers the question "is a specific card in the specified zone?". - * - * @param pz the PlayerZone to check - * @param card the specific card to look for - * @return true if the card is present in this zone; false otherwise - */ - public static boolean isCardInZone(final PlayerZone pz, final Card card) { - if (card == null) { - return false; - } - - for (Card c : pz.getCards()) { - if (c.equals(card)) { - return true; - } - } - - return false; - } - /** * answers the question "is the given card in any exile zone?". * diff --git a/src/main/java/forge/DefaultPlayerZone.java b/src/main/java/forge/DefaultPlayerZone.java index 7e630cc4335..2615e4f41f7 100644 --- a/src/main/java/forge/DefaultPlayerZone.java +++ b/src/main/java/forge/DefaultPlayerZone.java @@ -17,7 +17,7 @@ public class DefaultPlayerZone extends PlayerZone implements java.io.Serializabl /** Constant serialVersionUID=-5687652485777639176L. */ private static final long serialVersionUID = -5687652485777639176L; - private ArrayList cards = new ArrayList(); + private List cards = new ArrayList(); private final Constant.Zone zoneName; private final Player player; private boolean update = true; @@ -161,6 +161,10 @@ public class DefaultPlayerZone extends PlayerZone implements java.io.Serializabl c.setTurnInZone(AllZone.getPhase().getTurn()); update(); } + + public final boolean contains(Card c) { + return cards.contains(c); + } /** * diff --git a/src/main/java/forge/IPlayerZone.java b/src/main/java/forge/IPlayerZone.java index 8ec2bd2e323..f2854d03b81 100644 --- a/src/main/java/forge/IPlayerZone.java +++ b/src/main/java/forge/IPlayerZone.java @@ -82,6 +82,8 @@ interface IPlayerZone { Card[] getCards(); Card[] getCards(int n); + boolean contains(Card c); + /** isEmpty returns true if given zone contains no cards */ boolean isEmpty(); diff --git a/src/main/java/forge/card/cardFactory/CardFactory_Auras.java b/src/main/java/forge/card/cardFactory/CardFactory_Auras.java index 566858522e2..48c864e84a7 100644 --- a/src/main/java/forge/card/cardFactory/CardFactory_Auras.java +++ b/src/main/java/forge/card/cardFactory/CardFactory_Auras.java @@ -502,7 +502,7 @@ class CardFactory_Auras { PlayerZone play = card.getController().getZone(Constant.Zone.Battlefield); // Animate Dead got destroyed before its ability resolved - if (!AllZoneUtil.isCardInZone(play, card)) { + if (!play.contains(card)) { return; } @@ -550,7 +550,7 @@ class CardFactory_Auras { PlayerZone play = card.getController().getZone(Constant.Zone.Battlefield); - if (AllZoneUtil.isCardInZone(play, c)) { + if (play.contains(c)) { AllZone.getGameAction().sacrifice(c); } } @@ -564,7 +564,7 @@ class CardFactory_Auras { PlayerZone play = card.getController().getZone(Constant.Zone.Battlefield); - if (AllZoneUtil.isCardInZone(play, c)) { + if (play.contains(c)) { AllZone.getStack().addSimultaneousStackEntry(detach); } diff --git a/src/main/java/forge/card/cardFactory/CardFactory_Creatures.java b/src/main/java/forge/card/cardFactory/CardFactory_Creatures.java index d10202e5e31..c2c75ace543 100644 --- a/src/main/java/forge/card/cardFactory/CardFactory_Creatures.java +++ b/src/main/java/forge/card/cardFactory/CardFactory_Creatures.java @@ -249,7 +249,7 @@ public class CardFactory_Creatures { PlayerZone play = card.getController().getZone(Constant.Zone.Battlefield); boolean canPlayLand = card.getController().canPlayLand(); - return (AllZoneUtil.isCardInZone(play, card) && library.get(0).isLand() && canPlayLand); + return (play.contains(card) && library.get(0).isLand() && canPlayLand); } };//SpellAbility @@ -814,7 +814,7 @@ public class CardFactory_Creatures { PlayerZone grave = AllZone.getZoneOf(target[0]); //checks to see if card is still in the graveyard - if (grave != null && AllZoneUtil.isCardInZone(grave, target[0])) { + if (grave != null && grave.contains(target[0])) { PlayerZone play = card.getController().getZone(Constant.Zone.Battlefield); target[0].addController(card.getController()); AllZone.getGameAction().moveTo(play, target[0]); diff --git a/src/main/java/forge/card/cost/CostExile.java b/src/main/java/forge/card/cost/CostExile.java index da9894b6f21..f2194c90faf 100644 --- a/src/main/java/forge/card/cost/CostExile.java +++ b/src/main/java/forge/card/cost/CostExile.java @@ -95,7 +95,7 @@ public class CostExile extends CostPartWithList { Integer amount = convertAmount(); if (amount != null && typeList.size() < amount) return false; - } else if (!AllZoneUtil.isCardInZone(zone, source)) + } else if (!zone.contains(source)) return false; return true; @@ -341,7 +341,7 @@ public class CostExile extends CostPartWithList { @Override public void showMessage() { Card card = sa.getSourceCard(); - if (sa.getActivatingPlayer().isHuman() && AllZoneUtil.isCardInZone(sa.getActivatingPlayer().getZone(part.getFrom()), card)) { + if (sa.getActivatingPlayer().isHuman() && sa.getActivatingPlayer().getZone(part.getFrom()).contains(card)) { StringBuilder sb = new StringBuilder(); sb.append(card.getName()); sb.append(" - Exile?");