diff --git a/.gitattributes b/.gitattributes index 5d8b40526f0..0c54c421ca9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14241,6 +14241,7 @@ src/main/java/forge/game/phase/Upkeep.java svneol=native#text/plain src/main/java/forge/game/phase/package-info.java svneol=native#text/plain src/main/java/forge/game/player/AIPlayer.java svneol=native#text/plain src/main/java/forge/game/player/GameLossReason.java -text +src/main/java/forge/game/player/HumanPlay.java -text src/main/java/forge/game/player/HumanPlayer.java svneol=native#text/plain src/main/java/forge/game/player/LobbyPlayer.java -text src/main/java/forge/game/player/LobbyPlayerAi.java -text diff --git a/src/main/java/forge/card/ability/effects/PlayEffect.java b/src/main/java/forge/card/ability/effects/PlayEffect.java index c95a79192d3..7a791bfcd1e 100644 --- a/src/main/java/forge/card/ability/effects/PlayEffect.java +++ b/src/main/java/forge/card/ability/effects/PlayEffect.java @@ -23,7 +23,7 @@ import forge.game.GameState; import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtilCard; import forge.game.player.AIPlayer; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; @@ -245,7 +245,7 @@ public class PlayEffect extends SpellAbilityEffect { boolean noManaCost = sa.hasParam("WithoutManaCost"); if (controller.isHuman()) { SpellAbility newSA = noManaCost ? tgtSA.copyWithNoManaCost() : tgtSA; - HumanPlayer.playSpellAbility(activator, newSA); + HumanPlay.playSpellAbility(activator, newSA); } else { if (tgtSA instanceof Spell) { // Isn't it ALWAYS a spell? Spell spell = (Spell) tgtSA; diff --git a/src/main/java/forge/card/replacement/ReplacementHandler.java b/src/main/java/forge/card/replacement/ReplacementHandler.java index 03064a43155..90feb4c162b 100644 --- a/src/main/java/forge/card/replacement/ReplacementHandler.java +++ b/src/main/java/forge/card/replacement/ReplacementHandler.java @@ -30,7 +30,7 @@ import forge.card.spellability.SpellAbility; import forge.game.GameState; import forge.game.ai.ComputerUtil; import forge.game.player.AIPlayer; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; @@ -240,7 +240,7 @@ public class ReplacementHandler { Player player = replacementEffect.getHostCard().getController(); //player.getController().playNoStack() if (player.isHuman()) { - HumanPlayer.playSpellAbilityNoStack(player, effectSA); + HumanPlay.playSpellAbilityNoStack(player, effectSA); } else { ComputerUtil.playNoStack((AIPlayer) player, effectSA, game); } diff --git a/src/main/java/forge/card/trigger/TriggerHandler.java b/src/main/java/forge/card/trigger/TriggerHandler.java index b781c27b477..dc21a3033fc 100644 --- a/src/main/java/forge/card/trigger/TriggerHandler.java +++ b/src/main/java/forge/card/trigger/TriggerHandler.java @@ -38,7 +38,7 @@ import forge.game.GlobalRuleChange; import forge.game.ai.ComputerUtil; import forge.game.phase.PhaseType; import forge.game.player.AIPlayer; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -430,7 +430,7 @@ public class TriggerHandler { if (regtrig.isStatic()) { if (wrapperAbility.getActivatingPlayer().isHuman()) { - HumanPlayer.playSpellAbilityNoStack(wrapperAbility.getActivatingPlayer(), wrapperAbility); + HumanPlay.playSpellAbilityNoStack(wrapperAbility.getActivatingPlayer(), wrapperAbility); } else { wrapperAbility.doTrigger(isMandatory, (AIPlayer)wrapperAbility.getActivatingPlayer()); ComputerUtil.playNoStack((AIPlayer)wrapperAbility.getActivatingPlayer(), wrapperAbility, game); diff --git a/src/main/java/forge/card/trigger/WrappedAbility.java b/src/main/java/forge/card/trigger/WrappedAbility.java index a010eeadb77..562df964195 100644 --- a/src/main/java/forge/card/trigger/WrappedAbility.java +++ b/src/main/java/forge/card/trigger/WrappedAbility.java @@ -18,7 +18,7 @@ import forge.card.spellability.TargetChoices; import forge.game.GameState; import forge.game.ai.ComputerUtil; import forge.game.player.AIPlayer; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.player.Player; import forge.gui.GuiDialog; @@ -365,7 +365,7 @@ public class WrappedAbility extends Ability implements ISpellAbility { return; if (getActivatingPlayer().isHuman()) { - HumanPlayer.playSpellAbilityNoStack(getActivatingPlayer(), sa, true); + HumanPlay.playSpellAbilityNoStack(getActivatingPlayer(), sa, true); } else { // commented out because i don't think this should be called // again here diff --git a/src/main/java/forge/control/input/InputPassPriority.java b/src/main/java/forge/control/input/InputPassPriority.java index 5c2aba48214..87ea9ce8299 100644 --- a/src/main/java/forge/control/input/InputPassPriority.java +++ b/src/main/java/forge/control/input/InputPassPriority.java @@ -21,7 +21,8 @@ import forge.Card; import forge.FThreads; import forge.card.spellability.SpellAbility; import forge.game.phase.PhaseHandler; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; +import forge.game.player.Player; import forge.gui.GuiDisplayUtil; import forge.gui.framework.SDisplayUtil; import forge.gui.match.CMatchUI; @@ -44,7 +45,7 @@ public class InputPassPriority extends InputBase { * TODO: Write javadoc for Constructor. * @param player */ - public InputPassPriority(HumanPlayer human) { + public InputPassPriority(Player human) { super(human); } @@ -86,7 +87,7 @@ public class InputPassPriority extends InputBase { Runnable execAbility = new Runnable() { @Override public void run() { - HumanPlayer.playSpellAbility(player, card, ab); + HumanPlay.playSpellAbility(player, card, ab); } }; diff --git a/src/main/java/forge/control/input/InputPayManaBase.java b/src/main/java/forge/control/input/InputPayManaBase.java index e6cf728a19a..9f3ba5b5f00 100644 --- a/src/main/java/forge/control/input/InputPayManaBase.java +++ b/src/main/java/forge/control/input/InputPayManaBase.java @@ -16,7 +16,7 @@ import forge.card.mana.ManaCostBeingPaid; import forge.card.spellability.AbilityManaPart; import forge.card.spellability.SpellAbility; import forge.game.GameState; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; import forge.gui.framework.SDisplayUtil; @@ -292,7 +292,7 @@ public abstract class InputPayManaBase extends InputSyncronizedBase implements I Runnable proc = new Runnable() { @Override public void run() { - HumanPlayer.playSpellAbility(chosen.getActivatingPlayer(), chosen); + HumanPlay.playSpellAbility(chosen.getActivatingPlayer(), chosen); onManaAbilityPlayed(chosen); } }; diff --git a/src/main/java/forge/game/GameAction.java b/src/main/java/forge/game/GameAction.java index b779bca6fdb..f9dd96981b6 100644 --- a/src/main/java/forge/game/GameAction.java +++ b/src/main/java/forge/game/GameAction.java @@ -61,7 +61,7 @@ import forge.game.event.CardRegeneratedEvent; import forge.game.event.CardSacrificedEvent; import forge.game.player.AIPlayer; import forge.game.player.GameLossReason; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.player.Player; import forge.game.player.PlayerType; import forge.game.zone.PlayerZone; @@ -1435,7 +1435,7 @@ public class GameAction { if (GuiDialog.confirm(c, "Use " + c +"'s ability?")) { // If we ever let the AI memorize cards in the players // hand, this would be a place to do so. - HumanPlayer.playSpellAbilityNoStack(p, effect); + HumanPlay.playSpellAbilityNoStack(p, effect); } } } diff --git a/src/main/java/forge/game/GameActionUtil.java b/src/main/java/forge/game/GameActionUtil.java index 52cdfa3054d..8d68ff1884a 100644 --- a/src/main/java/forge/game/GameActionUtil.java +++ b/src/main/java/forge/game/GameActionUtil.java @@ -73,6 +73,7 @@ import forge.control.input.InputSelectCardsFromList; import forge.game.event.CardDamagedEvent; import forge.game.event.LifeLossEvent; import forge.game.player.AIPlayer; +import forge.game.player.HumanPlay; import forge.game.player.HumanPlayer; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -282,7 +283,7 @@ public final class GameActionUtil { if (p.isHuman()) { if (GuiDialog.confirm(rippledCards[i], "Cast " + rippledCards[i].getName() + "?")) { - HumanPlayer.playCardWithoutPayingManaCost(((HumanPlayer)p), rippledCards[i]); + HumanPlay.playCardWithoutPayingManaCost(((HumanPlayer)p), rippledCards[i]); revealed.remove(rippledCards[i]); } } else { diff --git a/src/main/java/forge/game/player/HumanPlay.java b/src/main/java/forge/game/player/HumanPlay.java new file mode 100644 index 00000000000..b93830f3c02 --- /dev/null +++ b/src/main/java/forge/game/player/HumanPlay.java @@ -0,0 +1,226 @@ +package forge.game.player; + +import java.util.List; + +import forge.Card; +import forge.FThreads; +import forge.card.ability.AbilityUtils; +import forge.card.ability.ApiType; +import forge.card.ability.effects.CharmEffect; +import forge.card.cost.Cost; +import forge.card.cost.CostPayment; +import forge.card.mana.ManaCost; +import forge.card.mana.ManaCostBeingPaid; +import forge.card.mana.ManaCostShard; +import forge.card.spellability.Ability; +import forge.card.spellability.HumanPlaySpellAbility; +import forge.card.spellability.SpellAbility; +import forge.card.spellability.Target; +import forge.control.input.InputPayManaBase; +import forge.control.input.InputPayManaSimple; +import forge.game.GameActionUtil; + +/** + * TODO: Write javadoc for this type. + * + */ +public class HumanPlay { + + /** + * TODO: Write javadoc for Constructor. + */ + public HumanPlay() { + // TODO Auto-generated constructor stub + } + + /** + * TODO: Write javadoc for this method. + * @param card + * @param ab + */ + public static void playSpellAbility(Player p, Card c, SpellAbility ab) { + if (ab == Ability.PLAY_LAND_SURROGATE) + p.playLand(c); + else { + HumanPlay.playSpellAbility(p, ab); + } + p.getGame().getPhaseHandler().setPriority(p); + } + + /** + *
+ * playSpellAbility. + *
+ * + * @param sa + * a {@link forge.card.spellability.SpellAbility} object. + */ + public final static void playSpellAbility(Player p, SpellAbility sa) { + FThreads.assertExecutedByEdt(false); + sa.setActivatingPlayer(p); + + final Card source = sa.getSourceCard(); + + source.setSplitStateToPlayAbility(sa); + + if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { + CharmEffect.makeChoices(sa); + } + + sa = chooseOptionalAdditionalCosts(p, sa); + + if (sa == null) { + return; + } + + // Need to check PayCosts, and Ability + All SubAbilities for Target + boolean newAbility = sa.getPayCosts() != null; + SpellAbility ability = sa; + while ((ability != null) && !newAbility) { + final Target tgt = ability.getTarget(); + + newAbility |= tgt != null; + ability = ability.getSubAbility(); + } + + // System.out.println("Playing:" + sa.getDescription() + " of " + sa.getSourceCard() + " new = " + newAbility); + if (newAbility) { + CostPayment payment = null; + if (sa.getPayCosts() == null) { + payment = new CostPayment(new Cost("0", sa.isAbility()), sa); + } else { + payment = new CostPayment(sa.getPayCosts(), sa); + } + + final HumanPlaySpellAbility req = new HumanPlaySpellAbility(sa, payment); + req.fillRequirements(false, false, false); + } else { + if (payManaCostIfNeeded(p, sa)) { + if (sa.isSpell() && !source.isCopiedSpell()) { + sa.setSourceCard(p.getGame().getAction().moveToStack(source)); + } + p.getGame().getStack().add(sa); + } + } + } + + /** + * choose optional additional costs. For HUMAN only + * @param activator + * + * @param original + * the original sa + * @return an ArrayList+ * playSpellAbilityForFree. + *
+ * + * @param sa + * a {@link forge.card.spellability.SpellAbility} object. + */ + public static final void playSaWithoutPayingManaCost(final Player player, final SpellAbility sa) { + FThreads.assertExecutedByEdt(false); + final Card source = sa.getSourceCard(); + + source.setSplitStateToPlayAbility(sa); + + if (sa.getPayCosts() != null) { + if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { + CharmEffect.makeChoices(sa); + } + final CostPayment payment = new CostPayment(sa.getPayCosts(), sa); + + final HumanPlaySpellAbility req = new HumanPlaySpellAbility(sa, payment); + req.fillRequirements(false, true, false); + } else { + if (sa.isSpell()) { + final Card c = sa.getSourceCard(); + if (!c.isCopiedSpell()) { + sa.setSourceCard(player.getGame().getAction().moveToStack(c)); + } + } + boolean x = sa.getSourceCard().getManaCost().getShardCount(ManaCostShard.X) > 0; + + player.getGame().getStack().add(sa, x); + } + } + + /** + *+ * playSpellAbility_NoStack. + *
+ * + * @param sa + * a {@link forge.card.spellability.SpellAbility} object. + * @param skipTargeting + * a boolean. + */ + public final static void playSpellAbilityNoStack(final Player player, final SpellAbility sa) { + playSpellAbilityNoStack(player, sa, false); + } + + public final static void playSpellAbilityNoStack(final Player player, final SpellAbility sa, boolean useOldTargets) { + sa.setActivatingPlayer(player); + + if (sa.getPayCosts() != null) { + final HumanPlaySpellAbility req = new HumanPlaySpellAbility(sa, new CostPayment(sa.getPayCosts(), sa)); + + req.fillRequirements(useOldTargets, false, true); + } else { + if (payManaCostIfNeeded(player, sa)) { + AbilityUtils.resolve(sa, false); + } + + } + } + +} diff --git a/src/main/java/forge/game/player/HumanPlayer.java b/src/main/java/forge/game/player/HumanPlayer.java index 2db9ac6558f..3f2796599ef 100644 --- a/src/main/java/forge/game/player/HumanPlayer.java +++ b/src/main/java/forge/game/player/HumanPlayer.java @@ -17,222 +17,12 @@ */ package forge.game.player; -import java.util.List; -import forge.Card; -import forge.FThreads; -import forge.card.ability.AbilityUtils; -import forge.card.ability.ApiType; -import forge.card.ability.effects.CharmEffect; -import forge.card.cost.Cost; -import forge.card.cost.CostPayment; -import forge.card.mana.ManaCost; -import forge.card.mana.ManaCostBeingPaid; -import forge.card.mana.ManaCostShard; -import forge.card.spellability.Ability; -import forge.card.spellability.HumanPlaySpellAbility; -import forge.card.spellability.SpellAbility; -import forge.card.spellability.Target; -import forge.control.input.InputPayManaBase; -import forge.control.input.InputPayManaSimple; -import forge.game.GameActionUtil; import forge.game.GameState; public class HumanPlayer extends Player { - public HumanPlayer(final LobbyPlayerHuman player, GameState game) { + private HumanPlayer(final LobbyPlayerHuman player, GameState game) { super(player, game); - controller = new PlayerControllerHuman(game, this); - } - - /** - * TODO: Write javadoc for this method. - * @param card - * @param ab - */ - public static void playSpellAbility(Player p, Card c, SpellAbility ab) { - if (ab == Ability.PLAY_LAND_SURROGATE) - p.playLand(c); - else { - HumanPlayer.playSpellAbility(p, ab); - } - p.getGame().getPhaseHandler().setPriority(p); - } - - - /** - *- * playSpellAbility. - *
- * - * @param sa - * a {@link forge.card.spellability.SpellAbility} object. - */ - public final static void playSpellAbility(Player p, SpellAbility sa) { - FThreads.assertExecutedByEdt(false); - sa.setActivatingPlayer(p); - - final Card source = sa.getSourceCard(); - - source.setSplitStateToPlayAbility(sa); - - if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { - CharmEffect.makeChoices(sa); - } - - sa = chooseOptionalAdditionalCosts(p, sa); - - if (sa == null) { - return; - } - - // Need to check PayCosts, and Ability + All SubAbilities for Target - boolean newAbility = sa.getPayCosts() != null; - SpellAbility ability = sa; - while ((ability != null) && !newAbility) { - final Target tgt = ability.getTarget(); - - newAbility |= tgt != null; - ability = ability.getSubAbility(); - } - - // System.out.println("Playing:" + sa.getDescription() + " of " + sa.getSourceCard() + " new = " + newAbility); - if (newAbility) { - CostPayment payment = null; - if (sa.getPayCosts() == null) { - payment = new CostPayment(new Cost("0", sa.isAbility()), sa); - } else { - payment = new CostPayment(sa.getPayCosts(), sa); - } - - final HumanPlaySpellAbility req = new HumanPlaySpellAbility(sa, payment); - req.fillRequirements(false, false, false); - } else { - if (payManaCostIfNeeded(p, sa)) { - if (sa.isSpell() && !source.isCopiedSpell()) { - sa.setSourceCard(p.getGame().getAction().moveToStack(source)); - } - p.getGame().getStack().add(sa); - } - } - } - - /** - * choose optional additional costs. For HUMAN only - * @param activator - * - * @param original - * the original sa - * @return an ArrayList- * playSpellAbilityForFree. - *
- * - * @param sa - * a {@link forge.card.spellability.SpellAbility} object. - */ - public static final void playSaWithoutPayingManaCost(final Player player, final SpellAbility sa) { - FThreads.assertExecutedByEdt(false); - final Card source = sa.getSourceCard(); - - source.setSplitStateToPlayAbility(sa); - - if (sa.getPayCosts() != null) { - if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { - CharmEffect.makeChoices(sa); - } - final CostPayment payment = new CostPayment(sa.getPayCosts(), sa); - - final HumanPlaySpellAbility req = new HumanPlaySpellAbility(sa, payment); - req.fillRequirements(false, true, false); - } else { - if (sa.isSpell()) { - final Card c = sa.getSourceCard(); - if (!c.isCopiedSpell()) { - sa.setSourceCard(player.getGame().getAction().moveToStack(c)); - } - } - boolean x = sa.getSourceCard().getManaCost().getShardCount(ManaCostShard.X) > 0; - - player.getGame().getStack().add(sa, x); - } - } - - /** - *- * playSpellAbility_NoStack. - *
- * - * @param sa - * a {@link forge.card.spellability.SpellAbility} object. - * @param skipTargeting - * a boolean. - */ - public final static void playSpellAbilityNoStack(final Player player, final SpellAbility sa) { - playSpellAbilityNoStack(player, sa, false); - } - - public final static void playSpellAbilityNoStack(final Player player, final SpellAbility sa, boolean useOldTargets) { - sa.setActivatingPlayer(player); - - if (sa.getPayCosts() != null) { - final HumanPlaySpellAbility req = new HumanPlaySpellAbility(sa, new CostPayment(sa.getPayCosts(), sa)); - - req.fillRequirements(useOldTargets, false, true); - } else { - if (payManaCostIfNeeded(player, sa)) { - AbilityUtils.resolve(sa, false); - } - - } } } // end HumanPlayer class diff --git a/src/main/java/forge/game/player/LobbyPlayerHuman.java b/src/main/java/forge/game/player/LobbyPlayerHuman.java index eb9b4be0513..586391b52f9 100644 --- a/src/main/java/forge/game/player/LobbyPlayerHuman.java +++ b/src/main/java/forge/game/player/LobbyPlayerHuman.java @@ -15,7 +15,9 @@ public class LobbyPlayerHuman extends LobbyPlayer { @Override public Player getPlayer(GameState game) { - return new HumanPlayer(this, game); + Player player = new Player(this, game); + player.setController(new PlayerControllerHuman(game, player)); + return player; } public void hear(LobbyPlayer player, String message) { diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java index eebfb675170..33f16875c26 100644 --- a/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -49,13 +49,13 @@ public class PlayerControllerHuman extends PlayerController { private final Input blockInput; private final Input cleanupInput; private final Input autoPassPriorityInput; - private final HumanPlayer player; + private final Player player; public final Input getDefaultInput() { return defaultInput; } - public PlayerControllerHuman(GameState game0, HumanPlayer p) { + public PlayerControllerHuman(GameState game0, Player p) { super(game0); player = p; @@ -106,7 +106,7 @@ public class PlayerControllerHuman extends PlayerController { */ public void playFromSuspend(Card c) { c.setSuspendCast(true); - HumanPlayer.playCardWithoutPayingManaCost(player, c); + HumanPlay.playCardWithoutPayingManaCost(player, c); } /* (non-Javadoc) @@ -124,7 +124,7 @@ public class PlayerControllerHuman extends PlayerController { boolean result = GuiDialog.confirm(cascadedCard, question.toString()); if ( result ) - HumanPlayer.playCardWithoutPayingManaCost(player, cascadedCard); + HumanPlay.playCardWithoutPayingManaCost(player, cascadedCard); return result; } @@ -133,7 +133,7 @@ public class PlayerControllerHuman extends PlayerController { */ @Override public void playSpellAbilityForFree(SpellAbility copySA) { - HumanPlayer.playSaWithoutPayingManaCost(player, copySA); + HumanPlay.playSaWithoutPayingManaCost(player, copySA); } /** @@ -373,14 +373,14 @@ public class PlayerControllerHuman extends PlayerController { @Override public void playMiracle(SpellAbility miracle, Card card) { if (GuiDialog.confirm(card, card + " - Drawn. Play for Miracle Cost?")) { - HumanPlayer.playSpellAbility(player, miracle); + HumanPlay.playSpellAbility(player, miracle); } } @Override public void playMadness(SpellAbility madness) { if (GuiDialog.confirm(madness.getSourceCard(), madness.getSourceCard() + " - Discarded. Pay Madness Cost?")) { - HumanPlayer.playSpellAbility(player, madness); + HumanPlay.playSpellAbility(player, madness); } } diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java index 88c4ec3940f..cf9ba6ca8b1 100644 --- a/src/main/java/forge/game/zone/MagicStack.java +++ b/src/main/java/forge/game/zone/MagicStack.java @@ -54,7 +54,7 @@ import forge.game.ai.ComputerUtilCost; import forge.game.event.SpellResolvedEvent; import forge.game.phase.PhaseType; import forge.game.player.AIPlayer; -import forge.game.player.HumanPlayer; +import forge.game.player.HumanPlay; import forge.game.player.Player; import forge.gui.GuiChoose; import forge.util.MyObservable; @@ -1062,7 +1062,7 @@ public class MagicStack extends MyObservable { for (int i = size - 1; i >= 0; i--) { SpellAbility next = orderedSAs.get(i); if (next.isTrigger()) { - HumanPlayer.playSpellAbility(activePlayer, next); + HumanPlay.playSpellAbility(activePlayer, next); } else { this.add(next); } diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java index 96d614e4e4a..1a367992574 100644 --- a/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/src/main/java/forge/gui/GuiDisplayUtil.java @@ -52,6 +52,7 @@ import forge.card.spellability.SpellAbility; import forge.card.trigger.TriggerType; import forge.game.GameState; import forge.game.PlanarDice; +import forge.game.player.HumanPlay; import forge.game.player.HumanPlayer; import forge.game.player.Player; import forge.game.zone.PlayerZone; @@ -637,7 +638,7 @@ public final class GuiDisplayUtil { game.getAction().moveToHand(forgeCard); // this is really needed (for rollbacks at least) // Human player is choosing targets for an ability controlled by chosen player. sa.setActivatingPlayer(p); - HumanPlayer.playSaWithoutPayingManaCost(Singletons.getControl().getPlayer(), sa); + HumanPlay.playSaWithoutPayingManaCost(Singletons.getControl().getPlayer(), sa); } }); } diff --git a/src/main/java/forge/gui/match/nonsingleton/CField.java b/src/main/java/forge/gui/match/nonsingleton/CField.java index c71298c624b..077f50a29c8 100644 --- a/src/main/java/forge/gui/match/nonsingleton/CField.java +++ b/src/main/java/forge/gui/match/nonsingleton/CField.java @@ -38,6 +38,7 @@ import forge.card.spellability.SpellAbility; import forge.control.input.Input; import forge.control.input.InputPayManaBase; import forge.game.GameState; +import forge.game.player.HumanPlay; import forge.game.player.HumanPlayer; import forge.game.player.Player; import forge.game.zone.ZoneType; @@ -150,7 +151,7 @@ public class CField implements ICDoc { final SpellAbility ab = CField.this.playerViewer.getController().getAbilityToPlay(game.getAbilitesOfCard(c, CField.this.playerViewer)); if ( null != ab) { FThreads.invokeInNewThread(new Runnable(){ @Override public void run(){ - HumanPlayer.playSpellAbility(CField.this.playerViewer, c, ab); + HumanPlay.playSpellAbility(CField.this.playerViewer, c, ab); }}); } }