From 7fd61015a36a59df23cc0c44a6a8795809ae1aa1 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 27 May 2013 10:04:18 +0000 Subject: [PATCH] =?UTF-8?q?Player=20has=20lobbyPlayerCreator,=20actual=20l?= =?UTF-8?q?obbyPlayer=20is=20calculated=20from=20whatever=20is=20written?= =?UTF-8?q?=20in=20player.=D1=81ontroller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/forge/game/player/LobbyPlayerAi.java | 2 +- src/main/java/forge/game/player/LobbyPlayerHuman.java | 2 +- src/main/java/forge/game/player/Player.java | 10 +++++++--- src/main/java/forge/game/player/PlayerController.java | 7 +++++-- .../java/forge/game/player/PlayerControllerAi.java | 4 ++-- .../java/forge/game/player/PlayerControllerHuman.java | 4 ++-- src/main/java/forge/gui/match/controllers/CDock.java | 3 +-- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/forge/game/player/LobbyPlayerAi.java b/src/main/java/forge/game/player/LobbyPlayerAi.java index bf235ea5013..fa61b0d1a63 100644 --- a/src/main/java/forge/game/player/LobbyPlayerAi.java +++ b/src/main/java/forge/game/player/LobbyPlayerAi.java @@ -28,7 +28,7 @@ public class LobbyPlayerAi extends LobbyPlayer { @Override public Player getPlayer(GameState game) { Player ai = new Player(this, game); - ai.setController(new PlayerControllerAi(game, ai)); + ai.setController(new PlayerControllerAi(game, ai, this)); String currentAiProfile = Singletons.getModel().getPreferences().getPref(FPref.UI_CURRENT_AI_PROFILE); String lastProfileChosen = game.getMatch().getPlayedGames().isEmpty() ? currentAiProfile : getAiProfile(); diff --git a/src/main/java/forge/game/player/LobbyPlayerHuman.java b/src/main/java/forge/game/player/LobbyPlayerHuman.java index 586391b52f9..446d10371c5 100644 --- a/src/main/java/forge/game/player/LobbyPlayerHuman.java +++ b/src/main/java/forge/game/player/LobbyPlayerHuman.java @@ -16,7 +16,7 @@ public class LobbyPlayerHuman extends LobbyPlayer { @Override public Player getPlayer(GameState game) { Player player = new Player(this, game); - player.setController(new PlayerControllerHuman(game, player)); + player.setController(new PlayerControllerHuman(game, player, this)); return player; } diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 9b2aade3072..9c70ed8ec50 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -163,7 +163,7 @@ public class Player extends GameEntity implements Comparable { private PlayerStatistics stats = new PlayerStatistics(); protected PlayerController controller; - private final LobbyPlayer lobbyPlayer; + private final LobbyPlayer lobbyPlayerCreator; private int teamNumber = -1; private Card activeScheme = null; @@ -200,7 +200,7 @@ public class Player extends GameEntity implements Comparable { this.zones.put(z, toPut); } this.setName(chooseName(lobby)); - this.lobbyPlayer = lobby; + this.lobbyPlayerCreator = lobby; } private String chooseName(LobbyPlayer lobby) { @@ -2739,7 +2739,11 @@ public class Player extends GameEntity implements Comparable { * @return */ public final LobbyPlayer getLobbyPlayer() { - return lobbyPlayer; + return getController().getLobbyPlayer(); + } + + public final boolean isMindSlaved() { + return getController().getLobbyPlayer() != lobbyPlayerCreator; } private void setOutcome(PlayerOutcome outcome) { diff --git a/src/main/java/forge/game/player/PlayerController.java b/src/main/java/forge/game/player/PlayerController.java index 19cb937ca2e..30bb3628d65 100644 --- a/src/main/java/forge/game/player/PlayerController.java +++ b/src/main/java/forge/game/player/PlayerController.java @@ -35,10 +35,12 @@ public abstract class PlayerController { private PhaseType autoPassUntil = null; private final Input autoPassPriorityInput; protected final Player player; + protected final LobbyPlayer lobbyPlayer; - public PlayerController(GameState game0, Player p) { + public PlayerController(GameState game0, Player p, LobbyPlayer lp) { game = game0; player = p; + lobbyPlayer = lp; autoPassPriorityInput = new InputAutoPassPriority(player); } @@ -90,7 +92,8 @@ public abstract class PlayerController { // End of Triggers preliminary choice - + public LobbyPlayer getLobbyPlayer() { return lobbyPlayer; } + /** * Uses GUI to learn which spell the player (human in our case) would like to play */ diff --git a/src/main/java/forge/game/player/PlayerControllerAi.java b/src/main/java/forge/game/player/PlayerControllerAi.java index b310630b218..ea863b5d5ff 100644 --- a/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/src/main/java/forge/game/player/PlayerControllerAi.java @@ -46,8 +46,8 @@ public class PlayerControllerAi extends PlayerController { private final AiController brains; - public PlayerControllerAi(GameState game, Player p) { - super(game, p); + public PlayerControllerAi(GameState game, Player p, LobbyPlayer lp) { + super(game, p, lp); brains = new AiController(p, game); diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java index 0d939ed5cb2..c7b57d828ff 100644 --- a/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -53,8 +53,8 @@ public class PlayerControllerHuman extends PlayerController { private final Input blockInput; private final Input cleanupInput; - public PlayerControllerHuman(GameState game0, Player p) { - super(game0, p); + public PlayerControllerHuman(GameState game0, Player p, LobbyPlayer lp) { + super(game0, p, lp); defaultInput = new InputPassPriority(player); blockInput = new InputBlock(player, game0); cleanupInput = new InputCleanup(player); diff --git a/src/main/java/forge/gui/match/controllers/CDock.java b/src/main/java/forge/gui/match/controllers/CDock.java index 5b281b1eac6..b7b60118c71 100644 --- a/src/main/java/forge/gui/match/controllers/CDock.java +++ b/src/main/java/forge/gui/match/controllers/CDock.java @@ -81,8 +81,7 @@ public enum CDock implements ICDoc { } final Player p = findAffectedPlayer(); - if( p == null ) return; - // if( c.isMindSlaved() ) return + if( p == null || p.isMindSlaved() ) return; game.getInputQueue().invokeGameAction(new Runnable() { @Override