InputSelectTargets - added targeted cards' highlighting, corrected target selection for divide as you choose

This commit is contained in:
Maxmtg
2013-04-01 20:56:37 +00:00
parent e1d6825341
commit 7666f67067
2 changed files with 22 additions and 6 deletions

View File

@@ -22,6 +22,7 @@ import forge.card.spellability.Target;
import forge.card.trigger.TriggerType; import forge.card.trigger.TriggerType;
import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCard;
import forge.game.player.AIPlayer; import forge.game.player.AIPlayer;
import forge.game.player.HumanPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.Zone; import forge.game.zone.Zone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -527,7 +528,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
if (decider instanceof AIPlayer) { if (decider instanceof AIPlayer) {
ChangeZoneAi.hiddenOriginResolveAI(decider, sa, player); ChangeZoneAi.hiddenOriginResolveAI(decider, sa, player);
} else { } else {
changeHiddenOriginResolveHuman(sa, player); changeHiddenOriginResolveHuman((HumanPlayer)decider, sa, player);
} }
} }
} }
@@ -544,7 +545,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
* @param player * @param player
* a {@link forge.game.player.Player} object. * a {@link forge.game.player.Player} object.
*/ */
private static void changeHiddenOriginResolveHuman(final SpellAbility sa, Player player) { private static void changeHiddenOriginResolveHuman(final HumanPlayer decider, final SpellAbility sa, Player player) {
final Card card = sa.getSourceCard(); final Card card = sa.getSourceCard();
final List<Card> movedCards = new ArrayList<Card>(); final List<Card> movedCards = new ArrayList<Card>();
final boolean defined = sa.hasParam("Defined"); final boolean defined = sa.hasParam("Defined");

View File

@@ -189,8 +189,11 @@ public final class InputSelectTargets extends InputSyncronizedBase {
addTarget(player); addTarget(player);
} }
void addTarget(GameEntity ge) { private void addTarget(GameEntity ge) {
tgt.addTarget(ge); tgt.addTarget(ge);
if(ge instanceof Card) {
((Card) ge).setUsedToPay(true);
}
Integer val = targetDepth.get(ge); Integer val = targetDepth.get(ge);
targetDepth.put(ge, val == null ? Integer.valueOf(1) : Integer.valueOf(val.intValue() + 1) ); targetDepth.put(ge, val == null ? Integer.valueOf(1) : Integer.valueOf(val.intValue() + 1) );
@@ -202,11 +205,23 @@ public final class InputSelectTargets extends InputSyncronizedBase {
this.showMessage(); this.showMessage();
} }
void done() { /* (non-Javadoc)
* @see forge.control.input.InputSyncronizedBase#afterStop()
*/
@Override
protected void afterStop() {
for(GameEntity c : targetDepth.keySet())
if( c instanceof Card)
((Card)c).setUsedToPay(false);
super.afterStop();
}
private void done() {
this.stop(); this.stop();
} }
boolean hasAllTargets() { private boolean hasAllTargets() {
return tgt.isMaxTargetsChosen(sa.getSourceCard(), sa) || tgt.getStillToDivide() == 0; return tgt.isMaxTargetsChosen(sa.getSourceCard(), sa) || ( tgt.getStillToDivide() == 0 && tgt.isDividedAsYouChoose());
} }
} }