+2 hardcoded inputs to synchronized

This commit is contained in:
Maxmtg
2013-03-28 21:29:41 +00:00
parent b07e940665
commit 78389e4d2e
3 changed files with 16 additions and 69 deletions

View File

@@ -90,37 +90,6 @@ import forge.view.ButtonUtil;
* @version $Id$ * @version $Id$
*/ */
public class CardFactoryUtil { public class CardFactoryUtil {
/**
* <p>
* inputDestroyNoRegeneration.
* </p>
*
* @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<Card> 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()
/** /**
* <p> * <p>

View File

@@ -41,6 +41,7 @@ import forge.card.spellability.SpellAbility;
import forge.control.input.InputBase; import forge.control.input.InputBase;
import forge.control.input.InputPayManaExecuteCommands; import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputSelectCards; import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.game.GameActionUtil; import forge.game.GameActionUtil;
import forge.game.GameState; import forge.game.GameState;
import forge.game.ai.ComputerUtil; import forge.game.ai.ComputerUtil;
@@ -504,9 +505,12 @@ public class Upkeep extends Phase {
CardLists.sortByPowerAsc(creatures); CardLists.sortByPowerAsc(creatures);
final int power = creatures.get(0).getNetAttack(); final int power = creatures.get(0).getNetAttack();
if (player.isHuman()) { if (player.isHuman()) {
Singletons.getModel().getMatch().getInput().setInput( InputSelectCards inp = new InputSelectCardsFromList(1,1,this.getLowestPowerList(creatures));
CardFactoryUtil.inputDestroyNoRegeneration(this.getLowestPowerList(creatures), inp.setMessage("Select creature with power: " + power + " to sacrifice.");
"Select creature with power: " + power + " to sacrifice.")); FThreads.setInputAndWait(inp);
if(!inp.hasCancelled())
game.getAction().destroyNoRegeneration(inp.getSelected().get(0));
} else { // computer } else { // computer
final Card compyTarget = this.getCompyCardToDestroy(creatures); final Card compyTarget = this.getCompyCardToDestroy(creatures);
game.getAction().destroyNoRegeneration(compyTarget); game.getAction().destroyNoRegeneration(compyTarget);

View File

@@ -45,9 +45,10 @@ import forge.card.spellability.TargetChoices;
import forge.card.spellability.TargetSelection; import forge.card.spellability.TargetSelection;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.control.input.InputBase;
import forge.control.input.InputPayManaExecuteCommands; import forge.control.input.InputPayManaExecuteCommands;
import forge.control.input.InputPayManaX; import forge.control.input.InputPayManaX;
import forge.control.input.InputSelectCards;
import forge.control.input.InputSelectCardsFromList;
import forge.control.input.InputSynchronized; import forge.control.input.InputSynchronized;
import forge.game.GameActionUtil; import forge.game.GameActionUtil;
import forge.game.GameState; import forge.game.GameState;
@@ -61,9 +62,7 @@ import forge.game.player.Player;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.framework.EDocID; import forge.gui.framework.EDocID;
import forge.gui.framework.SDisplayUtil; import forge.gui.framework.SDisplayUtil;
import forge.gui.match.CMatchUI;
import forge.util.MyObservable; import forge.util.MyObservable;
import forge.view.ButtonUtil;
/** /**
* <p> * <p>
@@ -717,44 +716,19 @@ public class MagicStack extends MyObservable {
i--; i--;
} }
} }
if (creats.size() != 0) { if (!creats.isEmpty()) {
haunterDiesWork.setDescription(""); 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()) { 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 { } else {
// AI choosing what to haunt // AI choosing what to haunt
final List<Card> oppCreats = CardLists.filterControlledBy(creats, source.getController().getOpponents()); final List<Card> oppCreats = CardLists.filterControlledBy(creats, source.getController().getOpponents());
if (oppCreats.size() != 0) { haunterDiesWork.setTargetCard(ComputerUtilCard.getWorstCreatureAI(oppCreats.isEmpty() ? creats : oppCreats));
haunterDiesWork.setTargetCard(ComputerUtilCard.getWorstCreatureAI(oppCreats));
} else {
haunterDiesWork.setTargetCard(ComputerUtilCard.getWorstCreatureAI(creats));
}
this.add(haunterDiesWork); this.add(haunterDiesWork);
} }
} }