Turn/GameManager now supports interface for checking whether a player
is still actively playing the game. The delegate now uses this when incrementing turns to skip over players not a part of the game (rather than needing this same code in the derived classes). git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3390 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -354,6 +354,15 @@ public class GameManager extends PlaceManager
|
||||
return (_AIs != null && _AIs[pidx] != null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the player at the specified player index is actively
|
||||
* playing the game
|
||||
*/
|
||||
public boolean isActivePlayer (int pidx)
|
||||
{
|
||||
return _gameobj.isActivePlayer(pidx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the unique round identifier for the current round.
|
||||
*/
|
||||
|
||||
@@ -66,6 +66,12 @@ public interface TurnGameManager
|
||||
*/
|
||||
public int getPlayerCount ();
|
||||
|
||||
/**
|
||||
* Extending {@link GameManager} should automatically handle
|
||||
* implementing this method.
|
||||
*/
|
||||
public boolean isActivePlayer (int pidx);
|
||||
|
||||
/**
|
||||
* Called when we are about to start the next turn. Implementations
|
||||
* can do whatever pre-start turn activities need to be done.
|
||||
|
||||
@@ -181,12 +181,17 @@ public class TurnGameManagerDelegate extends GameManagerDelegate
|
||||
return;
|
||||
}
|
||||
|
||||
// find the next occupied player slot
|
||||
// find the next occupied active player slot
|
||||
//
|
||||
// FIXME: This might be a player that has state PLAYER_LEFT_GAME.
|
||||
// It seems possible to make the GameManager track the active
|
||||
// player count, not just the player count, and ignore
|
||||
int size = _turnGame.getPlayers().length;
|
||||
int oturnIdx = _turnIdx;
|
||||
do {
|
||||
_turnIdx = (_turnIdx + 1) % size;
|
||||
} while (_tgmgr.getPlayerName(_turnIdx) == null);
|
||||
} while (_tgmgr.getPlayerName(_turnIdx) == null ||
|
||||
_tgmgr.isActivePlayer(_turnIdx));
|
||||
}
|
||||
|
||||
/** The game manager for which we are delegating. */
|
||||
|
||||
Reference in New Issue
Block a user