Sending GameStats on joining a game.

This commit is contained in:
marcins78@gmail.com
2011-10-25 12:32:29 +00:00
parent 6e166c24eb
commit 54fc7e9481
3 changed files with 15 additions and 23 deletions

View File

@@ -59,7 +59,7 @@ public class GameState {
return _nextCardId++;
}
public void init(PlayerOrder playerOrder, String firstPlayer, Map<String, List<String>> cards, LotroCardBlueprintLibrary library) {
public void init(PlayerOrder playerOrder, String firstPlayer, Map<String, List<String>> cards, LotroCardBlueprintLibrary library, GameStats gameStats) {
_playerOrder = playerOrder;
_currentPlayerId = firstPlayer;
@@ -81,7 +81,7 @@ public class GameState {
}
for (String playerId : _gameStateListeners.keySet())
sendStateToPlayer(playerId);
sendStateToPlayer(playerId, gameStats);
}
private String _possibleChars = "abcdefghijklmnopqrstuvwxyz0123456789";
@@ -174,9 +174,9 @@ public class GameState {
return _playerOrder;
}
public void addGameStateListener(String playerId, GameStateListener gameStateListener) {
public void addGameStateListener(String playerId, GameStateListener gameStateListener, GameStats gameStats) {
_gameStateListeners.put(playerId, gameStateListener);
sendStateToPlayer(playerId);
sendStateToPlayer(playerId, gameStats);
}
public void removeGameStateListener(String playerId, GameStateListener gameStateListener) {
@@ -200,7 +200,7 @@ public class GameState {
return allListeners;
}
private void sendStateToPlayer(String playerId) {
private void sendStateToPlayer(String playerId, GameStats gameStats) {
if (_playerOrder != null) {
GameStateListener listener = _gameStateListeners.get(playerId);
listener.setPlayerOrder(_playerOrder.getAllPlayers());
@@ -259,6 +259,8 @@ public class GameState {
listener.addTokens(card, tokenIntegerEntry.getKey(), count);
}
}
listener.sendGameStats(gameStats);
}
}

View File

@@ -31,7 +31,6 @@ public class DefaultLotroGame implements LotroGame {
private TurnProcedure _turnProcedure;
private ActionStack _actionStack;
private Map<String, GameStateListener> _gameStateListeners = new HashMap<String, GameStateListener>();
private LotroFormat _format;
private GameResultListener _gameResultListener;
@@ -69,11 +68,8 @@ public class DefaultLotroGame implements LotroGame {
new PlayerOrderFeedback() {
@Override
public void setPlayerOrder(PlayerOrder playerOrder, String firstPlayer) {
_gameState.init(playerOrder, firstPlayer, cards, library);
for (Map.Entry<String, GameStateListener> stringGameStateListenerEntry : _gameStateListeners.entrySet())
_gameState.addGameStateListener(stringGameStateListenerEntry.getKey(), stringGameStateListenerEntry.getValue());
_gameStateListeners = null;
final GameStats gameStats = _turnProcedure.getGameStats();
_gameState.init(playerOrder, firstPlayer, cards, library, gameStats);
}
}
);
@@ -177,21 +173,11 @@ public class DefaultLotroGame implements LotroGame {
}
}
public ActionStack getActionStack() {
return _actionStack;
}
public void addGameStateListener(String playerId, GameStateListener gameStateListener) {
if (_gameState != null)
_gameState.addGameStateListener(playerId, gameStateListener);
else
_gameStateListeners.put(playerId, gameStateListener);
_gameState.addGameStateListener(playerId, gameStateListener, _turnProcedure.getGameStats());
}
public void removeGameStateListener(String playerId, GameStateListener gameStateListener) {
if (_gameState != null)
_gameState.removeGameStateListener(playerId, gameStateListener);
else
_gameStateListeners.remove(playerId);
_gameState.removeGameStateListener(playerId, gameStateListener);
}
}

View File

@@ -35,6 +35,10 @@ public class TurnProcedure {
_gameProcess = new BiddingGameProcess(players, lotroGame, playerOrderFeedback);
}
public GameStats getGameStats() {
return _gameStats;
}
public void carryOutPendingActionsUntilDecisionNeeded() {
while (!_userFeedback.hasPendingDecisions() && _game.getWinnerPlayerId() == null) {
if (_actionStack.isEmpty()) {