From e179aa404ccbeb87259a25459b97a31bef6d7e3c Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Tue, 31 Dec 2013 05:53:06 +0000 Subject: [PATCH] setLife uses no gui --- .../src/main/java/forge/ai/AiController.java | 17 +++++++++++++++++ .../game/ability/effects/LifeSetEffect.java | 15 +-------------- .../forge/game/player/PlayerController.java | 1 + .../forge/game/player/PlayerControllerAi.java | 4 ++++ .../forge/gui/player/PlayerControllerHuman.java | 5 +++++ .../util/PlayerControllerForTests.java | 6 ++++++ 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/forge-gui/src/main/java/forge/ai/AiController.java b/forge-gui/src/main/java/forge/ai/AiController.java index d9d697e78ec..3e671905882 100644 --- a/forge-gui/src/main/java/forge/ai/AiController.java +++ b/forge-gui/src/main/java/forge/ai/AiController.java @@ -1089,6 +1089,23 @@ public class AiController { return library; } // smoothComputerManaCurve() + + public int chooseNumber(SpellAbility sa, String title,List options, Player relatedPlayer) { + switch(sa.getApi()) + { + case SetLife: + if (relatedPlayer.equals(sa.getSourceCard().getController())) { + return Collections.max(options); + } else if (relatedPlayer.isOpponentOf(sa.getSourceCard().getController())) { + return Collections.min(options); + } else { + return options.get(0); + } + default: + return 0; + } + } + } diff --git a/forge-gui/src/main/java/forge/game/ability/effects/LifeSetEffect.java b/forge-gui/src/main/java/forge/game/ability/effects/LifeSetEffect.java index 9f3cb5de79d..fd6e587e9a6 100644 --- a/forge-gui/src/main/java/forge/game/ability/effects/LifeSetEffect.java +++ b/forge-gui/src/main/java/forge/game/ability/effects/LifeSetEffect.java @@ -1,7 +1,6 @@ package forge.game.ability.effects; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import forge.game.ability.AbilityUtils; @@ -9,7 +8,6 @@ import forge.game.ability.SpellAbilityEffect; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; -import forge.gui.GuiChoose; public class LifeSetEffect extends SpellAbilityEffect { @@ -36,18 +34,7 @@ public class LifeSetEffect extends SpellAbilityEffect { if (!redistribute) { p.setLife(lifeAmount, sa.getSourceCard()); } else { - int life; - if (sa.getActivatingPlayer().isHuman()) { - life = GuiChoose.one("Life Total: " + p, lifetotals); - } else {//AI - if (p.equals(sa.getSourceCard().getController())) { - life = Collections.max(lifetotals); - } else if (p.isOpponentOf(sa.getSourceCard().getController())) { - life = Collections.min(lifetotals); - } else { - life = lifetotals.get(0); - } - } + int life = sa.getActivatingPlayer().getController().chooseNumber(sa, "Life Total: " + p, lifetotals, p); p.setLife(life, sa.getSourceCard()); lifetotals.remove((Integer) life); } diff --git a/forge-gui/src/main/java/forge/game/player/PlayerController.java b/forge-gui/src/main/java/forge/game/player/PlayerController.java index 1edaecdcd4b..b203b8dc969 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerController.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerController.java @@ -180,6 +180,7 @@ public abstract class PlayerController { public abstract boolean payManaOptional(Card card, Cost cost, SpellAbility sa, String prompt, ManaPaymentPurpose purpose); public abstract int chooseNumber(SpellAbility sa, String title, int min, int max); + public abstract int chooseNumber(SpellAbility sa, String title, List values, Player relatedPlayer); public final boolean chooseBinary(SpellAbility sa, String question, BinaryChoiceType kindOfChoice) { return chooseBinary(sa, question, kindOfChoice, null); } public abstract boolean chooseBinary(SpellAbility sa, String question, BinaryChoiceType kindOfChoice, Boolean defaultChioce); diff --git a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java index 443353f5948..acd481fdec5 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerControllerAi.java @@ -429,6 +429,10 @@ public class PlayerControllerAi extends PlayerController { public int chooseNumber(SpellAbility sa, String title, int min, int max) { return brains.chooseNumber(sa, title, min, max); } + + public int chooseNumber(SpellAbility sa, String title, List options, Player relatedPlayer) { + return brains.chooseNumber(sa, title, options, relatedPlayer); + } /* (non-Javadoc) * @see forge.game.player.PlayerController#chooseFlipResult(forge.Card, forge.game.player.Player, java.lang.String[], boolean) diff --git a/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java index 2cb2c1e2bdd..e309b77a378 100644 --- a/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java @@ -392,6 +392,11 @@ public class PlayerControllerHuman extends PlayerController { } return GuiChoose.one(title, choices).intValue(); } + + @Override + public int chooseNumber(SpellAbility sa, String title, List choices, Player relatedPlayer) { + return GuiChoose.one(title, choices).intValue(); + } @Override public SpellAbility chooseSingleSpellForEffect(java.util.List spells, SpellAbility sa, String title) { diff --git a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java index 450fca739e0..2a9cc03de40 100644 --- a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -556,4 +556,10 @@ public class PlayerControllerForTests extends PlayerController { // TODO Auto-generated method stub return losses; } + + @Override + public int chooseNumber(SpellAbility sa, String title, List values, Player relatedPlayer) { + // TODO Auto-generated method stub + return Iterables.getFirst(values, Integer.valueOf(0)); + } }