Control turn implementation fix.

This commit is contained in:
magenoxx 2011-08-05 17:23:09 +04:00
parent 7ed6935c40
commit 9223fe63ad

View file

@ -572,14 +572,27 @@ public class GameController implements GameCallback {
private void sendMessage(UUID userId, Command command) {
final UUID playerId = userPlayerMap.get(userId);
if (game.getPlayer(playerId).isGameUnderControl()) {
if (game.getPlayer(playerId).getPlayersUnderYourControl().size() == 0) {
// we have a problem with synchronization between priorityId and message sent
// so have to check the size of list of players controlled
if (gameSessions.containsKey(playerId))
command.execute(playerId);
// now send the same command to those whose turns you control
} else {
// if it's your priority (or game not started yet in which case it will be null)
// then execute only your action
//if (game.getPriorityPlayerId() == null || game.getPriorityPlayerId().equals(playerId)) {
if (gameSessions.containsKey(playerId))
command.execute(playerId);
//} // otherwise execute the action under other player's control
//else {
//System.out.println("asThough: " + playerId + " " + game.getPriorityPlayerId());
Player player = game.getPlayer(playerId);
for (UUID controlled : player.getPlayersUnderYourControl()) {
if (gameSessions.containsKey(controlled))
if (gameSessions.containsKey(controlled) && game.getPriorityPlayerId().equals(controlled))
command.execute(controlled);
}
//}
}
} else {
// ignore - no control over the turn
return;