From 14a0e6e3ac6243e4e688d4e95a1588a65b3d9fec Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Sun, 9 Feb 2014 20:22:15 +0000 Subject: [PATCH] by adding a bit ugly method to player controller, I've removed last isHuman check and the last reference from api executor to AI --- .../src/main/java/forge/ai/PlayerControllerAi.java | 9 +++++++++ .../forge/game/ability/effects/ChangeZoneEffect.java | 6 +----- .../src/main/java/forge/game/player/LobbyPlayer.java | 3 --- .../main/java/forge/game/player/PlayerController.java | 5 +++++ .../java/forge/gui/player/PlayerControllerHuman.java | 8 ++++++++ .../util/PlayerControllerForTests.java | 10 ++++++++++ 6 files changed, 33 insertions(+), 8 deletions(-) diff --git a/forge-game/src/main/java/forge/ai/PlayerControllerAi.java b/forge-game/src/main/java/forge/ai/PlayerControllerAi.java index 72c2987a438..c8a57d44447 100644 --- a/forge-game/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-game/src/main/java/forge/ai/PlayerControllerAi.java @@ -7,6 +7,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; +import forge.ai.ability.ChangeZoneAi; import forge.ai.ability.CharmAi; import forge.card.ColorSet; import forge.card.MagicColor; @@ -754,4 +755,12 @@ public class PlayerControllerAi extends PlayerController { return "Morphling"; } + @Override + public Card chooseSingleCardForZoneChange(ZoneType destination, + List origin, SpellAbility sa, List fetchList, + String selectPrompt, boolean b, Player decider) { + + return ChangeZoneAi.chooseCardToHiddenOriginChangeZone(destination, origin, sa, fetchList, player, decider); + } + } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 8a025323ed5..d1ef3d4166b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -3,7 +3,6 @@ package forge.game.ability.effects; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import forge.ai.ability.ChangeZoneAi; import forge.card.CardCharacteristicName; import forge.game.Game; import forge.game.GameEntity; @@ -735,10 +734,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } else if (sa.hasParam("Defined")) { c = Iterables.getFirst(fetchList, null); } else { - if (decider.getController().getLobbyPlayer().isHuman()) - c = decider.getController().chooseSingleEntityForEffect(fetchList, sa, selectPrompt, !sa.hasParam("Mandatory"), decider); - else - c = ChangeZoneAi.chooseCardToHiddenOriginChangeZone(destination, origin, sa, fetchList, player, decider); + c = decider.getController().chooseSingleCardForZoneChange(destination, origin, sa, fetchList, selectPrompt, !sa.hasParam("Mandatory"), decider); } if (c == null) { diff --git a/forge-game/src/main/java/forge/game/player/LobbyPlayer.java b/forge-game/src/main/java/forge/game/player/LobbyPlayer.java index 626331bc0aa..09ee76276b8 100644 --- a/forge-game/src/main/java/forge/game/player/LobbyPlayer.java +++ b/forge-game/src/main/java/forge/game/player/LobbyPlayer.java @@ -17,9 +17,6 @@ public abstract class LobbyPlayer implements IHasIcon { protected abstract PlayerType getType(); - @Deprecated - public boolean isHuman() { return getType() == PlayerType.HUMAN; } - protected final String name; protected String imageKey; private int avatarIndex = -1; diff --git a/forge-game/src/main/java/forge/game/player/PlayerController.java b/forge-game/src/main/java/forge/game/player/PlayerController.java index 08d8d366247..7b1dbcbf2aa 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerController.java +++ b/forge-game/src/main/java/forge/game/player/PlayerController.java @@ -2,6 +2,7 @@ package forge.game.player; import com.google.common.base.Predicate; import com.google.common.collect.Multimap; + import forge.card.ColorSet; import forge.card.mana.ManaCost; import forge.card.mana.ManaCostShard; @@ -29,6 +30,7 @@ import forge.game.trigger.Trigger; import forge.game.trigger.WrappedAbility; import forge.game.zone.ZoneType; import forge.item.PaperCard; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -227,6 +229,9 @@ public abstract class PlayerController { public abstract String chooseCardName(SpellAbility sa, Predicate cpp, String valid, String message); + // better to have this odd method than those if playerType comparison in ChangeZone + public abstract Card chooseSingleCardForZoneChange(ZoneType destination, List origin, SpellAbility sa, List fetchList, String selectPrompt, boolean b, Player decider); + } \ No newline at end of file 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 d3a8e71b480..6648f309ed8 100644 --- a/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/gui/player/PlayerControllerHuman.java @@ -5,6 +5,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; + import forge.Singletons; import forge.card.ColorSet; import forge.card.MagicColor; @@ -53,12 +54,14 @@ import forge.item.PaperCard; import forge.properties.ForgePreferences.FPref; import forge.util.Lang; import forge.util.TextUtil; + import org.apache.commons.lang3.Range; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import javax.swing.*; + import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.*; @@ -1087,4 +1090,9 @@ public class PlayerControllerHuman extends PlayerController { return cp.getName(); } } + + @Override + public Card chooseSingleCardForZoneChange(ZoneType destination, List origin, SpellAbility sa, List fetchList, String selectPrompt, boolean b, Player decider) { + return chooseSingleEntityForEffect(fetchList, sa, selectPrompt, b, decider); + } } 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 9ac2f2c9ca8..e71d485d53b 100644 --- a/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -3,6 +3,7 @@ package forge.gamesimulationtests.util; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Multimap; + import forge.ai.ComputerUtil; import forge.ai.ComputerUtilMana; import forge.ai.ability.ChangeZoneAi; @@ -45,6 +46,7 @@ import forge.gamesimulationtests.util.playeractions.*; import forge.gui.player.HumanPlay; import forge.item.PaperCard; import forge.util.MyRandom; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -586,4 +588,12 @@ public class PlayerControllerForTests extends PlayerController { // TODO Auto-generated method stub return null; } + + @Override + public Card chooseSingleCardForZoneChange(ZoneType destination, + List origin, SpellAbility sa, List fetchList, + String selectPrompt, boolean b, Player decider) { + // TODO Auto-generated method stub + return ChangeZoneAi.chooseCardToHiddenOriginChangeZone(destination, origin, sa, fetchList, player, decider); + } }