From 78389e4d2e27c0121db0f33f97552449b9ccddb5 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Thu, 28 Mar 2013 21:29:41 +0000 Subject: [PATCH] +2 hardcoded inputs to synchronized --- .../card/cardfactory/CardFactoryUtil.java | 31 ------------- src/main/java/forge/game/phase/Upkeep.java | 10 +++-- src/main/java/forge/game/zone/MagicStack.java | 44 ++++--------------- 3 files changed, 16 insertions(+), 69 deletions(-) diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index b4006d8041d..777236a52bb 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -90,37 +90,6 @@ import forge.view.ButtonUtil; * @version $Id$ */ public class CardFactoryUtil { - /** - *

- * inputDestroyNoRegeneration. - *

- * - * @param choices - * a {@link forge.CardList} object. - * @param message - * a {@link java.lang.String} object. - * @return a {@link forge.control.input.InputBase} object. - */ - public static InputBase inputDestroyNoRegeneration(final List choices, final String message) { - final InputBase target = new InputBase() { - private static final long serialVersionUID = -6637588517573573232L; - - @Override - public void showMessage() { - CMatchUI.SINGLETON_INSTANCE.showMessage(message); - ButtonUtil.disableAll(); - } - - @Override - public void selectCard(final Card card) { - if (choices.contains(card)) { - Singletons.getModel().getGame().getAction().destroyNoRegeneration(card); - this.stop(); - } - } - }; - return target; - } // inputDestroyNoRegeneration() /** *

diff --git a/src/main/java/forge/game/phase/Upkeep.java b/src/main/java/forge/game/phase/Upkeep.java index a47ee780ef4..95a0ca79962 100644 --- a/src/main/java/forge/game/phase/Upkeep.java +++ b/src/main/java/forge/game/phase/Upkeep.java @@ -41,6 +41,7 @@ import forge.card.spellability.SpellAbility; import forge.control.input.InputBase; import forge.control.input.InputPayManaExecuteCommands; import forge.control.input.InputSelectCards; +import forge.control.input.InputSelectCardsFromList; import forge.game.GameActionUtil; import forge.game.GameState; import forge.game.ai.ComputerUtil; @@ -504,9 +505,12 @@ public class Upkeep extends Phase { CardLists.sortByPowerAsc(creatures); final int power = creatures.get(0).getNetAttack(); if (player.isHuman()) { - Singletons.getModel().getMatch().getInput().setInput( - CardFactoryUtil.inputDestroyNoRegeneration(this.getLowestPowerList(creatures), - "Select creature with power: " + power + " to sacrifice.")); + InputSelectCards inp = new InputSelectCardsFromList(1,1,this.getLowestPowerList(creatures)); + inp.setMessage("Select creature with power: " + power + " to sacrifice."); + FThreads.setInputAndWait(inp); + if(!inp.hasCancelled()) + game.getAction().destroyNoRegeneration(inp.getSelected().get(0)); + } else { // computer final Card compyTarget = this.getCompyCardToDestroy(creatures); game.getAction().destroyNoRegeneration(compyTarget); diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java index 65841382e94..037c94a5d4c 100644 --- a/src/main/java/forge/game/zone/MagicStack.java +++ b/src/main/java/forge/game/zone/MagicStack.java @@ -45,9 +45,10 @@ import forge.card.spellability.TargetChoices; import forge.card.spellability.TargetSelection; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; -import forge.control.input.InputBase; import forge.control.input.InputPayManaExecuteCommands; import forge.control.input.InputPayManaX; +import forge.control.input.InputSelectCards; +import forge.control.input.InputSelectCardsFromList; import forge.control.input.InputSynchronized; import forge.game.GameActionUtil; import forge.game.GameState; @@ -61,9 +62,7 @@ import forge.game.player.Player; import forge.gui.GuiChoose; import forge.gui.framework.EDocID; import forge.gui.framework.SDisplayUtil; -import forge.gui.match.CMatchUI; import forge.util.MyObservable; -import forge.view.ButtonUtil; /** *

@@ -717,44 +716,19 @@ public class MagicStack extends MyObservable { i--; } } - if (creats.size() != 0) { + if (!creats.isEmpty()) { haunterDiesWork.setDescription(""); - final InputBase target = new InputBase() { - private static final long serialVersionUID = 1981791992623774490L; - - @Override - public void showMessage() { - CMatchUI.SINGLETON_INSTANCE.showMessage("Choose target creature to haunt."); - ButtonUtil.disableAll(); - } - - @Override - public void selectCard(final Card c) { - Zone zone = Singletons.getModel().getGame().getZoneOf(c); - if (!zone.is(ZoneType.Battlefield) || !c.isCreature()) { - return; - } - if (c.canBeTargetedBy(haunterDiesWork)) { - haunterDiesWork.setTargetCard(c); - MagicStack.this.add(haunterDiesWork); - this.stop(); - } else { - CMatchUI.SINGLETON_INSTANCE.showMessage("Cannot target this card (Shroud? Protection?)."); - } - } - }; - if (source.getController().isHuman()) { - Singletons.getModel().getMatch().getInput().setInput(target); + final InputSelectCards targetHaunted = new InputSelectCardsFromList(1,1, creats); + targetHaunted.setMessage("Choose target creature to haunt."); + FThreads.setInputAndWait(targetHaunted); + haunterDiesWork.setTargetCard(targetHaunted.getSelected().get(0)); + MagicStack.this.add(haunterDiesWork); } else { // AI choosing what to haunt final List oppCreats = CardLists.filterControlledBy(creats, source.getController().getOpponents()); - if (oppCreats.size() != 0) { - haunterDiesWork.setTargetCard(ComputerUtilCard.getWorstCreatureAI(oppCreats)); - } else { - haunterDiesWork.setTargetCard(ComputerUtilCard.getWorstCreatureAI(creats)); - } + haunterDiesWork.setTargetCard(ComputerUtilCard.getWorstCreatureAI(oppCreats.isEmpty() ? creats : oppCreats)); this.add(haunterDiesWork); } }