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);
|
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. */
|
||||||
|
|||||||
Reference in New Issue
Block a user