diff --git a/forge-gui/src/main/java/forge/ai/ComputerUtil.java b/forge-gui/src/main/java/forge/ai/ComputerUtil.java index 109cc595aec..aa8eb14bbc8 100644 --- a/forge-gui/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-gui/src/main/java/forge/ai/ComputerUtil.java @@ -66,7 +66,6 @@ import forge.game.trigger.Trigger; import forge.game.trigger.TriggerType; import forge.game.zone.Zone; import forge.game.zone.ZoneType; -import forge.gui.GuiChoose; import forge.util.Aggregates; import forge.util.MyRandom; @@ -115,7 +114,7 @@ public class ComputerUtil { if (pay.payComputerCosts(ai, game)) { game.getStack().addAndUnfreeze(sa); if (sa.getSplicedCards() != null && !sa.getSplicedCards().isEmpty()) { - GuiChoose.oneOrNone("Computer reveals spliced cards:", sa.getSplicedCards()); + game.getAction().reveal("Computer reveals spliced cards:", sa.getSplicedCards(), ai, true); } return true; // TODO: solve problems with TapsForMana triggers by adding @@ -1704,8 +1703,6 @@ public class ComputerUtil { chosen = "Island"; } - - GuiChoose.one("Computer picked: ", new String[]{chosen}); return chosen; } diff --git a/forge-gui/src/main/java/forge/game/GameAction.java b/forge-gui/src/main/java/forge/game/GameAction.java index 937372134d7..d961d91a5ee 100644 --- a/forge-gui/src/main/java/forge/game/GameAction.java +++ b/forge-gui/src/main/java/forge/game/GameAction.java @@ -1412,6 +1412,12 @@ public class GameAction { reveal(cardOwner + " reveals card from " + zt, cards, zt, cardOwner, dontRevealToOwner); } + public void reveal(String message, List cards, Player cardOwner, boolean dontRevealToOwner) { + if (cards.isEmpty()) + return; + reveal(message, cards, cards.get(0).getZone().getZoneType(), cardOwner, dontRevealToOwner); + } + public void reveal(String message, List cards, ZoneType zt, Player cardOwner, boolean dontRevealToOwner) { for(Player p : game.getPlayers()) { if (dontRevealToOwner && cardOwner == p) continue; diff --git a/forge-gui/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java b/forge-gui/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java index 6d85f456de1..99fae9dbdb6 100644 --- a/forge-gui/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java +++ b/forge-gui/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java @@ -58,7 +58,7 @@ public class ChooseTypeEffect extends SpellAbilityEffect { if( !validTypes.isEmpty()) { for (final Player p : tgtPlayers) { if ((tgt == null) || p.canBeTargetedBy(sa)) { - String choice = p.getController().chooseSomeType(type, sa.getParam("AILogic"), validTypes, invalidTypes); + String choice = p.getController().chooseSomeType(type, sa, validTypes, invalidTypes); card.setChosenType(choice); } } diff --git a/forge-gui/src/main/java/forge/game/player/PlayerController.java b/forge-gui/src/main/java/forge/game/player/PlayerController.java index 081a0e19059..80976e50c99 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerController.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerController.java @@ -153,7 +153,7 @@ public abstract class PlayerController { public abstract List chooseSaToActivateFromOpeningHand(List usableFromOpeningHand); public abstract Mana chooseManaFromPool(List manaChoices); - public abstract String chooseSomeType(String kindOfType, String aiLogic, List validTypes, List invalidTypes); + public abstract String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes); public abstract Pair chooseAndRemoveOrPutCounter(Card cardWithCounter); public abstract boolean confirmReplacementEffect(ReplacementEffect replacementEffect, SpellAbility effectSA, String question); public abstract List getCardsToMulligan(boolean isCommander, Player firstPlayer); diff --git a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java index 0a1dfb788c8..d65d970f94e 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java @@ -312,8 +312,10 @@ public class PlayerControllerAi extends PlayerController { * @see forge.game.player.PlayerController#ChooseSomeType(java.lang.String, java.util.List, java.util.List) */ @Override - public String chooseSomeType(String kindOfType, String aiLogic, List validTypes, List invalidTypes) { - return ComputerUtil.chooseSomeType(player, kindOfType, aiLogic, invalidTypes); + public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes) { + String chosen = ComputerUtil.chooseSomeType(player, kindOfType, sa.getParam("AILogic"), invalidTypes); + game.getAction().nofityOfValue(sa, null, "Computer picked: " + chosen, player); + return chosen; } /* (non-Javadoc) diff --git a/forge-gui/src/main/java/forge/game/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/game/player/PlayerControllerHuman.java index 3c9270ab040..8af5bdb5d05 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -589,7 +589,7 @@ public class PlayerControllerHuman extends PlayerController { * @see forge.game.player.PlayerController#chooseSomeType(java.lang.String, java.lang.String, java.util.List, java.util.List, java.lang.String) */ @Override - public String chooseSomeType(String kindOfType, String aiLogic, List validTypes, List invalidTypes) { + public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes) { return GuiChoose.one("Choose a " + kindOfType.toLowerCase() + " type", validTypes); } diff --git a/forge-gui/src/main/java/forge/game/spellability/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/game/spellability/HumanPlaySpellAbility.java index 47d2095120e..8a32dc582bc 100644 --- a/forge-gui/src/main/java/forge/game/spellability/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/game/spellability/HumanPlaySpellAbility.java @@ -30,6 +30,7 @@ import forge.game.card.Card; import forge.game.cost.CostPartMana; import forge.game.cost.CostPayment; import forge.game.player.Player; +import forge.game.player.PlayerController; import forge.game.zone.Zone; /** @@ -192,12 +193,12 @@ public class HumanPlaySpellAbility { private boolean announceType() { // Announcing Requirements like choosing creature type or number String announce = ability.getParam("AnnounceType"); + PlayerController pc = ability.getActivatingPlayer().getController(); if (announce != null) { for(String aVar : announce.split(",")) { String varName = aVar.trim(); if ("CreatureType".equals(varName)) { - String choice = ability.getActivatingPlayer().getController().chooseSomeType("Creature", - ability.getParam("AILogic"), CardType.getCreatureTypes(), new ArrayList()); + String choice = pc.chooseSomeType("Creature", ability, CardType.getCreatureTypes(), new ArrayList()); ability.getSourceCard().setChosenType(choice); } if ("ChooseNumber".equals(varName)) {