@Override public PlayerList copy() { return new PlayerList(this); }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { playersAttackedInLastTurn.remove(event.getPlayerId()); } if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { PlayerList playersAttacked = playersAttackedInLastTurn.get(event.getPlayerId()); if (playersAttacked == null) { playersAttacked = new PlayerList(); } UUID defender = game.getCombat().getDefendingPlayerId(event.getSourceId(), game); if (defender != null) { playersAttacked.add(defender); } playersAttackedInLastTurn.put(event.getPlayerId(), playersAttacked); } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { playersAttackedThisTurn.clear(); opponentsAttackedThisTurn.clear(); } if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { // players PlayerList playersAttacked = playersAttackedThisTurn.get(event.getPlayerId()); if (playersAttacked == null) { playersAttacked = new PlayerList(); } UUID playerDefender = game.getCombat().getDefendingPlayerId(event.getSourceId(), game); if (playerDefender != null) { playersAttacked.add(playerDefender); } playersAttackedThisTurn.put(event.getPlayerId(), playersAttacked); // opponents PlayerList opponentsAttacked = opponentsAttackedThisTurn.get(event.getPlayerId()); if (opponentsAttacked == null) { opponentsAttacked = new PlayerList(); } UUID opponentDefender = game.getCombat().getDefendingPlayerId(event.getSourceId(), game); if (opponentDefender != null && game.getOpponents(event.getPlayerId()).contains(opponentDefender)) { opponentsAttacked.add(opponentDefender); } opponentsAttackedThisTurn.put(event.getPlayerId(), opponentsAttacked); } }
/** * Returns a list of all active players of the game, setting the playerId to * the current player of the list. * * @param playerId * @return playerList */ public PlayerList getPlayerList(UUID playerId) { PlayerList newPlayerList = new PlayerList(); for (Player player : players.values()) { if (!player.hasLeft() && !player.hasLost()) { newPlayerList.add(player.getId()); } } newPlayerList.setCurrent(playerId); return newPlayerList; }
/** * Returns a list of all active players of the game in range of playerId, * also setting the playerId to the first/current player of the list. Also * returning the other players in turn order. * * @param playerId * @param game * @return playerList */ public PlayerList getPlayersInRange(UUID playerId, Game game) { PlayerList newPlayerList = new PlayerList(); Player currentPlayer = game.getPlayer(playerId); if (currentPlayer != null) { for (Player player : players.values()) { if (!player.hasLeft() && !player.hasLost() && currentPlayer.getInRange().contains(player.getId())) { newPlayerList.add(player.getId()); } } newPlayerList.setCurrent(playerId); } return newPlayerList; }
public GameState() { players = new Players(); playerList = new PlayerList(); turn = new Turn(); stack = new SpellStack(); command = new Command(); exile = new Exile(); revealed = new Revealed(); battlefield = new Battlefield(); effects = new ContinuousEffects(); triggers = new TriggeredAbilities(); delayed = new DelayedTriggeredAbilities(); specialActions = new SpecialActions(); combat = new Combat(); turnMods = new TurnMods(); watchers = new Watchers(); applyEffectsCounter = 0; }