From be25cf699cff9cecfa763ee2faba88b27bffa198 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Fri, 13 Dec 2013 07:51:27 +0000 Subject: [PATCH] removed input play or draw (for being a special case of InputConfirm) added optional param to chooseCreatureType --- .gitattributes | 1 - .../src/main/java/forge/util/ThreadUtil.java | 1 - .../game/cost/CostChooseCreatureType.java | 12 +-- .../forge/game/player/PlayerController.java | 7 +- .../forge/game/player/PlayerControllerAi.java | 2 +- .../game/player/PlayerControllerHuman.java | 16 ++-- .../java/forge/gui/input/InputConfirm.java | 4 - .../java/forge/gui/input/InputPlayOrDraw.java | 80 ------------------- .../util/PlayerControllerForTests.java | 9 +-- 9 files changed, 21 insertions(+), 111 deletions(-) delete mode 100644 forge-gui/src/main/java/forge/gui/input/InputPlayOrDraw.java diff --git a/.gitattributes b/.gitattributes index a38bbc17fa1..b10cd2ade3c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15373,7 +15373,6 @@ forge-gui/src/main/java/forge/gui/input/InputPayManaExecuteCommands.java svneol= forge-gui/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java -text forge-gui/src/main/java/forge/gui/input/InputPayManaSimple.java svneol=native#text/plain forge-gui/src/main/java/forge/gui/input/InputPayManaX.java -text -forge-gui/src/main/java/forge/gui/input/InputPlayOrDraw.java -text forge-gui/src/main/java/forge/gui/input/InputPlaybackControl.java -text forge-gui/src/main/java/forge/gui/input/InputProliferate.java -text forge-gui/src/main/java/forge/gui/input/InputSelectCards.java -text diff --git a/forge-core/src/main/java/forge/util/ThreadUtil.java b/forge-core/src/main/java/forge/util/ThreadUtil.java index 6bb1c2f125e..0d7a059d44b 100644 --- a/forge-core/src/main/java/forge/util/ThreadUtil.java +++ b/forge-core/src/main/java/forge/util/ThreadUtil.java @@ -1,6 +1,5 @@ package forge.util; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; diff --git a/forge-gui/src/main/java/forge/game/cost/CostChooseCreatureType.java b/forge-gui/src/main/java/forge/game/cost/CostChooseCreatureType.java index a5dc7bba994..999c3fe548e 100644 --- a/forge-gui/src/main/java/forge/game/cost/CostChooseCreatureType.java +++ b/forge-gui/src/main/java/forge/game/cost/CostChooseCreatureType.java @@ -24,7 +24,6 @@ import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.player.Player; import forge.game.spellability.SpellAbility; -import forge.gui.input.InputConfirm; /** * The Class CostChooseCreatureType. @@ -63,14 +62,11 @@ public class CostChooseCreatureType extends CostPart { @Override public final boolean payHuman(final SpellAbility ability, final Player payer) { final Card source = ability.getSourceCard(); - InputConfirm inp = new InputConfirm("Choose a creature type for " + source.getName() + "?"); - inp.showAndWait(); - if (!inp.getResult()) { - return false; - } - String choice = payer.getController().chooseSomeType("Creature", ability, new ArrayList(CardType.getCreatureTypes()), new ArrayList()); - source.setChosenType(choice); + String choice = payer.getController().chooseSomeType("Creature", ability, new ArrayList(CardType.getCreatureTypes()), new ArrayList(), true); + if( null == choice ) + return false; + source.setChosenType(choice); return true; } 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 82d4433c49f..898d529a18d 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerController.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerController.java @@ -102,7 +102,7 @@ public abstract class PlayerController { /** * Uses GUI to learn which spell the player (human in our case) would like to play */ - public SpellAbility getAbilityToPlay(List abilities) { + public final SpellAbility getAbilityToPlay(List abilities) { return getAbilityToPlay(abilities, null); } @@ -164,7 +164,10 @@ public abstract class PlayerController { public abstract List chooseSaToActivateFromOpeningHand(List usableFromOpeningHand); public abstract Mana chooseManaFromPool(List manaChoices); - public abstract String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes); + public final String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes) { + return chooseSomeType(kindOfType, sa, validTypes, invalidTypes, false); + } + public abstract String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional); 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 f6a2a79e7d2..4f7be71af8a 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java @@ -365,7 +365,7 @@ 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, SpellAbility sa, List validTypes, List invalidTypes) { + public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional) { String chosen = ComputerUtil.chooseSomeType(player, kindOfType, sa.getParam("AILogic"), invalidTypes); if (StringUtils.isBlank(chosen) && !validTypes.isEmpty()) { 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 d7658d37195..53e3687c5fb 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -420,8 +420,7 @@ public class PlayerControllerHuman extends PlayerController { if (!Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_COMPACT_PROMPT)) { //append trigger description unless prompt is compact buildQuestion.append("\n("); - buildQuestion.append(triggerParams.get("TriggerDescription") - .replace("CARDNAME", regtrig.getHostCard().getName())); + buildQuestion.append(triggerParams.get("TriggerDescription").replace("CARDNAME", regtrig.getHostCard().getName())); buildQuestion.append(")"); } HashMap tos = sa.getTriggeringObjects(); @@ -443,9 +442,11 @@ public class PlayerControllerHuman extends PlayerController { @Override public boolean getWillPlayOnFirstTurn(boolean isFirstGame) { - InputPlayOrDraw inp = new InputPlayOrDraw(player, isFirstGame); + 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."); + InputConfirm inp = new InputConfirm(prompt, "Play", "Draw"); inp.showAndWait(); - return inp.isPlayingFirst(); + return inp.getResult(); } @Override @@ -643,8 +644,11 @@ 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, SpellAbility sa, List validTypes, List invalidTypes) { - return GuiChoose.one("Choose a " + kindOfType.toLowerCase() + " type", validTypes); + public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional) { + if(isOptional) + return GuiChoose.oneOrNone("Choose a " + kindOfType.toLowerCase() + " type", validTypes); + else + return GuiChoose.one("Choose a " + kindOfType.toLowerCase() + " type", validTypes); } /* (non-Javadoc) diff --git a/forge-gui/src/main/java/forge/gui/input/InputConfirm.java b/forge-gui/src/main/java/forge/gui/input/InputConfirm.java index 5d47ed32dd8..23bed953dec 100644 --- a/forge-gui/src/main/java/forge/gui/input/InputConfirm.java +++ b/forge-gui/src/main/java/forge/gui/input/InputConfirm.java @@ -40,10 +40,6 @@ public class InputConfirm extends InputSyncronizedBase { this(message0, "Yes", "No", true); } - public InputConfirm(String message0, boolean defaultYes0) { - this(message0, "Yes", "No", defaultYes0); - } - public InputConfirm(String message0, String yesButtonText0, String noButtonText0) { this(message0, yesButtonText0, noButtonText0, true); } diff --git a/forge-gui/src/main/java/forge/gui/input/InputPlayOrDraw.java b/forge-gui/src/main/java/forge/gui/input/InputPlayOrDraw.java deleted file mode 100644 index ffe84675eb6..00000000000 --- a/forge-gui/src/main/java/forge/gui/input/InputPlayOrDraw.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Forge: Play Magic: the Gathering. - * Copyright (C) 2011 Forge Team - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package forge.gui.input; - -import forge.game.player.Player; -import forge.view.ButtonUtil; - /** - *

- * InputMulligan class. - *

- * - * @author Forge - * @version $Id: InputConfirmMulligan.java 21647 2013-05-24 22:31:11Z Max mtg $ - */ -public class InputPlayOrDraw extends InputSyncronizedBase { - /** Constant serialVersionUID=-8112954303001155622L. */ - private static final long serialVersionUID = -8112954303001155622L; - - private final Player startingPlayer; - private final boolean firstGame; - private boolean willPlayFirst = true; - - public InputPlayOrDraw(Player startsGame, boolean isFirstGame) { - startingPlayer = startsGame; - firstGame = isFirstGame; - } - - - - /** {@inheritDoc} */ - @Override - public final void showMessage() { - ButtonUtil.setButtonText("Play", "Draw"); - ButtonUtil.enableAllFocusOk(); - - StringBuilder sb = new StringBuilder(); - sb.append(startingPlayer.getName()).append(", you ").append(firstGame ? " have won the coin toss." : " lost the last game."); - sb.append("\n\n"); - sb.append("Would you like to play or draw?"); - showMessage(sb.toString()); - } - - /** {@inheritDoc} */ - @Override - protected final void onOk() { - willPlayFirst = true; - done(); - } - - /** {@inheritDoc} */ - @Override - protected final void onCancel() { - willPlayFirst = false; - done(); - } - - private void done() { - ButtonUtil.reset(); - stop(); - } - - public final boolean isPlayingFirst() { - return willPlayFirst; - } -} diff --git a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java index 58e532c239d..e2cd0837167 100644 --- a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -8,7 +8,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -86,12 +85,6 @@ public class PlayerControllerForTests extends PlayerController { return game; } - @Override - public SpellAbility getAbilityToPlay(List abilities) { - System.out.println("getAbilityToPlay " + StringUtils.join(abilities, ", ")); - return null; - } - @Override public void playSpellAbilityForFree(SpellAbility copySA, boolean mayChoseNewTargets) { throw new IllegalStateException("Callers of this method currently assume that it performs extra functionality!"); @@ -444,7 +437,7 @@ public class PlayerControllerForTests extends PlayerController { @Override - public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes) { + public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional) { return chooseItem(validTypes); }