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