TangleWires input updated

This commit is contained in:
Maxmtg
2013-03-29 05:51:23 +00:00
parent 2fee08bfe6
commit 8a20bafd67
2 changed files with 17 additions and 43 deletions

View File

@@ -10,7 +10,7 @@ public class InputSelectCardsFromList extends InputSelectCards {
private final List<Card> validChoices; private final List<Card> validChoices;
public InputSelectCardsFromList(int min, int max, List<Card> validCards) { public InputSelectCardsFromList(int min, int max, List<Card> validCards) {
super(min, max); super(min, Math.min(max, validCards.size())); // to avoid hangs
this.validChoices = validCards; this.validChoices = validCards;
} }

View File

@@ -29,7 +29,6 @@ import forge.CardPredicates;
import forge.FThreads; import forge.FThreads;
import forge.CardPredicates.Presets; import forge.CardPredicates.Presets;
import forge.CounterType; import forge.CounterType;
import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
@@ -38,7 +37,6 @@ import forge.card.spellability.Ability;
import forge.card.spellability.AbilityManaPart; import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.AbilityStatic; import forge.card.spellability.AbilityStatic;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.control.input.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.control.input.InputSelectCardsFromList;
@@ -52,12 +50,9 @@ import forge.game.ai.ComputerUtilMana;
import forge.game.player.AIPlayer; import forge.game.player.AIPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.match.CMatchUI;
import forge.view.ButtonUtil;
/** /**
* <p> * <p>
@@ -969,15 +964,14 @@ public class Upkeep extends Phase {
@Override @Override
public void resolve() { public void resolve() {
final int num = source.getCounters(CounterType.FADE); final int num = source.getCounters(CounterType.FADE);
final List<Card> list = CardLists.filter(player.getCardsIn(ZoneType.Battlefield), new Predicate<Card>() { final List<Card> list = new ArrayList<Card>();
@Override for( Card c : player.getCardsIn(ZoneType.Battlefield)) {
public boolean apply(final Card c) { if ((c.isArtifact() || c.isLand() || c.isCreature()) && c.isUntapped())
return (c.isArtifact() || c.isLand() || c.isCreature()) && c.isUntapped(); list.add(c);
} }
});
for (int i = 0; i < num; i++) { if (player.isComputer()) {
if (player.isComputer()) { for (int i = 0; i < num; i++) {
Card toTap = ComputerUtilCard.getWorstPermanentAI(list, false, false, false, false); Card toTap = ComputerUtilCard.getWorstPermanentAI(list, false, false, false, false);
// try to find non creature cards without tap abilities // try to find non creature cards without tap abilities
List<Card> betterList = CardLists.filter(list, new Predicate<Card>() { List<Card> betterList = CardLists.filter(list, new Predicate<Card>() {
@@ -1002,39 +996,19 @@ public class Upkeep extends Phase {
toTap.tap(); toTap.tap();
list.remove(toTap); list.remove(toTap);
} }
} else {
Singletons.getModel().getMatch().getInput().setInput(new InputBase() {
private static final long serialVersionUID = 5313424586016061612L;
@Override
public void showMessage() {
if (list.isEmpty()) {
this.stop();
return;
}
String message = String.format("%s - Select %d untapped artifact(s), creature(s), or land(s) you control", source.getName(), num);
CMatchUI.SINGLETON_INSTANCE.showMessage(message);
ButtonUtil.disableAll();
}
@Override
public void selectCard(final Card card) {
Zone zone = game.getZoneOf(card);
if (zone.is(ZoneType.Battlefield, player) && list.contains(card)) {
card.tap();
list.remove(card);
this.stop();
}
}
});
} }
} else {
InputSelectCards inp = new InputSelectCardsFromList(num, num, list);
inp.setMessage(source.getName() + " - Select %d untapped artifact(s), creature(s), or land(s) you control");
FThreads.setInputAndWait(inp);
for(Card crd : inp.getSelected())
crd.tap();
} }
} }
}; };
ability.setStackDescription(source.getName() + " - " + player String message = source.getName() + " - " + player + " taps X artifacts, creatures or lands he or she controls.";
+ " taps X artifacts, creatures or lands he or she controls."); ability.setStackDescription(message);
ability.setDescription(source.getName() + " - " + player ability.setDescription(message);
+ " taps X artifacts, creatures or lands he or she controls.");
ability.setActivatingPlayer(source.getController()); ability.setActivatingPlayer(source.getController());
game.getStack().addSimultaneousStackEntry(ability); game.getStack().addSimultaneousStackEntry(ability);