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.
* @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();
}

View File

@@ -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<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) {
objects.add(card);
}

View File

@@ -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) {

View File

@@ -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());

View File

@@ -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
}

View File

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

View File

@@ -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;
}
/**

View File

@@ -102,6 +102,7 @@ public class AIPlayer extends Player {
return false;
}
/**
* <p>
* 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<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));
bottom = nBasicLands > 5; // if control more than 5 Basic land,
// probably don't need more
} 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);
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

View File

@@ -242,7 +242,7 @@ public class ComputerUtilAttack {
int fixedBlockers = 0;
final List<Card> vigilantes = new ArrayList<Card>();
//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) {

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

View File

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

View File

@@ -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),