diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java index 47402dcb015..3a371e58ee5 100644 --- a/src/main/java/forge/AllZone.java +++ b/src/main/java/forge/AllZone.java @@ -425,19 +425,21 @@ public final class AllZone implements NewConstants { * @return a {@link forge.PlayerZone} object. */ public static PlayerZone getZone(final Card c) { - if (AllZoneUtil.isCardInZone(getStackZone(), c)) { - return getStackZone(); + final FGameState gameState = Singletons.getModel().getGameState(); + if (gameState == null) { return null; } + + if (AllZoneUtil.isCardInZone(gameState.getStackZone(), c)) { + return gameState.getStackZone(); } - - Player[] players = new Player[]{ AllZone.getHumanPlayer(), AllZone.getComputerPlayer() }; - Zone[] zones = new Zone[]{ Zone.Battlefield, Zone.Library, Zone.Graveyard, Zone.Hand, Zone.Exile, Zone.Command }; - for (Player p : players) { - for(Zone z : zones) { + + for (Player p : gameState.getPlayers()) { + for(Zone z : Player.ALL_ZONES) { PlayerZone pz = p.getZone(z); if ( AllZoneUtil.isCardInZone(pz, c) ) return pz; } } + return null; } @@ -445,16 +447,13 @@ public final class AllZone implements NewConstants { *
resetZoneMoveTracking.
*/ public static void resetZoneMoveTracking() { - resetZoneMoveTracking(getHumanPlayer()); - resetZoneMoveTracking(getComputerPlayer()); - } - - private static void resetZoneMoveTracking(Player player) { - player.getZone(Zone.Command).resetCardsAddedThisTurn(); - player.getZone(Zone.Library).resetCardsAddedThisTurn(); - player.getZone(Zone.Hand).resetCardsAddedThisTurn(); - player.getZone(Zone.Battlefield).resetCardsAddedThisTurn(); - player.getZone(Zone.Graveyard).resetCardsAddedThisTurn(); + final FGameState gameState = Singletons.getModel().getGameState(); + if (gameState == null) { return; } + for (Player p : gameState.getPlayers()) { + for(Zone z : Player.ALL_ZONES) { + p.getZone(z).resetCardsAddedThisTurn(); + } + } } /** @@ -495,8 +494,11 @@ public final class AllZone implements NewConstants { getDisplay().showCombat(""); getDisplay().loadPrefs(); - resetAllZones(getHumanPlayer()); - resetAllZones(getComputerPlayer()); + for (Player p : Singletons.getModel().getGameState().getPlayers()) { + for(Zone z : Player.ALL_ZONES) { + p.getZone(z).reset(); + } + } getInputControl().clearInput(); @@ -510,15 +512,6 @@ public final class AllZone implements NewConstants { getTriggerHandler().clearRegistered(); } - - private static void resetAllZones(Player player) { - player.getZone(Zone.Command).reset(); - player.getZone(Zone.Library).reset(); - player.getZone(Zone.Hand).reset(); - player.getZone(Zone.Battlefield).reset(); - player.getZone(Zone.Graveyard).reset(); - player.getZone(Zone.Exile).reset(); - } /** * Getter for matchState. diff --git a/src/main/java/forge/AllZoneUtil.java b/src/main/java/forge/AllZoneUtil.java index 296275992b1..de90eece16d 100644 --- a/src/main/java/forge/AllZoneUtil.java +++ b/src/main/java/forge/AllZoneUtil.java @@ -70,16 +70,18 @@ public final class AllZoneUtil { */ public static CardList getCardsIn(final Constant.Zone zone) { CardList cards = new CardList(); - cards.addAll(AllZone.getHumanPlayer().getZone(zone).getCards()); - cards.addAll(AllZone.getComputerPlayer().getZone(zone).getCards()); + for (Player p : Singletons.getModel().getGameState().getPlayers()) { + cards.addAll(p.getZone(zone).getCards()); + } return cards; } public static CardList getCardsIn(final ListisCardInGrave.
- * - * @param c a {@link forge.Card} object. - * @return a boolean. - */ - public static boolean isCardInGrave(final Card c) { - return getCardsIn(Zone.Graveyard).contains(c); - } ///Check if a certain card is in play diff --git a/src/main/java/forge/Player.java b/src/main/java/forge/Player.java index fbae583c4ad..7861824af5d 100644 --- a/src/main/java/forge/Player.java +++ b/src/main/java/forge/Player.java @@ -47,6 +47,7 @@ public abstract class Player extends GameEntity { protected Object mustAttackEntity = null; MapConstructor for Player.
@@ -65,19 +66,9 @@ public abstract class Player extends GameEntity { * @param myPoisonCounters a int. */ public Player(String myName, int myLife, int myPoisonCounters) { - PlayerZone battlefield = new PlayerZone_ComesIntoPlay(Constant.Zone.Battlefield, this); - PlayerZone hand = new DefaultPlayerZone(Constant.Zone.Hand, this); - PlayerZone graveyard = new DefaultPlayerZone(Constant.Zone.Graveyard, this); - PlayerZone library = new DefaultPlayerZone(Constant.Zone.Library, this); - PlayerZone exile = new DefaultPlayerZone(Constant.Zone.Exile, this); - PlayerZone command = new DefaultPlayerZone(Constant.Zone.Command, this); - - zones.put(Constant.Zone.Graveyard, graveyard); - zones.put(Constant.Zone.Hand, hand); - zones.put(Constant.Zone.Library, library); - zones.put(Constant.Zone.Battlefield, battlefield); - zones.put(Constant.Zone.Exile, exile); - zones.put(Constant.Zone.Command, command); + for (Zone z : ALL_ZONES) { + zones.put(z, new DefaultPlayerZone(z, this)); + } reset(); diff --git a/src/main/java/forge/model/FGameState.java b/src/main/java/forge/model/FGameState.java index d7aa1034b85..037a870fb42 100644 --- a/src/main/java/forge/model/FGameState.java +++ b/src/main/java/forge/model/FGameState.java @@ -73,6 +73,10 @@ public class FGameState { protected final void setComputerPlayer(final Player computerPlayer0) { this.computerPlayer = computerPlayer0; } + + public final Player[] getPlayers() { + return new Player[]{ humanPlayer, computerPlayer }; + } /**