Remove global Player cache, instead make it hang off the Game object.

This commit is contained in:
Myrd
2014-12-16 21:55:33 +00:00
parent 6be85a1741
commit 30fb451a45
20 changed files with 99 additions and 68 deletions

View File

@@ -100,7 +100,7 @@ public class InputProxy implements Observer {
public final void selectPlayer(final PlayerView playerView, final ITriggerEvent triggerEvent) {
final Input inp = getInput();
if (inp != null) {
final Player player = Player.get(playerView);
final Player player = controller.getGame().getPlayer(playerView);
if (player != null) {
inp.selectPlayer(player, triggerEvent);
}

View File

@@ -22,7 +22,6 @@ import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import forge.game.Game;
import forge.game.player.Player;
import forge.match.MatchUtil;
import forge.player.PlayerControllerHuman;
@@ -37,9 +36,11 @@ import forge.player.PlayerControllerHuman;
public class InputQueue extends Observable {
private final BlockingDeque<InputSynchronized> inputStack = new LinkedBlockingDeque<InputSynchronized>();
private final InputLockUI inputLock;
private final Game game;
public InputQueue(final Game game, final InputProxy inputProxy) {
inputLock = new InputLockUI(game, this);
this.game = game;
addObserver(inputProxy);
}
@@ -76,7 +77,7 @@ public class InputQueue extends Observable {
public void setInput(final InputSynchronized input) {
if (MatchUtil.getHumanCount() > 1) { //update current player if needed
MatchUtil.setCurrentPlayer(Player.get(input.getOwner()));
MatchUtil.setCurrentPlayer(game.getPlayer(input.getOwner()));
}
inputStack.push(input);
InputBase.waitForOtherPlayer();

View File

@@ -297,7 +297,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
if (nNeeded == 0) {
return PaymentDecision.number(0);
}
final Player p = Player.get(SGuiChoose.oneOrNone(String.format("Exile from whose %s?", cost.getFrom()), PlayerView.getCollection(payableZone)));
final Player p = controller.getGame().getPlayer(SGuiChoose.oneOrNone(String.format("Exile from whose %s?", cost.getFrom()), PlayerView.getCollection(payableZone)));
if (p == null) {
return null;
}
@@ -489,7 +489,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
final StringBuilder sb = new StringBuilder();
sb.append(source.getName()).append(" - Choose an opponent to gain ").append(c).append(" life:");
final Player chosenToGain = Player.get(SGuiChoose.oneOrNone(sb.toString(), PlayerView.getCollection(oppsThatCanGainLife)));
final Player chosenToGain = controller.getGame().getPlayer(SGuiChoose.oneOrNone(sb.toString(), PlayerView.getCollection(oppsThatCanGainLife)));
if (chosenToGain == null) {
return null;
}
@@ -614,7 +614,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
return PaymentDecision.number(0);
}
final Player p = Player.get(SGuiChoose.oneOrNone(String.format("Put cards from whose %s?", fromZone), PlayerView.getCollection(payableZone)));
final Player p = controller.getGame().getPlayer(SGuiChoose.oneOrNone(String.format("Put cards from whose %s?", fromZone), PlayerView.getCollection(payableZone)));
if (p == null) {
return null;
}

View File

@@ -524,7 +524,7 @@ public class HumanPlay {
payableZone.add(player);
}
}
Player chosen = Player.get(SGuiChoose.oneOrNone(String.format("Put cards from whose %s?", from), PlayerView.getCollection(payableZone)));
Player chosen = controller.getGame().getPlayer(SGuiChoose.oneOrNone(String.format("Put cards from whose %s?", from), PlayerView.getCollection(payableZone)));
if (chosen == null) {
return false;
}

View File

@@ -418,7 +418,13 @@ public class PlayerControllerHuman extends PlayerController {
final GameEntityView result = GuiBase.getInterface().chooseSingleEntityForEffect(title, optionList, delayedReveal, isOptional, this);
endTempShowCards(); //assume tempShow called by GuiBase.getInterface().chooseSingleEntityForEffect
return (T) GameEntity.get(result);
if (result instanceof CardView) {
return (T) Card.get((CardView)result);
}
if (result instanceof PlayerView) {
return (T) game.getPlayer((PlayerView)result);
}
return null;
}
@Override
@@ -1539,7 +1545,7 @@ public class PlayerControllerHuman extends PlayerController {
}
public void setPlayerLife() {
final Player player = Player.get(SGuiChoose.oneOrNone("Set life for which player?", PlayerView.getCollection(game.getPlayers())));
final Player player = game.getPlayer(SGuiChoose.oneOrNone("Set life for which player?", PlayerView.getCollection(game.getPlayers())));
if (player == null) { return; }
final Integer life = SGuiChoose.getInteger("Set life to what?", 0);
@@ -1569,7 +1575,7 @@ public class PlayerControllerHuman extends PlayerController {
}
public void addCardToHand() {
final Player p = Player.get(SGuiChoose.oneOrNone("Put card in hand for which player?", PlayerView.getCollection(game.getPlayers())));
final Player p = game.getPlayer(SGuiChoose.oneOrNone("Put card in hand for which player?", PlayerView.getCollection(game.getPlayers())));
if (p == null) {
return;
}
@@ -1589,7 +1595,7 @@ public class PlayerControllerHuman extends PlayerController {
}
public void addCardToBattlefield() {
final Player p = Player.get(SGuiChoose.oneOrNone("Put card in play for which player?", PlayerView.getCollection(game.getPlayers())));
final Player p = game.getPlayer(SGuiChoose.oneOrNone("Put card in play for which player?", PlayerView.getCollection(game.getPlayers())));
if (p == null) {
return;
}
@@ -1637,7 +1643,7 @@ public class PlayerControllerHuman extends PlayerController {
}
public void riggedPlanarRoll() {
final Player player = Player.get(SGuiChoose.oneOrNone("Which player should roll?", PlayerView.getCollection(game.getPlayers())));
final Player player = game.getPlayer(SGuiChoose.oneOrNone("Which player should roll?", PlayerView.getCollection(game.getPlayers())));
if (player == null) { return; }
final PlanarDice res = SGuiChoose.oneOrNone("Choose result", PlanarDice.values());

View File

@@ -63,7 +63,7 @@ public class QuestWinLoseController {
final LobbyPlayer questLobbyPlayer = GamePlayerUtil.getQuestPlayer();
PlayerView player = null;
for (final PlayerView p : lastGame.getPlayers()) {
if (p.getLobbyPlayer().equals(questLobbyPlayer)) {
if (p.isLobbyPlayer(questLobbyPlayer)) {
player = p;
}
}
@@ -97,7 +97,7 @@ public class QuestWinLoseController {
if (anteResult.lostCards != null) {
qc.getCards().loseCards(anteResult.lostCards);
}
anteReport(anteResult.wonCards, anteResult.lostCards, questPlayer.getLobbyPlayer().equals(lastGame.getWinningPlayer()));
anteReport(anteResult.wonCards, anteResult.lostCards, questPlayer.isLobbyPlayer(lastGame.getWinningPlayer()));
}
}