removed input play or draw (for being a special case of InputConfirm)

added optional param to chooseCreatureType
This commit is contained in:
Maxmtg
2013-12-13 07:51:27 +00:00
parent 1cc15fe50c
commit be25cf699c
9 changed files with 21 additions and 111 deletions

1
.gitattributes vendored
View File

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

View File

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

View File

@@ -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<String>(CardType.getCreatureTypes()), new ArrayList<String>());
source.setChosenType(choice);
String choice = payer.getController().chooseSomeType("Creature", ability, new ArrayList<String>(CardType.getCreatureTypes()), new ArrayList<String>(), true);
if( null == choice )
return false;
source.setChosenType(choice);
return true;
}

View File

@@ -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<SpellAbility> abilities) {
public final SpellAbility getAbilityToPlay(List<SpellAbility> abilities) {
return getAbilityToPlay(abilities, null);
}
@@ -164,7 +164,10 @@ public abstract class PlayerController {
public abstract List<SpellAbility> chooseSaToActivateFromOpeningHand(List<SpellAbility> usableFromOpeningHand);
public abstract Mana chooseManaFromPool(List<Mana> manaChoices);
public abstract String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes);
public final String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes) {
return chooseSomeType(kindOfType, sa, validTypes, invalidTypes, false);
}
public abstract String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes, boolean isOptional);
public abstract Pair<CounterType,String> chooseAndRemoveOrPutCounter(Card cardWithCounter);
public abstract boolean confirmReplacementEffect(ReplacementEffect replacementEffect, SpellAbility effectSA, String question);
public abstract List<Card> getCardsToMulligan(boolean isCommander, Player firstPlayer);

View File

@@ -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<String> validTypes, List<String> invalidTypes) {
public String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes, boolean isOptional) {
String chosen = ComputerUtil.chooseSomeType(player, kindOfType, sa.getParam("AILogic"), invalidTypes);
if (StringUtils.isBlank(chosen) && !validTypes.isEmpty())
{

View File

@@ -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<String, Object> 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<String> validTypes, List<String> invalidTypes) {
return GuiChoose.one("Choose a " + kindOfType.toLowerCase() + " type", validTypes);
public String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> 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)

View File

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

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
package forge.gui.input;
import forge.game.player.Player;
import forge.view.ButtonUtil;
/**
* <p>
* InputMulligan class.
* </p>
*
* @author Forge
* @version $Id: InputConfirmMulligan.java 21647 2013-05-24 22:31:11Z Max mtg $
*/
public class InputPlayOrDraw extends InputSyncronizedBase {
/** Constant <code>serialVersionUID=-8112954303001155622L</code>. */
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;
}
}

View File

@@ -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<SpellAbility> 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<String> validTypes, List<String> invalidTypes) {
public String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes, boolean isOptional) {
return chooseItem(validTypes);
}