move inputs to forge.gui.input

DrawEffect.java - removed isHuman, fixed description using Lang library
This commit is contained in:
Maxmtg
2013-05-29 13:40:42 +00:00
parent 40a8f66b52
commit 8ac2367468
54 changed files with 141 additions and 145 deletions

46
.gitattributes vendored
View File

@@ -14163,32 +14163,10 @@ src/main/java/forge/control/ChatArea.java -text
src/main/java/forge/control/ControlBazaarUI.java -text src/main/java/forge/control/ControlBazaarUI.java -text
src/main/java/forge/control/FControl.java -text src/main/java/forge/control/FControl.java -text
src/main/java/forge/control/FControlGameEventHandler.java -text src/main/java/forge/control/FControlGameEventHandler.java -text
src/main/java/forge/control/InputQueue.java svneol=native#text/plain
src/main/java/forge/control/KeyboardShortcuts.java -text src/main/java/forge/control/KeyboardShortcuts.java -text
src/main/java/forge/control/Lobby.java -text src/main/java/forge/control/Lobby.java -text
src/main/java/forge/control/RestartUtil.java -text src/main/java/forge/control/RestartUtil.java -text
src/main/java/forge/control/input/Input.java -text
src/main/java/forge/control/input/InputAttack.java svneol=native#text/plain
src/main/java/forge/control/input/InputBase.java svneol=native#text/plain
src/main/java/forge/control/input/InputBlock.java svneol=native#text/plain
src/main/java/forge/control/input/InputConfirmMulligan.java svneol=native#text/plain
src/main/java/forge/control/input/InputLockUI.java -text
src/main/java/forge/control/input/InputPassPriority.java svneol=native#text/plain
src/main/java/forge/control/input/InputPayMana.java -text
src/main/java/forge/control/input/InputPayManaExecuteCommands.java svneol=native#text/plain
src/main/java/forge/control/input/InputPayManaOfCostPayment.java -text
src/main/java/forge/control/input/InputPayManaSimple.java svneol=native#text/plain
src/main/java/forge/control/input/InputPayManaX.java -text
src/main/java/forge/control/input/InputPlayOrDraw.java -text
src/main/java/forge/control/input/InputProliferate.java -text
src/main/java/forge/control/input/InputQueue.java svneol=native#text/plain
src/main/java/forge/control/input/InputSelectCards.java -text
src/main/java/forge/control/input/InputSelectCardsFromList.java -text
src/main/java/forge/control/input/InputSelectMany.java -text
src/main/java/forge/control/input/InputSelectManyBase.java -text
src/main/java/forge/control/input/InputSelectTargets.java -text
src/main/java/forge/control/input/InputSynchronized.java -text
src/main/java/forge/control/input/InputSyncronizedBase.java -text
src/main/java/forge/control/input/package-info.java svneol=native#text/plain
src/main/java/forge/control/package-info.java -text src/main/java/forge/control/package-info.java -text
src/main/java/forge/deck/CardCollections.java -text src/main/java/forge/deck/CardCollections.java -text
src/main/java/forge/deck/CardPool.java -text src/main/java/forge/deck/CardPool.java -text
@@ -14462,6 +14440,28 @@ src/main/java/forge/gui/home/variant/CSubmenuVanguard.java -text
src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java -text src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java -text
src/main/java/forge/gui/home/variant/VSubmenuPlanechase.java -text src/main/java/forge/gui/home/variant/VSubmenuPlanechase.java -text
src/main/java/forge/gui/home/variant/VSubmenuVanguard.java -text src/main/java/forge/gui/home/variant/VSubmenuVanguard.java -text
src/main/java/forge/gui/input/Input.java -text
src/main/java/forge/gui/input/InputAttack.java svneol=native#text/plain
src/main/java/forge/gui/input/InputBase.java svneol=native#text/plain
src/main/java/forge/gui/input/InputBlock.java svneol=native#text/plain
src/main/java/forge/gui/input/InputConfirmMulligan.java svneol=native#text/plain
src/main/java/forge/gui/input/InputLockUI.java -text
src/main/java/forge/gui/input/InputPassPriority.java svneol=native#text/plain
src/main/java/forge/gui/input/InputPayMana.java -text
src/main/java/forge/gui/input/InputPayManaExecuteCommands.java svneol=native#text/plain
src/main/java/forge/gui/input/InputPayManaOfCostPayment.java -text
src/main/java/forge/gui/input/InputPayManaSimple.java svneol=native#text/plain
src/main/java/forge/gui/input/InputPayManaX.java -text
src/main/java/forge/gui/input/InputPlayOrDraw.java -text
src/main/java/forge/gui/input/InputProliferate.java -text
src/main/java/forge/gui/input/InputSelectCards.java -text
src/main/java/forge/gui/input/InputSelectCardsFromList.java -text
src/main/java/forge/gui/input/InputSelectMany.java -text
src/main/java/forge/gui/input/InputSelectManyBase.java -text
src/main/java/forge/gui/input/InputSelectTargets.java -text
src/main/java/forge/gui/input/InputSynchronized.java -text
src/main/java/forge/gui/input/InputSyncronizedBase.java -text
src/main/java/forge/gui/input/package-info.java svneol=native#text/plain
src/main/java/forge/gui/match/CMatchUI.java -text src/main/java/forge/gui/match/CMatchUI.java -text
src/main/java/forge/gui/match/ControlWinLose.java -text src/main/java/forge/gui/match/ControlWinLose.java -text
src/main/java/forge/gui/match/GauntletWinLose.java -text src/main/java/forge/gui/match/GauntletWinLose.java -text

View File

@@ -20,7 +20,6 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityStackInstance; import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player; import forge.game.player.Player;
@@ -28,6 +27,7 @@ import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates; import forge.util.Aggregates;
import forge.util.Lang; import forge.util.Lang;

View File

@@ -12,9 +12,9 @@ import forge.GameEntity;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.SpellAbilityEffect; import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputProliferate;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputProliferate;
public class CountersProliferateEffect extends SpellAbilityEffect { public class CountersProliferateEffect extends SpellAbilityEffect {
@Override @Override

View File

@@ -13,6 +13,7 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.util.Lang;
public class DrawEffect extends SpellAbilityEffect { public class DrawEffect extends SpellAbilityEffect {
@Override @Override
@@ -23,20 +24,16 @@ public class DrawEffect extends SpellAbilityEffect {
if (!tgtPlayers.isEmpty()) { if (!tgtPlayers.isEmpty()) {
sb.append(StringUtils.join(tgtPlayers, " and ")); int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1;
int numCards = 1; sb.append(Lang.joinHomogenous(tgtPlayers));
if (sa.hasParam("NumCards")) {
numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa);
}
if (tgtPlayers.size() > 1) { if (tgtPlayers.size() > 1) {
sb.append(" each"); sb.append(" each");
} }
sb.append(" draw"); sb.append(Lang.joinVerb(tgtPlayers, "draw")).append(" ");
if (tgtPlayers.size() == 1) {
sb.append("s"); sb.append(numCards).append(Lang.joinNounToAmount(numCards, "card"));
}
sb.append(" (").append(numCards).append(")"); sb.append(" (").append(numCards).append(")");
if (sa.hasParam("NextUpkeep")) { if (sa.hasParam("NextUpkeep")) {
@@ -52,10 +49,8 @@ public class DrawEffect extends SpellAbilityEffect {
@Override @Override
public void resolve(SpellAbility sa) { public void resolve(SpellAbility sa) {
final Card source = sa.getSourceCard(); final Card source = sa.getSourceCard();
int numCards = 1; int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1;
if (sa.hasParam("NumCards")) {
numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa);
}
final Target tgt = sa.getTarget(); final Target tgt = sa.getTarget();
@@ -64,30 +59,16 @@ public class DrawEffect extends SpellAbilityEffect {
for (final Player p : getDefinedPlayersBeforeTargetOnes(sa)) { for (final Player p : getDefinedPlayersBeforeTargetOnes(sa)) {
if ((tgt == null) || p.canBeTargetedBy(sa)) { if ((tgt == null) || p.canBeTargetedBy(sa)) {
if (optional) { if (optional && !p.getController().confirmAction(sa, null, "Do you want to draw " + numCards + " cards(s)?"))
if (p.isComputer()) {
if (numCards >= p.getCardsIn(ZoneType.Library).size()) {
// AI shouldn't itself
continue; continue;
}
} else {
final StringBuilder sb = new StringBuilder();
sb.append("Do you want to draw ").append(numCards).append(" cards(s)");
sb.append("?");
if (!GuiDialog.confirm(sa.getSourceCard(), sb.toString())) {
continue;
}
}
}
//TODO: remove this deprecation exception //TODO: remove this deprecation exception
if (slowDraw) { if (slowDraw) {
throw new RuntimeException("This api option is no longer supported. Please file a bug report with the card that threw this error."); throw new RuntimeException("This api option is no longer supported. Please file a bug report with the card that threw this error.");
} else { } else {
final List<Card> drawn = p.drawCards(numCards); final List<Card> drawn = p.drawCards(numCards);
if (sa.hasParam("Reveal")) { if (sa.hasParam("Reveal")) {
GuiChoose.one("Revealing drawn cards", drawn); p.getGame().getAction().reveal(drawn, p);
} }
if (sa.hasParam("RememberDrawn")) { if (sa.hasParam("RememberDrawn")) {
for (final Card c : drawn) { for (final Card c : drawn) {

View File

@@ -12,11 +12,11 @@ import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect; import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
public class UntapEffect extends SpellAbilityEffect { public class UntapEffect extends SpellAbilityEffect {

View File

@@ -41,8 +41,6 @@ import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat; import forge.game.ai.ComputerUtilCombat;
@@ -50,6 +48,8 @@ import forge.game.player.Player;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates; import forge.util.Aggregates;
/** /**

View File

@@ -30,15 +30,15 @@ import forge.card.cost.Cost;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.card.spellability.Spell; import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.AiController; import forge.game.ai.AiController;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerControllerAi; import forge.game.player.PlayerControllerAi;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.input.InputPayManaExecuteCommands;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* <p> * <p>

View File

@@ -61,8 +61,6 @@ import forge.card.spellability.Target;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCost; import forge.game.ai.ComputerUtilCost;
@@ -73,6 +71,8 @@ import forge.game.zone.PlayerZone;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates; import forge.util.Aggregates;
/** /**

View File

@@ -27,13 +27,13 @@ import forge.CardPredicates;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.AiController; import forge.game.ai.AiController;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerControllerAi; import forge.game.player.PlayerControllerAi;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates; import forge.util.Aggregates;
/** /**

View File

@@ -27,14 +27,14 @@ import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityStackInstance; import forge.card.spellability.SpellAbilityStackInstance;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* The Class CostExile. * The Class CostExile.

View File

@@ -25,12 +25,12 @@ import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostBeingPaid; import forge.card.mana.ManaCostBeingPaid;
import forge.card.mana.ManaCostShard; import forge.card.mana.ManaCostShard;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputPayMana;
import forge.control.input.InputPayManaOfCostPayment;
import forge.control.input.InputPayManaX;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilMana; import forge.game.ai.ComputerUtilMana;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.input.InputPayMana;
import forge.gui.input.InputPayManaOfCostPayment;
import forge.gui.input.InputPayManaX;
/** /**
* The mana component of any spell or ability cost * The mana component of any spell or ability cost

View File

@@ -27,11 +27,11 @@ import forge.CounterType;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCards;
/** /**
* The Class CostPutCounter. * The Class CostPutCounter.

View File

@@ -28,11 +28,11 @@ import forge.CounterType;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.game.Game; import forge.game.Game;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.input.InputSelectCards;
/** /**
* The Class CostRemoveCounter. * The Class CostRemoveCounter.

View File

@@ -24,13 +24,13 @@ import forge.CardLists;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* The Class CostReturn. * The Class CostReturn.

View File

@@ -27,13 +27,13 @@ import forge.CardLists;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.AiController; import forge.game.ai.AiController;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerControllerAi; import forge.game.player.PlayerControllerAi;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* The Class CostReveal. * The Class CostReveal.

View File

@@ -24,13 +24,13 @@ import forge.CardLists;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* The Class CostSacrifice. * The Class CostSacrifice.

View File

@@ -28,12 +28,12 @@ import forge.Singletons;
import forge.CardPredicates.Presets; import forge.CardPredicates.Presets;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* The Class CostTapType. * The Class CostTapType.

View File

@@ -24,12 +24,12 @@ import forge.Singletons;
import forge.CardPredicates.Presets; import forge.CardPredicates.Presets;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* The Class CostUntapType. * The Class CostUntapType.

View File

@@ -26,12 +26,12 @@ import forge.Card;
import forge.CardLists; import forge.CardLists;
import forge.Singletons; import forge.Singletons;
import forge.card.ability.AbilityUtils; import forge.card.ability.AbilityUtils;
import forge.control.input.InputSelectTargets;
import forge.game.Game; import forge.game.Game;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.input.InputSelectTargets;
import forge.util.Aggregates; import forge.util.Aggregates;
/** /**

View File

@@ -37,7 +37,6 @@ import forge.Card;
import forge.Constant.Preferences; import forge.Constant.Preferences;
import forge.Singletons; import forge.Singletons;
import forge.control.KeyboardShortcuts.Shortcut; import forge.control.KeyboardShortcuts.Shortcut;
import forge.control.input.InputQueue;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.AiProfileUtil; import forge.game.ai.AiProfileUtil;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;

View File

@@ -15,12 +15,15 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.control;
import java.util.concurrent.BlockingDeque; import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.LinkedBlockingDeque;
import forge.game.Game; import forge.game.Game;
import forge.gui.input.Input;
import forge.gui.input.InputLockUI;
import forge.gui.input.InputSynchronized;
import forge.util.MyObservable; import forge.util.MyObservable;
/** /**
@@ -43,13 +46,6 @@ public class InputQueue extends MyObservable implements java.io.Serializable {
inputLock = new InputLockUI(this); inputLock = new InputLockUI(this);
} }
/**
* <p>
* Getter for the field <code>input</code>.
* </p>
*
* @return a {@link forge.control.input.InputBase} object.
*/
public final Input getInput() { public final Input getInput() {
return inputStack.isEmpty() ? null : this.inputStack.peek(); return inputStack.isEmpty() ? null : this.inputStack.peek();
} }
@@ -62,7 +58,7 @@ public class InputQueue extends MyObservable implements java.io.Serializable {
* @param update * @param update
* a boolean. * a boolean.
*/ */
final void removeInput(Input inp) { public final void removeInput(Input inp) {
Input topMostInput = inputStack.isEmpty() ? null : inputStack.pop(); Input topMostInput = inputStack.isEmpty() ? null : inputStack.pop();
if( topMostInput != inp ) if( topMostInput != inp )
@@ -75,7 +71,7 @@ public class InputQueue extends MyObservable implements java.io.Serializable {
* updateInput. * updateInput.
* </p> * </p>
* *
* @return a {@link forge.control.input.InputBase} object. * @return a {@link forge.gui.input.InputBase} object.
*/ */
public final Input getActualInput(Game game) { public final Input getActualInput(Game game) {
Input topMost = inputStack.peek(); // incoming input to Control Input topMost = inputStack.peek(); // incoming input to Control

View File

@@ -1,3 +0,0 @@
/** Forge Card Game. */
package forge.control.input;

View File

@@ -35,6 +35,7 @@ import forge.CardPredicates;
import forge.CardPredicates.Presets; import forge.CardPredicates.Presets;
import forge.Constant; import forge.Constant;
import forge.GameEntity; import forge.GameEntity;
import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType; import forge.card.ability.ApiType;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.CostDiscard; import forge.card.cost.CostDiscard;
@@ -740,6 +741,14 @@ public class AiController {
//the spell in the first place if it would curse its own creature //the spell in the first place if it would curse its own creature
//and the pump isn't mandatory //and the pump isn't mandatory
return true; return true;
case Draw:
int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1;
// AI shouldn't mill itself
return numCards < player.getZone(ZoneType.Library).size();
default: default:
} }
String exMsg = String.format("AI confirmAction does not know what to decide about %s API with %s mode.", api, mode); String exMsg = String.format("AI confirmAction does not know what to decide about %s API with %s mode.", api, mode);

View File

@@ -30,13 +30,13 @@ import forge.Singletons;
import forge.CardPredicates.Presets; import forge.CardPredicates.Presets;
import forge.CounterType; import forge.CounterType;
import forge.GameEntity; import forge.GameEntity;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* <p> * <p>

View File

@@ -37,9 +37,6 @@ import forge.card.spellability.Ability;
import forge.card.spellability.AbilityManaPart; import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.AbilityStatic; import forge.card.spellability.AbilityStatic;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
@@ -52,6 +49,9 @@ import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputPayManaExecuteCommands;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* <p> * <p>

View File

@@ -39,16 +39,16 @@ import forge.card.spellability.Ability;
import forge.card.spellability.HumanPlaySpellAbility; import forge.card.spellability.HumanPlaySpellAbility;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.control.input.InputPayMana;
import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputPayManaSimple;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.GameActionUtil; import forge.game.GameActionUtil;
import forge.game.Game; import forge.game.Game;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.input.InputPayMana;
import forge.gui.input.InputPayManaExecuteCommands;
import forge.gui.input.InputPayManaSimple;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
/** /**
* TODO: Write javadoc for this type. * TODO: Write javadoc for this type.

View File

@@ -19,14 +19,6 @@ import forge.card.replacement.ReplacementEffect;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.card.spellability.TargetSelection; import forge.card.spellability.TargetSelection;
import forge.control.input.InputAttack;
import forge.control.input.InputBlock;
import forge.control.input.InputConfirmMulligan;
import forge.control.input.InputPassPriority;
import forge.control.input.InputPlayOrDraw;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.control.input.InputSynchronized;
import forge.deck.CardPool; import forge.deck.CardPool;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckSection; import forge.deck.DeckSection;
@@ -37,6 +29,14 @@ import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.input.InputAttack;
import forge.gui.input.InputBlock;
import forge.gui.input.InputConfirmMulligan;
import forge.gui.input.InputPassPriority;
import forge.gui.input.InputPlayOrDraw;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
import forge.gui.input.InputSynchronized;
import forge.gui.match.CMatchUI; import forge.gui.match.CMatchUI;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.util.TextUtil; import forge.util.TextUtil;

View File

@@ -50,9 +50,6 @@ import forge.card.spellability.Target;
import forge.card.spellability.TargetChoices; import forge.card.spellability.TargetChoices;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.GameActionUtil; import forge.game.GameActionUtil;
import forge.game.Game; import forge.game.Game;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
@@ -62,6 +59,9 @@ import forge.game.event.GameEventSpellResolved;
import forge.game.player.HumanPlay; import forge.game.player.HumanPlay;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.input.InputPayManaExecuteCommands;
import forge.gui.input.InputSelectCards;
import forge.gui.input.InputSelectCardsFromList;
import forge.util.MyObservable; import forge.util.MyObservable;
/** /**

View File

@@ -44,7 +44,6 @@ import forge.Singletons;
import forge.card.spellability.AbilityManaPart; import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.control.input.InputSelectCardsFromList;
import forge.game.Game; import forge.game.Game;
import forge.game.GameType; import forge.game.GameType;
import forge.game.PlanarDice; import forge.game.PlanarDice;
@@ -53,6 +52,7 @@ import forge.game.player.HumanPlay;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.input.InputSelectCardsFromList;
import forge.item.CardDb; import forge.item.CardDb;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.item.IPaperCard; import forge.item.IPaperCard;

View File

@@ -24,9 +24,9 @@ import java.util.concurrent.atomic.AtomicReference;
import forge.Card; import forge.Card;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
import forge.control.input.Input;
import forge.game.Game; import forge.game.Game;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.input.Input;
/** /**
* <p> * <p>

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import forge.Card; import forge.Card;
import forge.game.player.Player; import forge.game.player.Player;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import forge.Card; import forge.Card;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,10 +1,11 @@
package forge.control.input; package forge.gui.input;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import forge.Card; import forge.Card;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
import forge.control.InputQueue;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.match.CMatchUI; import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil; import forge.view.ButtonUtil;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import forge.Card; import forge.Card;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import forge.Card; import forge.Card;
import forge.card.mana.ManaCostBeingPaid; import forge.card.mana.ManaCostBeingPaid;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import forge.Card; import forge.Card;
import forge.card.mana.ManaCostBeingPaid; import forge.card.mana.ManaCostBeingPaid;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package forge.control.input; package forge.gui.input;
import forge.game.player.Player; import forge.game.player.Player;
import forge.view.ButtonUtil; import forge.view.ButtonUtil;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import forge.Card; import forge.Card;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
public interface InputSynchronized extends Input { public interface InputSynchronized extends Input {
void awaitLatchRelease(); void awaitLatchRelease();

View File

@@ -1,4 +1,4 @@
package forge.control.input; package forge.gui.input;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;

View File

@@ -0,0 +1,3 @@
/** Forge Card Game. */
package forge.gui.input;

View File

@@ -35,8 +35,6 @@ import forge.Singletons;
import forge.Constant.Preferences; import forge.Constant.Preferences;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.Input;
import forge.control.input.InputPayMana;
import forge.game.Game; import forge.game.Game;
import forge.game.player.HumanPlay; import forge.game.player.HumanPlay;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
@@ -44,6 +42,8 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.ForgeAction.MatchConstants; import forge.gui.ForgeAction.MatchConstants;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.gui.input.Input;
import forge.gui.input.InputPayMana;
import forge.gui.match.CMatchUI; import forge.gui.match.CMatchUI;
import forge.gui.match.controllers.CMessage; import forge.gui.match.controllers.CMessage;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;

View File

@@ -43,6 +43,16 @@ public class Lang {
return sb.toString(); return sb.toString();
} }
public static <T> String joinVerb(List<T> subjects, String verb) {
// English is simple - just add (s) for multiple objects.
return subjects.size() > 1 ? verb : verb + "s";
}
public static <T> String joinNounToAmount(int cnt, String noun) {
// Simpliest check
return cnt > 1 ? noun : ( noun.endsWith("s") || noun.endsWith("x") ? noun + "es" : noun + "s");
}
/** /**
* TODO: Write javadoc for this method. * TODO: Write javadoc for this method.
* @param name * @param name