diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java index 05d772b4c00..6ffca86c8f1 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java @@ -792,8 +792,8 @@ public final class CMatchUI cPrompt.setMessage(message); } // no override for now - public void showPromptMessage(final PlayerView playerView, final String message, final SpellAbilityView sav ) { - cPrompt.setMessage(message,sav); + public void showPromptMessage(final PlayerView playerView, final String message, final CardView card ) { + cPrompt.setMessage(message,card); } @Override diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPrompt.java b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPrompt.java index cd2a83801e5..8f651ca46b7 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPrompt.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CPrompt.java @@ -29,7 +29,6 @@ import javax.swing.JButton; import forge.FThreads; import forge.game.GameView; import forge.game.card.CardView; -import forge.game.spellability.SpellAbilityView; import forge.gui.framework.ICDoc; import forge.gui.framework.SDisplayUtil; import forge.screens.match.CMatchUI; @@ -105,11 +104,11 @@ public class CPrompt implements ICDoc { public void setMessage(final String s0) { view.getTarMessage().setText(FSkin.encodeSymbols(s0, false)); - view.setSpellAbilityView(null); + view.setCardView(null); } - public void setMessage(final String s0, final SpellAbilityView sav) { + public void setMessage(final String s0, final CardView card) { view.getTarMessage().setText(FSkin.encodeSymbols(s0, false)); - view.setSpellAbilityView(sav); + view.setCardView(card); } /** diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/views/VPrompt.java b/forge-gui-desktop/src/main/java/forge/screens/match/views/VPrompt.java index 7fa9f4f14d8..5a3ee81fc41 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/views/VPrompt.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/views/VPrompt.java @@ -18,7 +18,6 @@ package forge.screens.match.views; import forge.game.card.CardView; -import forge.game.spellability.SpellAbilityView; import forge.gui.framework.DragCell; import forge.gui.framework.DragTab; import forge.gui.framework.EDocID; @@ -56,10 +55,10 @@ public class VPrompt implements IVDoc { private final FScrollPane messageScroller = new FScrollPane(tarMessage, false, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); private final JLabel lblGames; - private SpellAbilityView sav = null ; + private CardView card = null ; - public void setSpellAbilityView(final SpellAbilityView sav) { - this.sav = sav ; + public void setCardView(final CardView card) { + this.card = card ; } private KeyAdapter buttonKeyAdapter = new KeyAdapter() { @@ -97,8 +96,8 @@ public class VPrompt implements IVDoc { messageScroller.getViewport().getView().addMouseListener(new MouseAdapter() { @Override public void mouseEntered(final MouseEvent e) { - if ( sav != null ) { - controller.getMatchUI().setCard(sav.getHostCard()); + if ( card != null ) { + controller.getMatchUI().setCard(card); } } }); diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 46de8c9c85f..fcceed16c4d 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -157,7 +157,7 @@ public class MatchController extends AbstractGuiGame { } @Override - public void showPromptMessage(final PlayerView player, final String message, final SpellAbilityView sav) { + public void showPromptMessage(final PlayerView player, final String message, final CardView card) { view.getPrompt(player).setMessage(message); } diff --git a/forge-gui/src/main/java/forge/interfaces/IGuiGame.java b/forge-gui/src/main/java/forge/interfaces/IGuiGame.java index daaeb2d6d65..5a980b6b478 100644 --- a/forge-gui/src/main/java/forge/interfaces/IGuiGame.java +++ b/forge-gui/src/main/java/forge/interfaces/IGuiGame.java @@ -32,7 +32,7 @@ public interface IGuiGame { void afterGameEnd(); void showCombat(); void showPromptMessage(PlayerView playerView, String message); - void showPromptMessage(PlayerView playerView, String message, SpellAbilityView sav); + void showPromptMessage(PlayerView playerView, String message, CardView card); void updateButtons(PlayerView owner, boolean okEnabled, boolean cancelEnabled, boolean focusOk); void updateButtons(PlayerView owner, String label1, String label2, boolean enable1, boolean enable2, boolean focus1); void flashIncorrectAction(); diff --git a/forge-gui/src/main/java/forge/match/input/InputBase.java b/forge-gui/src/main/java/forge/match/input/InputBase.java index 10bfaf8f5ae..4a46f79e7c5 100644 --- a/forge-gui/src/main/java/forge/match/input/InputBase.java +++ b/forge-gui/src/main/java/forge/match/input/InputBase.java @@ -21,6 +21,7 @@ import java.util.List; import forge.game.Game; import forge.game.card.Card; +import forge.game.card.CardView; import forge.game.phase.PhaseHandler; import forge.game.player.Player; import forge.game.player.PlayerView; @@ -119,7 +120,10 @@ public abstract class InputBase implements java.io.Serializable, Input { controller.getGui().showPromptMessage(getOwner(), message); } protected final void showMessage(final String message, final SpellAbilityView sav) { - controller.getGui().showPromptMessage(getOwner(), message, sav); + controller.getGui().showPromptMessage(getOwner(), message, sav.getHostCard()); + } + protected final void showMessage(final String message, final CardView card) { + controller.getGui().showPromptMessage(getOwner(), message, card); } protected String getTurnPhasePriorityMessage(final Game game) { diff --git a/forge-gui/src/main/java/forge/match/input/InputConfirm.java b/forge-gui/src/main/java/forge/match/input/InputConfirm.java index 9990b1d350e..fcb12c04e34 100644 --- a/forge-gui/src/main/java/forge/match/input/InputConfirm.java +++ b/forge-gui/src/main/java/forge/match/input/InputConfirm.java @@ -18,7 +18,9 @@ package forge.match.input; import forge.game.card.Card; +import forge.game.card.CardView; import forge.game.spellability.SpellAbility; +import forge.game.spellability.SpellAbilityView; import forge.game.trigger.Trigger; import forge.game.trigger.WrappedAbility; import forge.model.FModel; @@ -42,38 +44,85 @@ public class InputConfirm extends InputSyncronizedBase { private final boolean defaultYes; private boolean result; private SpellAbility sa; + private CardView card; - public InputConfirm(final PlayerControllerHuman controller, String message0, SpellAbility sa) { - this(controller, message0, "Yes", "No", true, sa); + public InputConfirm(final PlayerControllerHuman controller, String message0) { + this(controller, message0, "Yes", "No", true); } - public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, SpellAbility sa) { - this(controller, message0, yesButtonText0, noButtonText0, true, sa); + public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0) { + this(controller, message0, yesButtonText0, noButtonText0, true); } - public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, boolean defaultYes0, SpellAbility sa) { + public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, boolean defaultYes0) { super(controller); message = message0; yesButtonText = yesButtonText0; noButtonText = noButtonText0; defaultYes = defaultYes0; result = defaultYes0; - this.sa = sa ; + this.sa = null; + this.card = null; + } + + public InputConfirm(final PlayerControllerHuman controller, String message0, SpellAbility sa0) { + this(controller, message0, "Yes", "No", true, sa0); + } + + public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, SpellAbility sa0) { + this(controller, message0, yesButtonText0, noButtonText0, true, sa0); + } + + public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, boolean defaultYes0, SpellAbility sa0) { + super(controller); + message = message0; + yesButtonText = yesButtonText0; + noButtonText = noButtonText0; + defaultYes = defaultYes0; + result = defaultYes0; + this.sa = sa0; + this.card = sa.getView().getHostCard(); + } + + public InputConfirm(final PlayerControllerHuman controller, String message0, CardView card0) { + this(controller, message0, "Yes", "No", true, card0); + } + + public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, CardView card0) { + this(controller, message0, yesButtonText0, noButtonText0, true, card0); + } + + public InputConfirm(final PlayerControllerHuman controller, String message0, String yesButtonText0, String noButtonText0, boolean defaultYes0, CardView card0) { + super(controller); + message = message0; + yesButtonText = yesButtonText0; + noButtonText = noButtonText0; + defaultYes = defaultYes0; + result = defaultYes0; + this.sa = null ; + this.card = card0; } /** {@inheritDoc} */ @Override protected final void showMessage() { getController().getGui().updateButtons(getOwner(), yesButtonText, noButtonText, true, true, defaultYes); - - - if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) - && (sa != null)) { - final StringBuilder sb = new StringBuilder(); - sb.append(sa.getStackDescription()).append("\n").append(message); - showMessage(sb.toString(), sa.getView()); + if ( FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) && + (card!=null) ) { + final StringBuilder sb = new StringBuilder(); + //was sb.append(sa.getStackDescription()).append("\n").append(message); + sb.append(card.toString()); + if ( sa != null ) { + sb.append(" - ").append(sa.toString()); + } + sb.append("\n\n").append(message); + showMessage(sb.toString(), card); } else { - showMessage(message, (sa != null) ? sa.getView() : null); + if ( card!=null ) { + showMessage(message, card); + } else { + showMessage(message); + } } } diff --git a/forge-gui/src/main/java/forge/match/input/InputConfirmMulligan.java b/forge-gui/src/main/java/forge/match/input/InputConfirmMulligan.java index 3ce7b770569..cf5bbcdda14 100644 --- a/forge-gui/src/main/java/forge/match/input/InputConfirmMulligan.java +++ b/forge-gui/src/main/java/forge/match/input/InputConfirmMulligan.java @@ -110,6 +110,7 @@ public class InputConfirmMulligan extends InputSyncronizedBase { } final CardView cView = c0.getView(); + //pfps leave this as is for now - it is confirming during another confirm so it might need the popup if (isSerumPowder && getController().getGui().confirm(cView, "Use " + cView + "'s ability?")) { cardSelectLocked = true; ThreadUtil.invokeInGameThread(new Runnable() { diff --git a/forge-gui/src/main/java/forge/match/input/InputSelectCardsFromList.java b/forge-gui/src/main/java/forge/match/input/InputSelectCardsFromList.java index 04790a266c8..626f9bcc0cf 100644 --- a/forge-gui/src/main/java/forge/match/input/InputSelectCardsFromList.java +++ b/forge-gui/src/main/java/forge/match/input/InputSelectCardsFromList.java @@ -9,21 +9,19 @@ public class InputSelectCardsFromList extends InputSelectEntitiesFromList private static final long serialVersionUID = 6230360322294805986L; public InputSelectCardsFromList(final PlayerControllerHuman controller, final int cnt, final FCollectionView validCards) { - super(controller, cnt, cnt, validCards); // to avoid hangs + this(controller, cnt, cnt, validCards); } public InputSelectCardsFromList(final PlayerControllerHuman controller, final int cnt, final FCollectionView validCards, final SpellAbility sa) { - this(controller,cnt,validCards); - this.sa = sa; + this(controller, cnt, cnt, validCards, sa); } public InputSelectCardsFromList(final PlayerControllerHuman controller, final int min, final int max, final FCollectionView validCards) { - super(controller, min, max, validCards); // to avoid hangs + super(controller, min, max, validCards); } public InputSelectCardsFromList(final PlayerControllerHuman controller, final int min, final int max, final FCollectionView validCards, final SpellAbility sa) { - this(controller,min,max,validCards); - this.sa = sa; + super(controller, min, max, validCards, sa); } } diff --git a/forge-gui/src/main/java/forge/match/input/InputSelectEntitiesFromList.java b/forge-gui/src/main/java/forge/match/input/InputSelectEntitiesFromList.java index 8491702b177..5ad860fd229 100644 --- a/forge-gui/src/main/java/forge/match/input/InputSelectEntitiesFromList.java +++ b/forge-gui/src/main/java/forge/match/input/InputSelectEntitiesFromList.java @@ -19,17 +19,15 @@ public class InputSelectEntitiesFromList extends InputSele protected final FCollection selected = new FCollection(); public InputSelectEntitiesFromList(final PlayerControllerHuman controller, final int min, final int max, final FCollectionView validChoices0) { - super(controller, Math.min(min, validChoices0.size()), Math.min(max, validChoices0.size())); - validChoices = validChoices0; - - if (min > validChoices.size()) { - System.out.println(String.format("Trying to choose at least %d cards from a list with only %d cards!", min, validChoices.size())); - } + this(controller, min, max, validChoices0, null); } - public InputSelectEntitiesFromList(final PlayerControllerHuman controller, final int min, final int max, final FCollectionView validChoices0, final SpellAbility sa) { - this(controller,min,max,validChoices0); - this.sa = sa; + public InputSelectEntitiesFromList(final PlayerControllerHuman controller, final int min, final int max, final FCollectionView validChoices0, final SpellAbility sa0) { + super(controller, Math.min(min, validChoices0.size()), Math.min(max, validChoices0.size()),sa0); + validChoices = validChoices0; + if (min > validChoices.size()) { + System.out.println(String.format("Trying to choose at least %d things from a list with only %d things!", min, validChoices.size())); + } } @Override @@ -95,4 +93,4 @@ public class InputSelectEntitiesFromList extends InputSele ? String.format(message, selected.size()) : String.format(message, max - selected.size()); } -} \ No newline at end of file +} diff --git a/forge-gui/src/main/java/forge/match/input/InputSelectManyBase.java b/forge-gui/src/main/java/forge/match/input/InputSelectManyBase.java index 1a4afe9f99c..16fc3bf12ce 100644 --- a/forge-gui/src/main/java/forge/match/input/InputSelectManyBase.java +++ b/forge-gui/src/main/java/forge/match/input/InputSelectManyBase.java @@ -20,6 +20,7 @@ public abstract class InputSelectManyBase extends InputSyn protected final int max; protected boolean allowCancel = false; protected SpellAbility sa = null; + protected CardView card; protected String message = "Source-Card-Name - Select %d more card(s)"; @@ -32,9 +33,16 @@ public abstract class InputSelectManyBase extends InputSyn this.max = max; } - protected InputSelectManyBase(final PlayerControllerHuman controller, final int min, final int max, final SpellAbility sa) { + protected InputSelectManyBase(final PlayerControllerHuman controller, final int min, final int max, final SpellAbility sa0) { this(controller,min,max); - this.sa = sa; + this.sa = sa0; + this.card = sa0.getView().getHostCard(); + } + + protected InputSelectManyBase(final PlayerControllerHuman controller, final int min, final int max, final CardView card0) { + this(controller,min,max); + this.sa = null; + this.card = card0; } protected void refresh() { @@ -54,11 +62,22 @@ public abstract class InputSelectManyBase extends InputSyn @Override public final void showMessage() { if ( FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) && - (sa!=null) ) { - showMessage( sa.getStackDescription() + "\n" + getMessage(), sa.getView() ) ; - } else { - showMessage(getMessage(), (sa!=null)?sa.getView():null); - } + (card!=null) ) { + // showMessage( sa.getStackDescription() + "\n" + getMessage(), sa.getView() ) ; + final StringBuilder sb = new StringBuilder(); + sb.append(card.toString()); + if ( sa != null ) { + sb.append(" - ").append(sa.toString()); + } + sb.append("\n\n").append(getMessage()); + showMessage(sb.toString(), card); + } else { + if (card!=null) { + showMessage(getMessage(), card); + } else { + showMessage(getMessage()); + } + } getController().getGui().updateButtons(getOwner(), hasEnoughTargets(), allowCancel, true); } diff --git a/forge-gui/src/main/java/forge/match/input/InputSelectTargets.java b/forge-gui/src/main/java/forge/match/input/InputSelectTargets.java index 340f218e54f..0d9497f073a 100644 --- a/forge-gui/src/main/java/forge/match/input/InputSelectTargets.java +++ b/forge-gui/src/main/java/forge/match/input/InputSelectTargets.java @@ -51,16 +51,12 @@ public final class InputSelectTargets extends InputSyncronizedBase { getController().getGui().setCard(CardView.get(sa.getHostCard())); final StringBuilder sb = new StringBuilder(); if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DETAILED_SPELLDESC_IN_PROMPT)) { - // sb.append(sa.getStackDescription().replace("(Targeting ERROR)", "")).append("\n").append(tgt.getVTSelection()).append("\n"); + // sb.append(sa.getStackDescription().replace("(Targeting ERROR)", "")).append("\n").append(tgt.getVTSelection()).append("\n"); if (sa.isAbility()) { sb.append(sa.getHostCard()).append(" - "); } - if (GuiBase.getInterface().isLibgdxPort()) { - // Apparently ... tags do not work in mobile Forge - sb.append(sa.toString().replace("(Targeting ERROR)", "")).append("\n").append(tgt.getVTSelection()).append("\n"); - } else { - sb.append(sa.toString().replace("(Targeting ERROR)", "")).append("\n").append(tgt.getVTSelection()).append("\n"); - } + // Apparently ... tags do not work in mobile Forge, so don't include them (for now) + sb.append(sa.toString().replace("(Targeting ERROR)", "")).append("\n\n").append(tgt.getVTSelection()).append("\n"); } else { sb.append(sa.getHostCard()).append(" - ").append(tgt.getVTSelection()).append("\n"); } diff --git a/forge-gui/src/main/java/forge/net/server/NetGuiGame.java b/forge-gui/src/main/java/forge/net/server/NetGuiGame.java index 88fe4845220..427c41e35a8 100644 --- a/forge-gui/src/main/java/forge/net/server/NetGuiGame.java +++ b/forge-gui/src/main/java/forge/net/server/NetGuiGame.java @@ -74,7 +74,7 @@ public class NetGuiGame extends AbstractGuiGame { } @Override - public void showPromptMessage(final PlayerView playerView, final String message, final SpellAbilityView sav) { + public void showPromptMessage(final PlayerView playerView, final String message, final CardView card) { updateGameView(); send(ProtocolMethod.showPromptMessage, playerView, message); } diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index aa882a9366e..f75f007d4b6 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -30,6 +30,7 @@ import forge.game.player.PlayerView; import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbilityStackInstance; import forge.game.zone.ZoneType; +import forge.match.input.InputConfirm; import forge.match.input.InputSelectCardsFromList; import forge.match.input.InputSelectManyBase; import forge.util.Aggregates; @@ -946,10 +947,15 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (cost.payCostFromSource()) { final int maxCounters = source.getCounters(cost.counter); if (amount.equals("All")) { - final CardView view = CardView.get(ability.getHostCard()); - if (!controller.getGui().confirm(view, "Remove all counters?")) { - return null; - } + // final CardView view = CardView.get(ability.getHostCard()); + // if (!controller.getGui().confirm(view, "Remove all counters?")) { + // return null; + // } + final InputConfirm inp = new InputConfirm(controller, "Remove all counters?", ability); + inp.showAndWait(); + if (!inp.getResult()) { + return null; + } cntRemoved = maxCounters; } else if (c == null && "XChoice".equals(sVarAmount)) { diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index ba4d7a78aff..acb6b1b215f 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -316,9 +316,15 @@ public class PlayerControllerHuman } private final boolean assignDamageAsIfNotBlocked(final Card attacker) { - return attacker.hasKeyword("CARDNAME assigns its combat damage as though it weren't blocked.") - || (attacker.hasKeyword("You may have CARDNAME assign its combat damage as though it weren't blocked.") - && getGui().confirm(CardView.get(attacker), "Do you want to assign its combat damage as though it weren't blocked?")); + if ( attacker.hasKeyword("CARDNAME assigns its combat damage as though it weren't blocked.") || + attacker.hasKeyword("You may have CARDNAME assign its combat damage as though it weren't blocked.") ) { + // return getGui().confirm(CardView.get(attacker), "Do you want to assign its combat damage as though it weren't blocked?"); + final InputConfirm inp = new InputConfirm(this, "Do you want to assign its combat damage as though it weren't blocked?", CardView.get(attacker)); + inp.showAndWait(); + return inp.getResult(); + } else { + return false; + } } @Override @@ -488,18 +494,27 @@ public class PlayerControllerHuman */ @Override public boolean confirmAction(final SpellAbility sa, final PlayerActionConfirmMode mode, final String message) { - return getGui().confirm(CardView.get(sa.getHostCard()), message); + // return getGui().confirm(CardView.get(sa.getHostCard()), message); + final InputConfirm inp = new InputConfirm(this, message, sa); + inp.showAndWait(); + return inp.getResult(); } @Override public boolean confirmBidAction(final SpellAbility sa, final PlayerActionConfirmMode bidlife, final String string, final int bid, final Player winner) { - return getGui().confirm(CardView.get(sa.getHostCard()), string + " Highest Bidder " + winner); + // return getGui().confirm(CardView.get(sa.getHostCard()), string + " Highest Bidder " + winner); + final InputConfirm inp = new InputConfirm(this, string + " Highest Bidder " + winner, sa); + inp.showAndWait(); + return inp.getResult(); } @Override public boolean confirmStaticApplication(final Card hostCard, final GameEntity affected, final String logic, final String message) { - return getGui().confirm(CardView.get(hostCard), message); + // return getGui().confirm(CardView.get(hostCard), message); + final InputConfirm inp = new InputConfirm(this, message, hostCard.getView()); + inp.showAndWait(); + return inp.getResult(); } @Override @@ -518,11 +533,11 @@ public class PlayerControllerHuman return true; } - final StringBuilder buildQuestion = new StringBuilder("Use triggered ability of "); - buildQuestion.append(regtrig.getHostCard().toString()).append("?"); + final StringBuilder buildQuestion = new StringBuilder("Use triggered ability of "); + buildQuestion.append(regtrig.getHostCard().toString()).append("?"); if (!FModel.getPreferences().getPrefBoolean(FPref.UI_COMPACT_PROMPT) && !FModel.getPreferences().getPrefBoolean(FPref.UI_DETAILED_SPELLDESC_IN_PROMPT) ) { - //append trigger description unless prompt is compact + //append trigger description unless prompt is compact or detailed descriptions are on buildQuestion.append("\n("); buildQuestion.append(triggerParams.get("TriggerDescription").replace("CARDNAME", regtrig.getHostCard().getName())); buildQuestion.append(")"); @@ -539,7 +554,6 @@ public class PlayerControllerHuman } } - // pfps: trigger is on stack so do we really need to put it in the prompt area? final InputConfirm inp = new InputConfirm(this, buildQuestion.toString(), wrapper); inp.showAndWait(); return inp.getResult(); @@ -550,7 +564,7 @@ public class PlayerControllerHuman if (game.getPlayers().size() == 2) { final String prompt = String.format("%s, you %s\n\nWould you like to play or draw?", player.getName(), isFirstGame ? " have won the coin toss." : " lost the last game."); - final InputConfirm inp = new InputConfirm(this, prompt, "Play", "Draw", null); + final InputConfirm inp = new InputConfirm(this, prompt, "Play", "Draw"); inp.showAndWait(); return inp.getResult() ? this.player : this.player.getOpponents().get(0); } @@ -644,7 +658,10 @@ public class PlayerControllerHuman final CardView view = CardView.get(c); tempShowCard(c); - final boolean result = getGui().confirm(view, String.format("Put %s on the top or bottom of your library?", view), ImmutableList.of("Top", "Bottom")); + // final boolean result = getGui().confirm(view, String.format("Put %s on the top or bottom of your library?", view), ImmutableList.of("Top", "Bottom")); + final InputConfirm inp = new InputConfirm(this, String.format("Put %s on the top or bottom of your library?", view), "Top", "Bottom", true, view); + inp.showAndWait(); + final boolean result = inp.getResult(); endTempShowCards(); return result; @@ -845,7 +862,9 @@ public class PlayerControllerHuman */ @Override public boolean confirmReplacementEffect(final ReplacementEffect replacementEffect, final SpellAbility effectSA, final String question) { - return getGui().confirm(CardView.get(replacementEffect.getHostCard()), question); + final InputConfirm inp = new InputConfirm(this, question, effectSA); + inp.showAndWait(); + return inp.getResult(); } @Override @@ -1008,9 +1027,13 @@ public class PlayerControllerHuman case UntapOrLeaveTapped: labels = ImmutableList.of("Untap", "Leave tapped"); break; case UntapTimeVault: labels = ImmutableList.of("Untap (and skip this turn)", "Leave tapped"); break; case PlayOrDraw: labels = ImmutableList.of("Play", "Draw"); break; + case LeftOrRight: labels = ImmutableList.of("Left", "Right"); break; default: labels = ImmutableList.copyOf(kindOfChoice.toString().split("Or")); } - return getGui().confirm(CardView.get(sa.getHostCard()), question, defaultVal == null || defaultVal.booleanValue(), labels); + // return getGui().confirm(CardView.get(sa.getHostCard()), question, defaultVal == null || defaultVal.booleanValue(), labels); + final InputConfirm inp = new InputConfirm(this, question, labels.get(0), labels.get(1), defaultVal == null || defaultVal.booleanValue(), sa); + inp.showAndWait(); + return inp.getResult(); } @Override @@ -1141,7 +1164,11 @@ public class PlayerControllerHuman if (colorNames.size() > 2) { return MagicColor.fromName(getGui().one(message, colorNames)); } - final int idxChosen = getGui().confirm(CardView.get(c), message, colorNames) ? 0 : 1; + //final boolean confirmed = getGui().confirm(CardView.get(c), message, colorNames) ; + final InputConfirm inp = new InputConfirm(this, message, colorNames.get(0), colorNames.get(1), CardView.get(c)); + inp.showAndWait(); + final boolean confirmed = inp.getResult(); + final int idxChosen = confirmed ? 0 : 1; return MagicColor.fromName(colorNames.get(idxChosen)); }