diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java index 9525c72a756..0ada189912e 100644 --- a/src/main/java/forge/game/phase/CombatUtil.java +++ b/src/main/java/forge/game/phase/CombatUtil.java @@ -49,7 +49,6 @@ import forge.game.GameActionUtil; import forge.game.GameState; import forge.game.GlobalRuleChange; import forge.game.ai.ComputerUtil; -import forge.game.ai.ComputerUtilBlock; import forge.game.ai.ComputerUtilCard; import forge.game.ai.ComputerUtilCost; import forge.game.player.AIPlayer; @@ -58,7 +57,6 @@ import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; import forge.gui.GuiDialog; -import forge.gui.GuiUtils; import forge.gui.framework.EDocID; import forge.gui.framework.SDisplayUtil; import forge.gui.match.views.VCombat; @@ -432,21 +430,8 @@ public class CombatUtil { if (blockers.size() <= 1) { continue; } - - List orderedBlockers = null; - if (player.isHuman()) { - GuiUtils.setPanelSelection(attacker); - List ordered = GuiChoose.order("Choose Blocking Order", "Damaged First", 0, blockers, null, attacker); - - orderedBlockers = new ArrayList(); - for (Object o : ordered) { - orderedBlockers.add((Card) o); - } - } - else { - orderedBlockers = ComputerUtilBlock.orderBlockers(attacker, blockers); - } - combat.setBlockerList(attacker, orderedBlockers); + List orderedBlockers = player.getController().orderBlockers(attacker, blockers); + combat.setBlockerList(attacker, orderedBlockers); } CombatUtil.showCombat(); // Refresh Combat Panel @@ -460,19 +445,7 @@ public class CombatUtil { continue; } - List orderedAttacker = null; - if (blocker.getController().isHuman()) { - GuiUtils.setPanelSelection(blocker); - List ordered = GuiChoose.order("Choose Blocking Order", "Damaged First", 0, attackers, null, blocker); - - orderedAttacker = new ArrayList(); - for (Object o : ordered) { - orderedAttacker.add((Card) o); - } - } - else { - orderedAttacker = ComputerUtilBlock.orderAttackers(blocker, attackers); - } + List orderedAttacker = blocker.getController().getController().orderAttackers(blocker, attackers); combat.setAttackersBlockedByList(blocker, orderedAttacker); } CombatUtil.showCombat(); diff --git a/src/main/java/forge/game/player/PlayerController.java b/src/main/java/forge/game/player/PlayerController.java index 60fc5ab4808..91092f71e57 100644 --- a/src/main/java/forge/game/player/PlayerController.java +++ b/src/main/java/forge/game/player/PlayerController.java @@ -97,4 +97,7 @@ public abstract class PlayerController { public abstract boolean confirmAction(SpellAbility sa, String mode, String message); public abstract boolean getWillPlayOnFirstTurn(String message); public abstract boolean confirmStaticApplication(Card hostCard, GameEntity affected, String logic, String message); + + public abstract List orderBlockers(Card attacker, List blockers); + public abstract List orderAttackers(Card blocker, List attackers); } diff --git a/src/main/java/forge/game/player/PlayerControllerAi.java b/src/main/java/forge/game/player/PlayerControllerAi.java index 89b9daaf663..de9e1477167 100644 --- a/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/src/main/java/forge/game/player/PlayerControllerAi.java @@ -15,6 +15,7 @@ import forge.game.ai.AiController; import forge.game.ai.AiInputBlock; import forge.game.ai.AiInputCommon; import forge.game.ai.ComputerUtil; +import forge.game.ai.ComputerUtilBlock; import forge.game.ai.ComputerUtilCombat; import forge.gui.GuiChoose; @@ -208,4 +209,14 @@ public class PlayerControllerAi extends PlayerController { return brains.confirmStaticApplication(hostCard, affected, logic, message); } + @Override + public List orderBlockers(Card attacker, List blockers) { + return ComputerUtilBlock.orderBlockers(attacker, blockers); + } + + @Override + public List orderAttackers(Card blocker, List attackers) { + return ComputerUtilBlock.orderAttackers(blocker, attackers); + } + } diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java index e749b87b238..0ed479af529 100644 --- a/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -22,6 +22,7 @@ import forge.game.GameType; import forge.game.phase.PhaseType; import forge.gui.GuiChoose; import forge.gui.GuiDialog; +import forge.gui.GuiUtils; import forge.gui.match.CMatchUI; import forge.item.CardPrinted; @@ -260,4 +261,16 @@ public class PlayerControllerHuman extends PlayerController { return !playDraw.equals(1); } + + @Override + public List orderBlockers(Card attacker, List blockers) { + GuiUtils.setPanelSelection(attacker); + return GuiChoose.order("Choose Blocking Order", "Damaged First", 0, blockers, null, attacker); + } + + @Override + public List orderAttackers(Card blocker, List attackers) { + GuiUtils.setPanelSelection(blocker); + return GuiChoose.order("Choose Blocking Order", "Damaged First", 0, attackers, null, blocker); + } }