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:
Ted V
2005-03-10 00:13:25 +00:00
parent bb83bacdab
commit 08cc800694
3 changed files with 22 additions and 2 deletions
@@ -354,6 +354,15 @@ public class GameManager extends PlaceManager
return (_AIs != null && _AIs[pidx] != null); 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. * Returns the unique round identifier for the current round.
*/ */
@@ -66,6 +66,12 @@ public interface TurnGameManager
*/ */
public int getPlayerCount (); 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 * Called when we are about to start the next turn. Implementations
* can do whatever pre-start turn activities need to be done. * can do whatever pre-start turn activities need to be done.
@@ -181,12 +181,17 @@ public class TurnGameManagerDelegate extends GameManagerDelegate
return; 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 size = _turnGame.getPlayers().length;
int oturnIdx = _turnIdx; int oturnIdx = _turnIdx;
do { do {
_turnIdx = (_turnIdx + 1) % size; _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. */ /** The game manager for which we are delegating. */