From 361b0b69d9df5ae0416515f07152c0d30ddc5ee4 Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 27 Nov 2014 03:27:33 +0000 Subject: [PATCH] Support using Shift+click to attack with an entire stack of creatures --- .../java/forge/match/input/InputAttack.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/forge-gui/src/main/java/forge/match/input/InputAttack.java b/forge-gui/src/main/java/forge/match/input/InputAttack.java index d08e781f0eb..7014429fada 100644 --- a/forge-gui/src/main/java/forge/match/input/InputAttack.java +++ b/forge-gui/src/main/java/forge/match/input/InputAttack.java @@ -156,6 +156,11 @@ public class InputAttack extends InputSyncronizedBase { final List att = combat.getAttackers(); if (triggerEvent != null && triggerEvent.getButton() == 3 && att.contains(card)) { undeclareAttacker(card); + if (otherCardsToSelect != null) { + for (Card c : otherCardsToSelect) { + undeclareAttacker(c); + } + } updateMessage(); return true; } @@ -172,8 +177,12 @@ public class InputAttack extends InputSyncronizedBase { } else { // Join a band by selecting a non-active band member after activating a band if (activeBand.canJoinBand(card)) { - combat.removeFromCombat(card); declareAttacker(card); + if (otherCardsToSelect != null) { + for (Card c : otherCardsToSelect) { + declareAttacker(c); + } + } } else { validAction = false; @@ -183,6 +192,11 @@ public class InputAttack extends InputSyncronizedBase { else { //if banding not possible, just undeclare attacker undeclareAttacker(card); + if (otherCardsToSelect != null) { + for (Card c : otherCardsToSelect) { + undeclareAttacker(c); + } + } } updateMessage(); @@ -203,11 +217,13 @@ public class InputAttack extends InputSyncronizedBase { return false; } - if (combat.isAttacking(card)) { - combat.removeFromCombat(card); + declareAttacker(card); + if (otherCardsToSelect != null) { + for (Card c : otherCardsToSelect) { + declareAttacker(c); + } } - declareAttacker(card); updateMessage(); return true; } @@ -216,6 +232,7 @@ public class InputAttack extends InputSyncronizedBase { } private void declareAttacker(final Card card) { + combat.removeFromCombat(card); combat.addAttacker(card, currentDefender, activeBand); activateBand(activeBand);