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.game.ai.ComputerUtilCard;
import forge.game.player.AIPlayer;
import forge.game.player.HumanPlayer;
import forge.game.player.Player;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
@@ -527,7 +528,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
if (decider instanceof AIPlayer) {
ChangeZoneAi.hiddenOriginResolveAI(decider, sa, player);
} else {
changeHiddenOriginResolveHuman(sa, player);
changeHiddenOriginResolveHuman((HumanPlayer)decider, sa, player);
}
}
}
@@ -544,7 +545,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
* @param player
* 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 List<Card> movedCards = new ArrayList<Card>();
final boolean defined = sa.hasParam("Defined");

View File

@@ -189,8 +189,11 @@ public final class InputSelectTargets extends InputSyncronizedBase {
addTarget(player);
}
void addTarget(GameEntity ge) {
private void addTarget(GameEntity ge) {
tgt.addTarget(ge);
if(ge instanceof Card) {
((Card) ge).setUsedToPay(true);
}
Integer val = targetDepth.get(ge);
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();
}
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();
}
boolean hasAllTargets() {
return tgt.isMaxTargetsChosen(sa.getSourceCard(), sa) || tgt.getStillToDivide() == 0;
private boolean hasAllTargets() {
return tgt.isMaxTargetsChosen(sa.getSourceCard(), sa) || ( tgt.getStillToDivide() == 0 && tgt.isDividedAsYouChoose());
}
}