From 8ac2367468db3ade17f53db31fe0eca546eb410d Mon Sep 17 00:00:00 2001
From: Maxmtg
Date: Wed, 29 May 2013 13:40:42 +0000
Subject: [PATCH] move inputs to forge.gui.input DrawEffect.java - removed
isHuman, fixed description using Lang library
---
.gitattributes | 46 +++++++++----------
.../ability/effects/ChangeZoneEffect.java | 2 +-
.../effects/CountersProliferateEffect.java | 2 +-
.../card/ability/effects/DrawEffect.java | 43 +++++------------
.../card/ability/effects/UntapEffect.java | 4 +-
.../cardfactory/CardFactoryCreatures.java | 4 +-
.../cardfactory/CardFactorySorceries.java | 6 +--
.../card/cardfactory/CardFactoryUtil.java | 4 +-
.../java/forge/card/cost/CostDiscard.java | 4 +-
src/main/java/forge/card/cost/CostExile.java | 4 +-
.../java/forge/card/cost/CostPartMana.java | 6 +--
.../java/forge/card/cost/CostPutCounter.java | 2 +-
.../forge/card/cost/CostRemoveCounter.java | 2 +-
src/main/java/forge/card/cost/CostReturn.java | 4 +-
src/main/java/forge/card/cost/CostReveal.java | 4 +-
.../java/forge/card/cost/CostSacrifice.java | 4 +-
.../java/forge/card/cost/CostTapType.java | 4 +-
.../java/forge/card/cost/CostUntapType.java | 4 +-
.../card/spellability/TargetSelection.java | 2 +-
src/main/java/forge/control/FControl.java | 1 -
.../forge/control/{input => }/InputQueue.java | 16 +++----
.../forge/control/input/package-info.java | 3 --
src/main/java/forge/game/ai/AiController.java | 9 ++++
src/main/java/forge/game/phase/Untap.java | 4 +-
src/main/java/forge/game/phase/Upkeep.java | 6 +--
.../java/forge/game/player/HumanPlay.java | 10 ++--
.../game/player/PlayerControllerHuman.java | 16 +++----
src/main/java/forge/game/zone/MagicStack.java | 6 +--
src/main/java/forge/gui/GuiDisplayUtil.java | 2 +-
src/main/java/forge/gui/InputProxy.java | 2 +-
.../forge/{control => gui}/input/Input.java | 2 +-
.../{control => gui}/input/InputAttack.java | 2 +-
.../{control => gui}/input/InputBase.java | 2 +-
.../{control => gui}/input/InputBlock.java | 2 +-
.../input/InputConfirmMulligan.java | 2 +-
.../{control => gui}/input/InputLockUI.java | 3 +-
.../input/InputPassPriority.java | 2 +-
.../{control => gui}/input/InputPayMana.java | 2 +-
.../input/InputPayManaExecuteCommands.java | 2 +-
.../input/InputPayManaOfCostPayment.java | 2 +-
.../input/InputPayManaSimple.java | 2 +-
.../{control => gui}/input/InputPayManaX.java | 2 +-
.../input/InputPlayOrDraw.java | 2 +-
.../input/InputProliferate.java | 2 +-
.../input/InputSelectCards.java | 2 +-
.../input/InputSelectCardsFromList.java | 2 +-
.../input/InputSelectMany.java | 2 +-
.../input/InputSelectManyBase.java | 2 +-
.../input/InputSelectTargets.java | 2 +-
.../input/InputSynchronized.java | 2 +-
.../input/InputSyncronizedBase.java | 2 +-
.../java/forge/gui/input/package-info.java | 3 ++
.../forge/gui/match/nonsingleton/CField.java | 4 +-
src/main/java/forge/util/Lang.java | 10 ++++
54 files changed, 141 insertions(+), 145 deletions(-)
rename src/main/java/forge/control/{input => }/InputQueue.java (90%)
delete mode 100644 src/main/java/forge/control/input/package-info.java
rename src/main/java/forge/{control => gui}/input/Input.java (87%)
rename src/main/java/forge/{control => gui}/input/InputAttack.java (99%)
rename src/main/java/forge/{control => gui}/input/InputBase.java (99%)
rename src/main/java/forge/{control => gui}/input/InputBlock.java (99%)
rename src/main/java/forge/{control => gui}/input/InputConfirmMulligan.java (99%)
rename src/main/java/forge/{control => gui}/input/InputLockUI.java (93%)
rename src/main/java/forge/{control => gui}/input/InputPassPriority.java (98%)
rename src/main/java/forge/{control => gui}/input/InputPayMana.java (96%)
rename src/main/java/forge/{control => gui}/input/InputPayManaExecuteCommands.java (99%)
rename src/main/java/forge/{control => gui}/input/InputPayManaOfCostPayment.java (95%)
rename src/main/java/forge/{control => gui}/input/InputPayManaSimple.java (99%)
rename src/main/java/forge/{control => gui}/input/InputPayManaX.java (96%)
rename src/main/java/forge/{control => gui}/input/InputPlayOrDraw.java (95%)
rename src/main/java/forge/{control => gui}/input/InputProliferate.java (95%)
rename src/main/java/forge/{control => gui}/input/InputSelectCards.java (89%)
rename src/main/java/forge/{control => gui}/input/InputSelectCardsFromList.java (93%)
rename src/main/java/forge/{control => gui}/input/InputSelectMany.java (83%)
rename src/main/java/forge/{control => gui}/input/InputSelectManyBase.java (95%)
rename src/main/java/forge/{control => gui}/input/InputSelectTargets.java (97%)
rename src/main/java/forge/{control => gui}/input/InputSynchronized.java (77%)
rename src/main/java/forge/{control => gui}/input/InputSyncronizedBase.java (94%)
create mode 100644 src/main/java/forge/gui/input/package-info.java
diff --git a/.gitattributes b/.gitattributes
index 9f6c37b61ba..4f74fad2a4c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -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/FControl.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/Lobby.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/deck/CardCollections.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/VSubmenuPlanechase.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/ControlWinLose.java -text
src/main/java/forge/gui/match/GauntletWinLose.java -text
diff --git a/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java b/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java
index ee2c3607780..52682724267 100644
--- a/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java
+++ b/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java
@@ -20,7 +20,6 @@ import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityStackInstance;
import forge.card.spellability.Target;
import forge.card.trigger.TriggerType;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player;
@@ -28,6 +27,7 @@ import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiDialog;
+import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates;
import forge.util.Lang;
diff --git a/src/main/java/forge/card/ability/effects/CountersProliferateEffect.java b/src/main/java/forge/card/ability/effects/CountersProliferateEffect.java
index c1dd16d8f48..98ab9860b34 100644
--- a/src/main/java/forge/card/ability/effects/CountersProliferateEffect.java
+++ b/src/main/java/forge/card/ability/effects/CountersProliferateEffect.java
@@ -12,9 +12,9 @@ import forge.GameEntity;
import forge.Singletons;
import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputProliferate;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputProliferate;
public class CountersProliferateEffect extends SpellAbilityEffect {
@Override
diff --git a/src/main/java/forge/card/ability/effects/DrawEffect.java b/src/main/java/forge/card/ability/effects/DrawEffect.java
index af321d7dfd4..98e32c26c57 100644
--- a/src/main/java/forge/card/ability/effects/DrawEffect.java
+++ b/src/main/java/forge/card/ability/effects/DrawEffect.java
@@ -13,6 +13,7 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiDialog;
+import forge.util.Lang;
public class DrawEffect extends SpellAbilityEffect {
@Override
@@ -23,20 +24,16 @@ public class DrawEffect extends SpellAbilityEffect {
if (!tgtPlayers.isEmpty()) {
- sb.append(StringUtils.join(tgtPlayers, " and "));
-
- int numCards = 1;
- if (sa.hasParam("NumCards")) {
- numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa);
- }
+ int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1;
+
+ sb.append(Lang.joinHomogenous(tgtPlayers));
if (tgtPlayers.size() > 1) {
sb.append(" each");
}
- sb.append(" draw");
- if (tgtPlayers.size() == 1) {
- sb.append("s");
- }
+ sb.append(Lang.joinVerb(tgtPlayers, "draw")).append(" ");
+
+ sb.append(numCards).append(Lang.joinNounToAmount(numCards, "card"));
sb.append(" (").append(numCards).append(")");
if (sa.hasParam("NextUpkeep")) {
@@ -52,10 +49,8 @@ public class DrawEffect extends SpellAbilityEffect {
@Override
public void resolve(SpellAbility sa) {
final Card source = sa.getSourceCard();
- int numCards = 1;
- if (sa.hasParam("NumCards")) {
- numCards = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa);
- }
+ int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("NumCards"), sa) : 1;
+
final Target tgt = sa.getTarget();
@@ -64,30 +59,16 @@ public class DrawEffect extends SpellAbilityEffect {
for (final Player p : getDefinedPlayersBeforeTargetOnes(sa)) {
if ((tgt == null) || p.canBeTargetedBy(sa)) {
- if (optional) {
- if (p.isComputer()) {
- if (numCards >= p.getCardsIn(ZoneType.Library).size()) {
- // AI shouldn't itself
- continue;
- }
- } else {
- final StringBuilder sb = new StringBuilder();
- sb.append("Do you want to draw ").append(numCards).append(" cards(s)");
+ if (optional && !p.getController().confirmAction(sa, null, "Do you want to draw " + numCards + " cards(s)?"))
+ continue;
- sb.append("?");
-
- if (!GuiDialog.confirm(sa.getSourceCard(), sb.toString())) {
- continue;
- }
- }
- }
//TODO: remove this deprecation exception
if (slowDraw) {
throw new RuntimeException("This api option is no longer supported. Please file a bug report with the card that threw this error.");
} else {
final List drawn = p.drawCards(numCards);
if (sa.hasParam("Reveal")) {
- GuiChoose.one("Revealing drawn cards", drawn);
+ p.getGame().getAction().reveal(drawn, p);
}
if (sa.hasParam("RememberDrawn")) {
for (final Card c : drawn) {
diff --git a/src/main/java/forge/card/ability/effects/UntapEffect.java b/src/main/java/forge/card/ability/effects/UntapEffect.java
index 25f135bfcca..934ef7f2a5c 100644
--- a/src/main/java/forge/card/ability/effects/UntapEffect.java
+++ b/src/main/java/forge/card/ability/effects/UntapEffect.java
@@ -12,11 +12,11 @@ import forge.card.ability.AbilityUtils;
import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
public class UntapEffect extends SpellAbilityEffect {
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java
index db905443f9c..8de4e8c80ee 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java
@@ -41,8 +41,6 @@ import forge.card.spellability.SpellPermanent;
import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCombat;
@@ -50,6 +48,8 @@ import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates;
/**
diff --git a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java
index 278092606ca..2269319866c 100644
--- a/src/main/java/forge/card/cardfactory/CardFactorySorceries.java
+++ b/src/main/java/forge/card/cardfactory/CardFactorySorceries.java
@@ -30,15 +30,15 @@ import forge.card.cost.Cost;
import forge.card.mana.ManaCost;
import forge.card.spellability.Spell;
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.ai.AiController;
import forge.game.player.Player;
import forge.game.player.PlayerControllerAi;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
+import forge.gui.input.InputPayManaExecuteCommands;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
*
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java
index 2045d41f21a..7c798bc1b04 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java
@@ -61,8 +61,6 @@ import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtilCard;
import forge.game.ai.ComputerUtilCost;
@@ -73,6 +71,8 @@ import forge.game.zone.PlayerZone;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates;
/**
diff --git a/src/main/java/forge/card/cost/CostDiscard.java b/src/main/java/forge/card/cost/CostDiscard.java
index 9812d97fdbc..357ba5fd10a 100644
--- a/src/main/java/forge/card/cost/CostDiscard.java
+++ b/src/main/java/forge/card/cost/CostDiscard.java
@@ -27,13 +27,13 @@ import forge.CardPredicates;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.AiController;
import forge.game.player.Player;
import forge.game.player.PlayerControllerAi;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
import forge.util.Aggregates;
/**
diff --git a/src/main/java/forge/card/cost/CostExile.java b/src/main/java/forge/card/cost/CostExile.java
index 5a4dabba3ae..3849bb1d11c 100644
--- a/src/main/java/forge/card/cost/CostExile.java
+++ b/src/main/java/forge/card/cost/CostExile.java
@@ -27,14 +27,14 @@ import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.SpellAbilityStackInstance;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiDialog;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
* The Class CostExile.
diff --git a/src/main/java/forge/card/cost/CostPartMana.java b/src/main/java/forge/card/cost/CostPartMana.java
index e60f16ae094..3ecf7d7ffa7 100644
--- a/src/main/java/forge/card/cost/CostPartMana.java
+++ b/src/main/java/forge/card/cost/CostPartMana.java
@@ -25,12 +25,12 @@ import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostBeingPaid;
import forge.card.mana.ManaCostShard;
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.ai.ComputerUtilMana;
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
diff --git a/src/main/java/forge/card/cost/CostPutCounter.java b/src/main/java/forge/card/cost/CostPutCounter.java
index c600ad3d015..0860ae674f9 100644
--- a/src/main/java/forge/card/cost/CostPutCounter.java
+++ b/src/main/java/forge/card/cost/CostPutCounter.java
@@ -27,11 +27,11 @@ import forge.CounterType;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
import forge.game.Game;
import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCards;
/**
* The Class CostPutCounter.
diff --git a/src/main/java/forge/card/cost/CostRemoveCounter.java b/src/main/java/forge/card/cost/CostRemoveCounter.java
index 9f65eb528b1..d0bec09f306 100644
--- a/src/main/java/forge/card/cost/CostRemoveCounter.java
+++ b/src/main/java/forge/card/cost/CostRemoveCounter.java
@@ -28,11 +28,11 @@ import forge.CounterType;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
import forge.game.Game;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
+import forge.gui.input.InputSelectCards;
/**
* The Class CostRemoveCounter.
diff --git a/src/main/java/forge/card/cost/CostReturn.java b/src/main/java/forge/card/cost/CostReturn.java
index 17ffd83fc7a..d8e033175e0 100644
--- a/src/main/java/forge/card/cost/CostReturn.java
+++ b/src/main/java/forge/card/cost/CostReturn.java
@@ -24,13 +24,13 @@ import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiDialog;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
* The Class CostReturn.
diff --git a/src/main/java/forge/card/cost/CostReveal.java b/src/main/java/forge/card/cost/CostReveal.java
index 9f69aaea5f9..4ba82400535 100644
--- a/src/main/java/forge/card/cost/CostReveal.java
+++ b/src/main/java/forge/card/cost/CostReveal.java
@@ -27,13 +27,13 @@ import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.AiController;
import forge.game.player.Player;
import forge.game.player.PlayerControllerAi;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
* The Class CostReveal.
diff --git a/src/main/java/forge/card/cost/CostSacrifice.java b/src/main/java/forge/card/cost/CostSacrifice.java
index 5fabfd2a2fe..4566a64d71d 100644
--- a/src/main/java/forge/card/cost/CostSacrifice.java
+++ b/src/main/java/forge/card/cost/CostSacrifice.java
@@ -24,13 +24,13 @@ import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiDialog;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
* The Class CostSacrifice.
diff --git a/src/main/java/forge/card/cost/CostTapType.java b/src/main/java/forge/card/cost/CostTapType.java
index 4cf6a665862..9de27ad8df5 100644
--- a/src/main/java/forge/card/cost/CostTapType.java
+++ b/src/main/java/forge/card/cost/CostTapType.java
@@ -28,12 +28,12 @@ import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
* The Class CostTapType.
diff --git a/src/main/java/forge/card/cost/CostUntapType.java b/src/main/java/forge/card/cost/CostUntapType.java
index a4e85c578f2..6958e6f2a50 100644
--- a/src/main/java/forge/card/cost/CostUntapType.java
+++ b/src/main/java/forge/card/cost/CostUntapType.java
@@ -24,12 +24,12 @@ import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.card.ability.AbilityUtils;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtil;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
* The Class CostUntapType.
diff --git a/src/main/java/forge/card/spellability/TargetSelection.java b/src/main/java/forge/card/spellability/TargetSelection.java
index 6f26cc4aba1..d86d03b6937 100644
--- a/src/main/java/forge/card/spellability/TargetSelection.java
+++ b/src/main/java/forge/card/spellability/TargetSelection.java
@@ -26,12 +26,12 @@ import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.ability.AbilityUtils;
-import forge.control.input.InputSelectTargets;
import forge.game.Game;
import forge.game.player.Player;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
+import forge.gui.input.InputSelectTargets;
import forge.util.Aggregates;
/**
diff --git a/src/main/java/forge/control/FControl.java b/src/main/java/forge/control/FControl.java
index 3242ea0f9b6..f96c5113854 100644
--- a/src/main/java/forge/control/FControl.java
+++ b/src/main/java/forge/control/FControl.java
@@ -37,7 +37,6 @@ import forge.Card;
import forge.Constant.Preferences;
import forge.Singletons;
import forge.control.KeyboardShortcuts.Shortcut;
-import forge.control.input.InputQueue;
import forge.game.Game;
import forge.game.ai.AiProfileUtil;
import forge.game.player.LobbyPlayer;
diff --git a/src/main/java/forge/control/input/InputQueue.java b/src/main/java/forge/control/InputQueue.java
similarity index 90%
rename from src/main/java/forge/control/input/InputQueue.java
rename to src/main/java/forge/control/InputQueue.java
index 09bc9f91f73..cb8344cc000 100644
--- a/src/main/java/forge/control/input/InputQueue.java
+++ b/src/main/java/forge/control/InputQueue.java
@@ -15,12 +15,15 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.control;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import forge.game.Game;
+import forge.gui.input.Input;
+import forge.gui.input.InputLockUI;
+import forge.gui.input.InputSynchronized;
import forge.util.MyObservable;
/**
@@ -43,13 +46,6 @@ public class InputQueue extends MyObservable implements java.io.Serializable {
inputLock = new InputLockUI(this);
}
- /**
- *
- * Getter for the field input.
- *
- *
- * @return a {@link forge.control.input.InputBase} object.
- */
public final Input getInput() {
return inputStack.isEmpty() ? null : this.inputStack.peek();
}
@@ -62,7 +58,7 @@ public class InputQueue extends MyObservable implements java.io.Serializable {
* @param update
* a boolean.
*/
- final void removeInput(Input inp) {
+ public final void removeInput(Input inp) {
Input topMostInput = inputStack.isEmpty() ? null : inputStack.pop();
if( topMostInput != inp )
@@ -75,7 +71,7 @@ public class InputQueue extends MyObservable implements java.io.Serializable {
* updateInput.
*
*
- * @return a {@link forge.control.input.InputBase} object.
+ * @return a {@link forge.gui.input.InputBase} object.
*/
public final Input getActualInput(Game game) {
Input topMost = inputStack.peek(); // incoming input to Control
diff --git a/src/main/java/forge/control/input/package-info.java b/src/main/java/forge/control/input/package-info.java
deleted file mode 100644
index 0411622c691..00000000000
--- a/src/main/java/forge/control/input/package-info.java
+++ /dev/null
@@ -1,3 +0,0 @@
-/** Forge Card Game. */
-package forge.control.input;
-
diff --git a/src/main/java/forge/game/ai/AiController.java b/src/main/java/forge/game/ai/AiController.java
index 542ecbe115c..f67eec2e503 100644
--- a/src/main/java/forge/game/ai/AiController.java
+++ b/src/main/java/forge/game/ai/AiController.java
@@ -35,6 +35,7 @@ import forge.CardPredicates;
import forge.CardPredicates.Presets;
import forge.Constant;
import forge.GameEntity;
+import forge.card.ability.AbilityUtils;
import forge.card.ability.ApiType;
import forge.card.cardfactory.CardFactoryUtil;
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
//and the pump isn't mandatory
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:
}
String exMsg = String.format("AI confirmAction does not know what to decide about %s API with %s mode.", api, mode);
diff --git a/src/main/java/forge/game/phase/Untap.java b/src/main/java/forge/game/phase/Untap.java
index a62dc5a5d25..a256e3bc9d5 100644
--- a/src/main/java/forge/game/phase/Untap.java
+++ b/src/main/java/forge/game/phase/Untap.java
@@ -30,13 +30,13 @@ import forge.Singletons;
import forge.CardPredicates.Presets;
import forge.CounterType;
import forge.GameEntity;
-import forge.control.input.InputSelectCards;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.ai.ComputerUtilCard;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.GuiDialog;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
*
diff --git a/src/main/java/forge/game/phase/Upkeep.java b/src/main/java/forge/game/phase/Upkeep.java
index 59cee163c5f..731cae4078e 100644
--- a/src/main/java/forge/game/phase/Upkeep.java
+++ b/src/main/java/forge/game/phase/Upkeep.java
@@ -37,9 +37,6 @@ import forge.card.spellability.Ability;
import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.AbilityStatic;
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.ai.ComputerUtil;
import forge.game.ai.ComputerUtilCard;
@@ -52,6 +49,9 @@ import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiDialog;
+import forge.gui.input.InputPayManaExecuteCommands;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
/**
*
diff --git a/src/main/java/forge/game/player/HumanPlay.java b/src/main/java/forge/game/player/HumanPlay.java
index 86582f46724..c20c3fbd296 100644
--- a/src/main/java/forge/game/player/HumanPlay.java
+++ b/src/main/java/forge/game/player/HumanPlay.java
@@ -39,16 +39,16 @@ import forge.card.spellability.Ability;
import forge.card.spellability.HumanPlaySpellAbility;
import forge.card.spellability.SpellAbility;
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.Game;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
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.
diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java
index d62c4f3a533..e0998fc54ca 100644
--- a/src/main/java/forge/game/player/PlayerControllerHuman.java
+++ b/src/main/java/forge/game/player/PlayerControllerHuman.java
@@ -19,14 +19,6 @@ import forge.card.replacement.ReplacementEffect;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
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.Deck;
import forge.deck.DeckSection;
@@ -37,6 +29,14 @@ import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiDialog;
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.item.CardPrinted;
import forge.util.TextUtil;
diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java
index 06fa1b36ac5..48b670f961c 100644
--- a/src/main/java/forge/game/zone/MagicStack.java
+++ b/src/main/java/forge/game/zone/MagicStack.java
@@ -50,9 +50,6 @@ import forge.card.spellability.Target;
import forge.card.spellability.TargetChoices;
import forge.card.trigger.Trigger;
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.Game;
import forge.game.ai.ComputerUtil;
@@ -62,6 +59,9 @@ import forge.game.event.GameEventSpellResolved;
import forge.game.player.HumanPlay;
import forge.game.player.Player;
import forge.gui.GuiChoose;
+import forge.gui.input.InputPayManaExecuteCommands;
+import forge.gui.input.InputSelectCards;
+import forge.gui.input.InputSelectCardsFromList;
import forge.util.MyObservable;
/**
diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java
index d4e53ad3249..04cb387c4f9 100644
--- a/src/main/java/forge/gui/GuiDisplayUtil.java
+++ b/src/main/java/forge/gui/GuiDisplayUtil.java
@@ -44,7 +44,6 @@ import forge.Singletons;
import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType;
-import forge.control.input.InputSelectCardsFromList;
import forge.game.Game;
import forge.game.GameType;
import forge.game.PlanarDice;
@@ -53,6 +52,7 @@ import forge.game.player.HumanPlay;
import forge.game.player.Player;
import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
+import forge.gui.input.InputSelectCardsFromList;
import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.item.IPaperCard;
diff --git a/src/main/java/forge/gui/InputProxy.java b/src/main/java/forge/gui/InputProxy.java
index f7b4171b432..2214fa6e9d1 100644
--- a/src/main/java/forge/gui/InputProxy.java
+++ b/src/main/java/forge/gui/InputProxy.java
@@ -24,9 +24,9 @@ import java.util.concurrent.atomic.AtomicReference;
import forge.Card;
import forge.FThreads;
import forge.Singletons;
-import forge.control.input.Input;
import forge.game.Game;
import forge.game.player.Player;
+import forge.gui.input.Input;
/**
*
diff --git a/src/main/java/forge/control/input/Input.java b/src/main/java/forge/gui/input/Input.java
similarity index 87%
rename from src/main/java/forge/control/input/Input.java
rename to src/main/java/forge/gui/input/Input.java
index d8d4fea2369..eda650c79b9 100644
--- a/src/main/java/forge/control/input/Input.java
+++ b/src/main/java/forge/gui/input/Input.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import forge.Card;
import forge.game.player.Player;
diff --git a/src/main/java/forge/control/input/InputAttack.java b/src/main/java/forge/gui/input/InputAttack.java
similarity index 99%
rename from src/main/java/forge/control/input/InputAttack.java
rename to src/main/java/forge/gui/input/InputAttack.java
index 7df21fe27e6..d9bad95d779 100644
--- a/src/main/java/forge/control/input/InputAttack.java
+++ b/src/main/java/forge/gui/input/InputAttack.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import java.util.HashSet;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputBase.java b/src/main/java/forge/gui/input/InputBase.java
similarity index 99%
rename from src/main/java/forge/control/input/InputBase.java
rename to src/main/java/forge/gui/input/InputBase.java
index 95be2f67020..b1be07c7ecf 100644
--- a/src/main/java/forge/control/input/InputBase.java
+++ b/src/main/java/forge/gui/input/InputBase.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import forge.Card;
import forge.game.phase.PhaseHandler;
diff --git a/src/main/java/forge/control/input/InputBlock.java b/src/main/java/forge/gui/input/InputBlock.java
similarity index 99%
rename from src/main/java/forge/control/input/InputBlock.java
rename to src/main/java/forge/gui/input/InputBlock.java
index 5e513f4bc84..9433590eb71 100644
--- a/src/main/java/forge/control/input/InputBlock.java
+++ b/src/main/java/forge/gui/input/InputBlock.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/main/java/forge/control/input/InputConfirmMulligan.java b/src/main/java/forge/gui/input/InputConfirmMulligan.java
similarity index 99%
rename from src/main/java/forge/control/input/InputConfirmMulligan.java
rename to src/main/java/forge/gui/input/InputConfirmMulligan.java
index d3e84dc36af..2996c489b05 100644
--- a/src/main/java/forge/control/input/InputConfirmMulligan.java
+++ b/src/main/java/forge/gui/input/InputConfirmMulligan.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputLockUI.java b/src/main/java/forge/gui/input/InputLockUI.java
similarity index 93%
rename from src/main/java/forge/control/input/InputLockUI.java
rename to src/main/java/forge/gui/input/InputLockUI.java
index 4587e5880c4..6432c6dd8dd 100644
--- a/src/main/java/forge/control/input/InputLockUI.java
+++ b/src/main/java/forge/gui/input/InputLockUI.java
@@ -1,10 +1,11 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.concurrent.atomic.AtomicInteger;
import forge.Card;
import forge.FThreads;
import forge.Singletons;
+import forge.control.InputQueue;
import forge.game.player.Player;
import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil;
diff --git a/src/main/java/forge/control/input/InputPassPriority.java b/src/main/java/forge/gui/input/InputPassPriority.java
similarity index 98%
rename from src/main/java/forge/control/input/InputPassPriority.java
rename to src/main/java/forge/gui/input/InputPassPriority.java
index d40d86f7dc3..1c1c90ee843 100644
--- a/src/main/java/forge/control/input/InputPassPriority.java
+++ b/src/main/java/forge/gui/input/InputPassPriority.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import forge.Card;
import forge.card.spellability.SpellAbility;
diff --git a/src/main/java/forge/control/input/InputPayMana.java b/src/main/java/forge/gui/input/InputPayMana.java
similarity index 96%
rename from src/main/java/forge/control/input/InputPayMana.java
rename to src/main/java/forge/gui/input/InputPayMana.java
index a37a07d9538..810ad5bd6de 100644
--- a/src/main/java/forge/control/input/InputPayMana.java
+++ b/src/main/java/forge/gui/input/InputPayMana.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputPayManaExecuteCommands.java b/src/main/java/forge/gui/input/InputPayManaExecuteCommands.java
similarity index 99%
rename from src/main/java/forge/control/input/InputPayManaExecuteCommands.java
rename to src/main/java/forge/gui/input/InputPayManaExecuteCommands.java
index 93f148220c7..90a1d868ed6 100644
--- a/src/main/java/forge/control/input/InputPayManaExecuteCommands.java
+++ b/src/main/java/forge/gui/input/InputPayManaExecuteCommands.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import forge.card.cost.Cost;
import forge.card.mana.ManaCost;
diff --git a/src/main/java/forge/control/input/InputPayManaOfCostPayment.java b/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java
similarity index 95%
rename from src/main/java/forge/control/input/InputPayManaOfCostPayment.java
rename to src/main/java/forge/gui/input/InputPayManaOfCostPayment.java
index 12390a59858..d7ed00c74c7 100644
--- a/src/main/java/forge/control/input/InputPayManaOfCostPayment.java
+++ b/src/main/java/forge/gui/input/InputPayManaOfCostPayment.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import forge.Card;
import forge.card.mana.ManaCostBeingPaid;
diff --git a/src/main/java/forge/control/input/InputPayManaSimple.java b/src/main/java/forge/gui/input/InputPayManaSimple.java
similarity index 99%
rename from src/main/java/forge/control/input/InputPayManaSimple.java
rename to src/main/java/forge/gui/input/InputPayManaSimple.java
index c66af677e9c..d554b2fc626 100644
--- a/src/main/java/forge/control/input/InputPayManaSimple.java
+++ b/src/main/java/forge/gui/input/InputPayManaSimple.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import forge.Card;
import forge.card.mana.ManaCostBeingPaid;
diff --git a/src/main/java/forge/control/input/InputPayManaX.java b/src/main/java/forge/gui/input/InputPayManaX.java
similarity index 96%
rename from src/main/java/forge/control/input/InputPayManaX.java
rename to src/main/java/forge/gui/input/InputPayManaX.java
index 0111bae6c56..cd31a813252 100644
--- a/src/main/java/forge/control/input/InputPayManaX.java
+++ b/src/main/java/forge/gui/input/InputPayManaX.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputPlayOrDraw.java b/src/main/java/forge/gui/input/InputPlayOrDraw.java
similarity index 95%
rename from src/main/java/forge/control/input/InputPlayOrDraw.java
rename to src/main/java/forge/gui/input/InputPlayOrDraw.java
index 6d8aeedfbf1..6cc4909c456 100644
--- a/src/main/java/forge/control/input/InputPlayOrDraw.java
+++ b/src/main/java/forge/gui/input/InputPlayOrDraw.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package forge.control.input;
+package forge.gui.input;
import forge.game.player.Player;
import forge.view.ButtonUtil;
diff --git a/src/main/java/forge/control/input/InputProliferate.java b/src/main/java/forge/gui/input/InputProliferate.java
similarity index 95%
rename from src/main/java/forge/control/input/InputProliferate.java
rename to src/main/java/forge/gui/input/InputProliferate.java
index 8e1ebd96f47..d8036925c49 100644
--- a/src/main/java/forge/control/input/InputProliferate.java
+++ b/src/main/java/forge/gui/input/InputProliferate.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/main/java/forge/control/input/InputSelectCards.java b/src/main/java/forge/gui/input/InputSelectCards.java
similarity index 89%
rename from src/main/java/forge/control/input/InputSelectCards.java
rename to src/main/java/forge/gui/input/InputSelectCards.java
index f9e436660ff..b19adab7e49 100644
--- a/src/main/java/forge/control/input/InputSelectCards.java
+++ b/src/main/java/forge/gui/input/InputSelectCards.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import forge.Card;
diff --git a/src/main/java/forge/control/input/InputSelectCardsFromList.java b/src/main/java/forge/gui/input/InputSelectCardsFromList.java
similarity index 93%
rename from src/main/java/forge/control/input/InputSelectCardsFromList.java
rename to src/main/java/forge/gui/input/InputSelectCardsFromList.java
index c65363b3a0d..f27bd2235cd 100644
--- a/src/main/java/forge/control/input/InputSelectCardsFromList.java
+++ b/src/main/java/forge/gui/input/InputSelectCardsFromList.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputSelectMany.java b/src/main/java/forge/gui/input/InputSelectMany.java
similarity index 83%
rename from src/main/java/forge/control/input/InputSelectMany.java
rename to src/main/java/forge/gui/input/InputSelectMany.java
index 427108d7088..a03a48b0657 100644
--- a/src/main/java/forge/control/input/InputSelectMany.java
+++ b/src/main/java/forge/gui/input/InputSelectMany.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputSelectManyBase.java b/src/main/java/forge/gui/input/InputSelectManyBase.java
similarity index 95%
rename from src/main/java/forge/control/input/InputSelectManyBase.java
rename to src/main/java/forge/gui/input/InputSelectManyBase.java
index 157c0ced342..534065d3dbd 100644
--- a/src/main/java/forge/control/input/InputSelectManyBase.java
+++ b/src/main/java/forge/gui/input/InputSelectManyBase.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputSelectTargets.java b/src/main/java/forge/gui/input/InputSelectTargets.java
similarity index 97%
rename from src/main/java/forge/control/input/InputSelectTargets.java
rename to src/main/java/forge/gui/input/InputSelectTargets.java
index 5e19b9a4192..dcff4019fe0 100644
--- a/src/main/java/forge/control/input/InputSelectTargets.java
+++ b/src/main/java/forge/gui/input/InputSelectTargets.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.HashMap;
import java.util.List;
diff --git a/src/main/java/forge/control/input/InputSynchronized.java b/src/main/java/forge/gui/input/InputSynchronized.java
similarity index 77%
rename from src/main/java/forge/control/input/InputSynchronized.java
rename to src/main/java/forge/gui/input/InputSynchronized.java
index 4ff5c7c3bfe..f1aca966008 100644
--- a/src/main/java/forge/control/input/InputSynchronized.java
+++ b/src/main/java/forge/gui/input/InputSynchronized.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
public interface InputSynchronized extends Input {
void awaitLatchRelease();
diff --git a/src/main/java/forge/control/input/InputSyncronizedBase.java b/src/main/java/forge/gui/input/InputSyncronizedBase.java
similarity index 94%
rename from src/main/java/forge/control/input/InputSyncronizedBase.java
rename to src/main/java/forge/gui/input/InputSyncronizedBase.java
index 5677687c9b3..660f197e380 100644
--- a/src/main/java/forge/control/input/InputSyncronizedBase.java
+++ b/src/main/java/forge/gui/input/InputSyncronizedBase.java
@@ -1,4 +1,4 @@
-package forge.control.input;
+package forge.gui.input;
import java.util.concurrent.CountDownLatch;
diff --git a/src/main/java/forge/gui/input/package-info.java b/src/main/java/forge/gui/input/package-info.java
new file mode 100644
index 00000000000..753795cab47
--- /dev/null
+++ b/src/main/java/forge/gui/input/package-info.java
@@ -0,0 +1,3 @@
+/** Forge Card Game. */
+package forge.gui.input;
+
diff --git a/src/main/java/forge/gui/match/nonsingleton/CField.java b/src/main/java/forge/gui/match/nonsingleton/CField.java
index 02eaf439b16..1351a099776 100644
--- a/src/main/java/forge/gui/match/nonsingleton/CField.java
+++ b/src/main/java/forge/gui/match/nonsingleton/CField.java
@@ -35,8 +35,6 @@ import forge.Singletons;
import forge.Constant.Preferences;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.SpellAbility;
-import forge.control.input.Input;
-import forge.control.input.InputPayMana;
import forge.game.Game;
import forge.game.player.HumanPlay;
import forge.game.player.LobbyPlayer;
@@ -44,6 +42,8 @@ import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.gui.ForgeAction.MatchConstants;
import forge.gui.framework.ICDoc;
+import forge.gui.input.Input;
+import forge.gui.input.InputPayMana;
import forge.gui.match.CMatchUI;
import forge.gui.match.controllers.CMessage;
import forge.gui.toolbox.FLabel;
diff --git a/src/main/java/forge/util/Lang.java b/src/main/java/forge/util/Lang.java
index 1044bec063d..ccf8b8424c0 100644
--- a/src/main/java/forge/util/Lang.java
+++ b/src/main/java/forge/util/Lang.java
@@ -42,7 +42,17 @@ public class Lang {
}
return sb.toString();
}
+
+ public static String joinVerb(List subjects, String verb) {
+ // English is simple - just add (s) for multiple objects.
+ return subjects.size() > 1 ? verb : verb + "s";
+ }
+ public static 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.
* @param name