diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java index 3a1d0ae074c..98ac09a8074 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java @@ -1782,7 +1782,7 @@ public final class AbilityFactoryChangeZone { @Override public boolean apply(final Card c) { for (Card aura : c.getEnchantedBy()) { - if (c.getOwner().isHuman() && aura.getController().isComputer()) { + if (c.getOwner().isHuman() && aura.getController().equals(ai)) { return false; } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java index f24f9045807..6125a47551e 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java @@ -1714,7 +1714,7 @@ public class AbilityFactoryPermanentState { final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); - Player opp = ai.getOpponent(); + final Player opp = ai.getOpponent(); if (Singletons.getModel().getGame().getPhaseHandler().getPhase().isAfter(PhaseType.COMBAT_BEGIN)) { return false; @@ -1748,13 +1748,13 @@ public class AbilityFactoryPermanentState { final List human = CardLists.filter(validTappables, new Predicate() { @Override public boolean apply(final Card c) { - return c.getController().isHuman(); + return c.getController().equals(opp); } }); final List compy = CardLists.filter(validTappables, new Predicate() { @Override public boolean apply(final Card c) { - return c.getController().isComputer(); + return c.getController().equals(ai); } }); if (human.size() > compy.size()) { diff --git a/src/main/java/forge/control/FControl.java b/src/main/java/forge/control/FControl.java index f1db575fb6e..7b9a0021811 100644 --- a/src/main/java/forge/control/FControl.java +++ b/src/main/java/forge/control/FControl.java @@ -34,7 +34,6 @@ import javax.swing.WindowConstants; import forge.Singletons; import forge.control.KeyboardShortcuts.Shortcut; import forge.game.player.Player; -import forge.game.player.PlayerType; import forge.gui.deckeditor.CDeckEditorUI; import forge.gui.deckeditor.VDeckEditorUI; import forge.gui.framework.SOverflowUtil; @@ -49,7 +48,6 @@ import forge.properties.ForgeProps; import forge.properties.NewConstants; import forge.quest.data.QuestPreferences.QPref; import forge.quest.io.QuestDataIO; -import forge.util.Aggregates; import forge.view.FView; /** @@ -270,11 +268,9 @@ public enum FControl { } /** @return {@link forge.game.player.Player} */ + private Player localPlayer; public Player getPlayer() { - if (Singletons.getModel() == null) - return null; - - return Aggregates.firstFieldEquals(Singletons.getModel().getGame().getPlayers(), Player.Accessors.FN_GET_TYPE, PlayerType.HUMAN); + return localPlayer; } /** @@ -287,4 +283,12 @@ public enum FControl { lobby = new Lobby(); return lobby; } + + /** + * TODO: Write javadoc for this method. + * @param localHuman + */ + public void setPlayer(Player localHuman) { + localPlayer = localHuman; + } } diff --git a/src/main/java/forge/game/MatchController.java b/src/main/java/forge/game/MatchController.java index f18a928af97..35c4d1891fc 100644 --- a/src/main/java/forge/game/MatchController.java +++ b/src/main/java/forge/game/MatchController.java @@ -15,6 +15,7 @@ import forge.deck.Deck; import forge.error.ErrorViewer; import forge.game.player.LobbyPlayer; import forge.game.player.Player; +import forge.game.player.PlayerType; import forge.game.zone.ZoneType; import forge.gui.GuiInput; import forge.gui.framework.EDocID; @@ -28,6 +29,7 @@ import forge.gui.match.controllers.CStack; import forge.gui.match.nonsingleton.VField; import forge.gui.match.views.VAntes; import forge.properties.ForgePreferences.FPref; +import forge.util.Aggregates; /** * TODO: Write javadoc for this type. @@ -104,7 +106,8 @@ public class MatchController { startConditions.put(p, players.get(p.getLobbyPlayer())); try { - Player localHuman = Singletons.getControl().getPlayer(); + Player localHuman = Aggregates.firstFieldEquals(currentGame.getPlayers(), Player.Accessors.FN_GET_TYPE, PlayerType.HUMAN); + FControl.SINGLETON_INSTANCE.setPlayer(localHuman); CMatchUI.SINGLETON_INSTANCE.initMatch(currentGame.getPlayers(), localHuman); CDock.SINGLETON_INSTANCE.onGameStarts(currentGame, localHuman); Singletons.getModel().getPreferences().actuateMatchPreferences(); diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index daaface9543..63fd566823f 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -661,6 +661,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { * a {@link forge.game.player.Player} object. * @return a boolean. */ + @Deprecated public final boolean isNextTurn(final PlayerType pt) { final Player next = this.getNextTurn(); return next.getType() == pt; diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 6eda82ff775..5d5f8df16e7 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -186,6 +186,7 @@ public abstract class Player extends GameEntity implements Comparable { * * @return a boolean. */ + //@Deprecated public abstract boolean isComputer(); public abstract PlayerType getType();