From b99474600b03428821ae314bd37418b80eced40d Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Sun, 7 Oct 2012 12:43:51 +0000 Subject: [PATCH] get****Player methods are depreacated. Do not use them in new code. Exile zone marked as containing hidden information Players have getType method to learn if certain player is AI or human --- src/main/java/forge/AllZone.java | 2 ++ .../card/abilityfactory/AbilityFactory.java | 19 ++++++++++--------- .../AbilityFactoryCounters.java | 3 ++- .../AbilityFactoryDealDamage.java | 5 +++-- .../AbilityFactoryZoneAffecting.java | 7 ++++--- src/main/java/forge/game/GameNew.java | 1 - .../java/forge/game/phase/PhaseHandler.java | 5 +++-- src/main/java/forge/game/player/AIPlayer.java | 14 +++++++++++--- .../forge/game/player/ComputerUtilAttack.java | 2 +- .../java/forge/game/player/HumanPlayer.java | 8 ++++++++ src/main/java/forge/game/player/Player.java | 1 + src/main/java/forge/game/zone/ZoneType.java | 2 +- 12 files changed, 46 insertions(+), 23 deletions(-) diff --git a/src/main/java/forge/AllZone.java b/src/main/java/forge/AllZone.java index 1a5d950d3bd..91375ba829c 100644 --- a/src/main/java/forge/AllZone.java +++ b/src/main/java/forge/AllZone.java @@ -91,6 +91,7 @@ public final class AllZone { * @return a {@link forge.game.player.Player} object. * @since 1.0.15 */ + @Deprecated public static Player getHumanPlayer() { if (Singletons.getModel() != null) { return Singletons.getModel().getGameState().getHumanPlayer(); @@ -109,6 +110,7 @@ public final class AllZone { * @return a {@link forge.game.player.Player} object. * @since 1.0.15 */ + @Deprecated public static Player getComputerPlayer() { return Singletons.getModel().getGameState().getComputerPlayer(); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index 6d6c977674c..e2a7181b455 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -44,6 +44,7 @@ import forge.card.spellability.Target; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; +import forge.game.player.PlayerType; import forge.game.zone.ZoneType; /** @@ -1500,8 +1501,8 @@ public class AbilityFactory { return true; } - return (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn( - AllZone.getComputerPlayer())); + return (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) + && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER)); } // returns true if it's better to wait until blockers are declared @@ -1519,7 +1520,7 @@ public class AbilityFactory { return (sa.getSourceCard().isCreature() && sa.getPayCosts().getTap() && (Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) - || Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(AllZone.getHumanPlayer()))); + || Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.HUMAN))); } /** @@ -2224,11 +2225,10 @@ public class AbilityFactory { players.add(sa.getActivatingPlayer().getOpponent()); } } else { - if (AllZone.getHumanPlayer().isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) { - players.add(AllZone.getHumanPlayer()); - } - if (AllZone.getComputerPlayer().isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) { - players.add(AllZone.getComputerPlayer()); + for (Player p : AllZone.getPlayersInGame()) { + if (p.isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) { + players.add(p); + } } } return players; @@ -2487,7 +2487,8 @@ public class AbilityFactory { if (threatParams.containsKey("Defined")) { objects = AbilityFactory.getDefinedObjects(source, threatParams.get("Defined"), topStack); } else if (threatParams.containsKey("ValidCards")) { - List cards = CardLists.getValidCards(AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield), threatParams.get("ValidCards").split(","), source.getController(), source); + List battleField = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); + List cards = CardLists.getValidCards(battleField, threatParams.get("ValidCards").split(","), source.getController(), source); for (Card card : cards) { objects.add(card); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java index 654254f7875..79b0098859b 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java @@ -46,6 +46,7 @@ import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; +import forge.game.player.PlayerType; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; @@ -1946,7 +1947,7 @@ public class AbilityFactoryCounters { if (type.equals("P1P1") && sa.isAbility() && source.isCreature() && sa.getPayCosts() != null && sa.getPayCosts().getTap() && sa instanceof AbilitySub - && (phase.isNextTurn(AllZone.getHumanPlayer()) + && (phase.isNextTurn(PlayerType.HUMAN) || phase.getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY))) { boolean combatants = false; for (Card c : hList) { diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java index 61e1447056f..ad2aa50a728 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java @@ -46,6 +46,7 @@ import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; +import forge.game.player.PlayerType; import forge.game.zone.ZoneType; import forge.util.MyRandom; @@ -644,7 +645,7 @@ public class AbilityFactoryDealDamage { // on the stack // or from taking combat damage final boolean freePing = isTrigger || saMe.getPayCosts() == null || tgt.getNumTargeted() > 0 - || (phase.is(PhaseType.END_OF_TURN) && saMe.isAbility() && phase.isNextTurn(AllZone.getComputerPlayer())) + || (phase.is(PhaseType.END_OF_TURN) && saMe.isAbility() && phase.isNextTurn(PlayerType.COMPUTER)) || (phase.is(PhaseType.MAIN2) && saMe.getRestrictions().getPlaneswalker()); if (freePing && saMe.canTarget(AllZone.getHumanPlayer()) && tgt.addTarget(AllZone.getHumanPlayer())) { @@ -662,7 +663,7 @@ public class AbilityFactoryDealDamage { // because we can else if (saMe.canTarget(AllZone.getHumanPlayer())) { - if ((phase.is(PhaseType.END_OF_TURN) && phase.isNextTurn(AllZone.getComputerPlayer())) + if ((phase.is(PhaseType.END_OF_TURN) && phase.isNextTurn(PlayerType.COMPUTER)) || (AbilityFactory.isSorcerySpeed(saMe) && phase.is(PhaseType.MAIN2)) || saMe.getPayCosts() == null || isTrigger) { tgt.addTarget(AllZone.getHumanPlayer()); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java index 1f068f1bdaa..1bdbb8216d6 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java @@ -45,6 +45,7 @@ import forge.card.spellability.Target; import forge.game.phase.PhaseType; import forge.game.player.ComputerUtil; import forge.game.player.Player; +import forge.game.player.PlayerType; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; import forge.util.MyRandom; @@ -361,7 +362,7 @@ public class AbilityFactoryZoneAffecting { randomReturn = true; } if ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) - && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(AllZone.getComputerPlayer()))) { + && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER))) { randomReturn = true; } @@ -912,8 +913,8 @@ public class AbilityFactoryZoneAffecting { chance = .667; // 66.7% chance for sorcery speed } - if ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn( - AllZone.getComputerPlayer()))) { + if ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) + && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER))) { chance = .9; // 90% for end of opponents turn } diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index 7cdfe65f389..e31a52fe1bf 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -87,7 +87,6 @@ public class GameNew { bf.updateObservers(); p.getPlayer().getZone(ZoneType.Hand).updateObservers(); } - GameNew.actuateGame(players); } diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 5cf1f6df8e7..c8fd97cff48 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -34,6 +34,7 @@ import forge.Singletons; import forge.card.spellability.SpellAbility; import forge.card.trigger.TriggerType; import forge.game.player.Player; +import forge.game.player.PlayerType; import forge.game.zone.ZoneType; import forge.properties.ForgePreferences.FPref; import forge.util.MyObservable; @@ -753,9 +754,9 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { * a {@link forge.game.player.Player} object. * @return a boolean. */ - public final boolean isNextTurn(final Player pl) { + public final boolean isNextTurn(final PlayerType pt) { final Player next = this.getNextTurn(); - return (pl.equals(next)); + return next.getType() == pt; } /** diff --git a/src/main/java/forge/game/player/AIPlayer.java b/src/main/java/forge/game/player/AIPlayer.java index dc8d92caa80..8d04d55574b 100644 --- a/src/main/java/forge/game/player/AIPlayer.java +++ b/src/main/java/forge/game/player/AIPlayer.java @@ -102,6 +102,7 @@ public class AIPlayer extends Player { return false; } + /** *

* isComputer. @@ -188,7 +189,7 @@ public class AIPlayer extends Player { // to doDiscard basically return; } - AllZone.getComputerPlayer().discard(num, sa, false); + this.discard(num, sa, false); } // ///////////////////////// @@ -200,13 +201,13 @@ public class AIPlayer extends Player { for (int i = 0; i < num; i++) { boolean bottom = false; if (topN.get(i).isBasicLand()) { - List bl = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); + List bl = this.getCardsIn(ZoneType.Battlefield); int nBasicLands = Iterables.size(Iterables.filter(bl, CardPredicates.Presets.BASIC_LANDS)); bottom = nBasicLands > 5; // if control more than 5 Basic land, // probably don't need more } else if (topN.get(i).isCreature()) { - List cl = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); + List cl = this.getCardsIn(ZoneType.Battlefield); cl = CardLists.filter(cl, CardPredicates.Presets.CREATURES); bottom = cl.size() > 5; // if control more than 5 Creatures, // probably don't need more @@ -257,4 +258,11 @@ public class AIPlayer extends Player { this.drawCard(); } + /* (non-Javadoc) + * @see forge.game.player.Player#getType() + */ + @Override + public PlayerType getType() { + return PlayerType.COMPUTER; + } } // end AIPlayer class diff --git a/src/main/java/forge/game/player/ComputerUtilAttack.java b/src/main/java/forge/game/player/ComputerUtilAttack.java index 2a4b5b6f11b..9ef2839b84e 100644 --- a/src/main/java/forge/game/player/ComputerUtilAttack.java +++ b/src/main/java/forge/game/player/ComputerUtilAttack.java @@ -242,7 +242,7 @@ public class ComputerUtilAttack { int fixedBlockers = 0; final List vigilantes = new ArrayList(); //check for time walks - if (Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(AllZone.getComputerPlayer())) { + if (Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER)) { return attackers; } for (final Card c : this.computerList) { diff --git a/src/main/java/forge/game/player/HumanPlayer.java b/src/main/java/forge/game/player/HumanPlayer.java index 3c93a1068dd..8274053ef4c 100644 --- a/src/main/java/forge/game/player/HumanPlayer.java +++ b/src/main/java/forge/game/player/HumanPlayer.java @@ -226,4 +226,12 @@ public class HumanPlayer extends Player { } } + /* (non-Javadoc) + * @see forge.game.player.Player#getType() + */ + @Override + public PlayerType getType() { + return PlayerType.HUMAN; + } + } // end HumanPlayer class diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 6ef06fb794a..944891da979 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -240,6 +240,7 @@ public abstract class Player extends GameEntity implements Comparable { * @return a boolean. */ public abstract boolean isComputer(); + public abstract PlayerType getType(); /** *

diff --git a/src/main/java/forge/game/zone/ZoneType.java b/src/main/java/forge/game/zone/ZoneType.java index 65b8bd1465f..56cf362e9f3 100644 --- a/src/main/java/forge/game/zone/ZoneType.java +++ b/src/main/java/forge/game/zone/ZoneType.java @@ -21,7 +21,7 @@ public enum ZoneType { Battlefield(false), /** The Exile. */ - Exile(false), + Exile(true), // Some cards get exiled face down (ex: Clone Shell) /** The Command. */ Command(false),