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
This commit is contained in:
Maxmtg
2012-10-07 12:43:51 +00:00
parent a373592962
commit b99474600b
12 changed files with 46 additions and 23 deletions

View File

@@ -91,6 +91,7 @@ public final class AllZone {
* @return a {@link forge.game.player.Player} object. * @return a {@link forge.game.player.Player} object.
* @since 1.0.15 * @since 1.0.15
*/ */
@Deprecated
public static Player getHumanPlayer() { public static Player getHumanPlayer() {
if (Singletons.getModel() != null) { if (Singletons.getModel() != null) {
return Singletons.getModel().getGameState().getHumanPlayer(); return Singletons.getModel().getGameState().getHumanPlayer();
@@ -109,6 +110,7 @@ public final class AllZone {
* @return a {@link forge.game.player.Player} object. * @return a {@link forge.game.player.Player} object.
* @since 1.0.15 * @since 1.0.15
*/ */
@Deprecated
public static Player getComputerPlayer() { public static Player getComputerPlayer() {
return Singletons.getModel().getGameState().getComputerPlayer(); return Singletons.getModel().getGameState().getComputerPlayer();
} }

View File

@@ -44,6 +44,7 @@ import forge.card.spellability.Target;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil; import forge.game.player.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
/** /**
@@ -1500,8 +1501,8 @@ public class AbilityFactory {
return true; return true;
} }
return (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn( return (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN)
AllZone.getComputerPlayer())); && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER));
} }
// returns true if it's better to wait until blockers are declared // returns true if it's better to wait until blockers are declared
@@ -1519,7 +1520,7 @@ public class AbilityFactory {
return (sa.getSourceCard().isCreature() return (sa.getSourceCard().isCreature()
&& sa.getPayCosts().getTap() && sa.getPayCosts().getTap()
&& (Singletons.getModel().getGameState().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) && (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()); players.add(sa.getActivatingPlayer().getOpponent());
} }
} else { } else {
if (AllZone.getHumanPlayer().isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) { for (Player p : AllZone.getPlayersInGame()) {
players.add(AllZone.getHumanPlayer()); if (p.isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) {
players.add(p);
} }
if (AllZone.getComputerPlayer().isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) {
players.add(AllZone.getComputerPlayer());
} }
} }
return players; return players;
@@ -2487,7 +2487,8 @@ public class AbilityFactory {
if (threatParams.containsKey("Defined")) { if (threatParams.containsKey("Defined")) {
objects = AbilityFactory.getDefinedObjects(source, threatParams.get("Defined"), topStack); objects = AbilityFactory.getDefinedObjects(source, threatParams.get("Defined"), topStack);
} else if (threatParams.containsKey("ValidCards")) { } else if (threatParams.containsKey("ValidCards")) {
List<Card> cards = CardLists.getValidCards(AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield), threatParams.get("ValidCards").split(","), source.getController(), source); List<Card> battleField = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield);
List<Card> cards = CardLists.getValidCards(battleField, threatParams.get("ValidCards").split(","), source.getController(), source);
for (Card card : cards) { for (Card card : cards) {
objects.add(card); objects.add(card);
} }

View File

@@ -46,6 +46,7 @@ import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil; import forge.game.player.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerType;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
@@ -1946,7 +1947,7 @@ public class AbilityFactoryCounters {
if (type.equals("P1P1") && sa.isAbility() && source.isCreature() if (type.equals("P1P1") && sa.isAbility() && source.isCreature()
&& sa.getPayCosts() != null && sa.getPayCosts().getTap() && sa.getPayCosts() != null && sa.getPayCosts().getTap()
&& sa instanceof AbilitySub && sa instanceof AbilitySub
&& (phase.isNextTurn(AllZone.getHumanPlayer()) && (phase.isNextTurn(PlayerType.HUMAN)
|| phase.getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY))) { || phase.getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY))) {
boolean combatants = false; boolean combatants = false;
for (Card c : hList) { for (Card c : hList) {

View File

@@ -46,6 +46,7 @@ import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil; import forge.game.player.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.MyRandom; import forge.util.MyRandom;
@@ -644,7 +645,7 @@ public class AbilityFactoryDealDamage {
// on the stack // on the stack
// or from taking combat damage // or from taking combat damage
final boolean freePing = isTrigger || saMe.getPayCosts() == null || tgt.getNumTargeted() > 0 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()); || (phase.is(PhaseType.MAIN2) && saMe.getRestrictions().getPlaneswalker());
if (freePing && saMe.canTarget(AllZone.getHumanPlayer()) && tgt.addTarget(AllZone.getHumanPlayer())) { if (freePing && saMe.canTarget(AllZone.getHumanPlayer()) && tgt.addTarget(AllZone.getHumanPlayer())) {
@@ -662,7 +663,7 @@ public class AbilityFactoryDealDamage {
// because we can // because we can
else if (saMe.canTarget(AllZone.getHumanPlayer())) { 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)) || (AbilityFactory.isSorcerySpeed(saMe) && phase.is(PhaseType.MAIN2))
|| saMe.getPayCosts() == null || isTrigger) { || saMe.getPayCosts() == null || isTrigger) {
tgt.addTarget(AllZone.getHumanPlayer()); tgt.addTarget(AllZone.getHumanPlayer());

View File

@@ -45,6 +45,7 @@ import forge.card.spellability.Target;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil; import forge.game.player.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.util.MyRandom; import forge.util.MyRandom;
@@ -361,7 +362,7 @@ public class AbilityFactoryZoneAffecting {
randomReturn = true; randomReturn = true;
} }
if ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) 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; randomReturn = true;
} }
@@ -912,8 +913,8 @@ public class AbilityFactoryZoneAffecting {
chance = .667; // 66.7% chance for sorcery speed chance = .667; // 66.7% chance for sorcery speed
} }
if ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn( if ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN)
AllZone.getComputerPlayer()))) { && Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER))) {
chance = .9; // 90% for end of opponents turn chance = .9; // 90% for end of opponents turn
} }

View File

@@ -87,7 +87,6 @@ public class GameNew {
bf.updateObservers(); bf.updateObservers();
p.getPlayer().getZone(ZoneType.Hand).updateObservers(); p.getPlayer().getZone(ZoneType.Hand).updateObservers();
} }
GameNew.actuateGame(players); GameNew.actuateGame(players);
} }

View File

@@ -34,6 +34,7 @@ import forge.Singletons;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerType;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.util.MyObservable; import forge.util.MyObservable;
@@ -753,9 +754,9 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
* a {@link forge.game.player.Player} object. * a {@link forge.game.player.Player} object.
* @return a boolean. * @return a boolean.
*/ */
public final boolean isNextTurn(final Player pl) { public final boolean isNextTurn(final PlayerType pt) {
final Player next = this.getNextTurn(); final Player next = this.getNextTurn();
return (pl.equals(next)); return next.getType() == pt;
} }
/** /**

View File

@@ -102,6 +102,7 @@ public class AIPlayer extends Player {
return false; return false;
} }
/** /**
* <p> * <p>
* isComputer. * isComputer.
@@ -188,7 +189,7 @@ public class AIPlayer extends Player {
// to doDiscard basically // to doDiscard basically
return; 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++) { for (int i = 0; i < num; i++) {
boolean bottom = false; boolean bottom = false;
if (topN.get(i).isBasicLand()) { if (topN.get(i).isBasicLand()) {
List<Card> bl = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); List<Card> bl = this.getCardsIn(ZoneType.Battlefield);
int nBasicLands = Iterables.size(Iterables.filter(bl, CardPredicates.Presets.BASIC_LANDS)); int nBasicLands = Iterables.size(Iterables.filter(bl, CardPredicates.Presets.BASIC_LANDS));
bottom = nBasicLands > 5; // if control more than 5 Basic land, bottom = nBasicLands > 5; // if control more than 5 Basic land,
// probably don't need more // probably don't need more
} else if (topN.get(i).isCreature()) { } else if (topN.get(i).isCreature()) {
List<Card> cl = AllZone.getComputerPlayer().getCardsIn(ZoneType.Battlefield); List<Card> cl = this.getCardsIn(ZoneType.Battlefield);
cl = CardLists.filter(cl, CardPredicates.Presets.CREATURES); cl = CardLists.filter(cl, CardPredicates.Presets.CREATURES);
bottom = cl.size() > 5; // if control more than 5 Creatures, bottom = cl.size() > 5; // if control more than 5 Creatures,
// probably don't need more // probably don't need more
@@ -257,4 +258,11 @@ public class AIPlayer extends Player {
this.drawCard(); this.drawCard();
} }
/* (non-Javadoc)
* @see forge.game.player.Player#getType()
*/
@Override
public PlayerType getType() {
return PlayerType.COMPUTER;
}
} // end AIPlayer class } // end AIPlayer class

View File

@@ -242,7 +242,7 @@ public class ComputerUtilAttack {
int fixedBlockers = 0; int fixedBlockers = 0;
final List<Card> vigilantes = new ArrayList<Card>(); final List<Card> vigilantes = new ArrayList<Card>();
//check for time walks //check for time walks
if (Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(AllZone.getComputerPlayer())) { if (Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(PlayerType.COMPUTER)) {
return attackers; return attackers;
} }
for (final Card c : this.computerList) { for (final Card c : this.computerList) {

View File

@@ -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 } // end HumanPlayer class

View File

@@ -240,6 +240,7 @@ public abstract class Player extends GameEntity implements Comparable<Player> {
* @return a boolean. * @return a boolean.
*/ */
public abstract boolean isComputer(); public abstract boolean isComputer();
public abstract PlayerType getType();
/** /**
* <p> * <p>

View File

@@ -21,7 +21,7 @@ public enum ZoneType {
Battlefield(false), Battlefield(false),
/** The Exile. */ /** The Exile. */
Exile(false), Exile(true), // Some cards get exiled face down (ex: Clone Shell)
/** The Command. */ /** The Command. */
Command(false), Command(false),