Changed AWAITING_PLAYERS to PRE_GAME; factored some code into stateDidChange().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3787 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -67,7 +67,7 @@ public class GameObject extends PlaceObject
|
|||||||
|
|
||||||
/** A game state constant indicating that the game has not yet started
|
/** A game state constant indicating that the game has not yet started
|
||||||
* and is still awaiting the arrival of all of the players. */
|
* and is still awaiting the arrival of all of the players. */
|
||||||
public static final int AWAITING_PLAYERS = 0;
|
public static final int PRE_GAME = 0;
|
||||||
|
|
||||||
/** A game state constant indicating that the game is in play. */
|
/** A game state constant indicating that the game is in play. */
|
||||||
public static final int IN_PLAY = 1;
|
public static final int IN_PLAY = 1;
|
||||||
@@ -89,9 +89,9 @@ public class GameObject extends PlaceObject
|
|||||||
/** Provides general game invocation services. */
|
/** Provides general game invocation services. */
|
||||||
public GameMarshaller gameService;
|
public GameMarshaller gameService;
|
||||||
|
|
||||||
/** The game state, one of {@link #AWAITING_PLAYERS}, {@link #IN_PLAY},
|
/** The game state, one of {@link #PRE_GAME}, {@link #IN_PLAY},
|
||||||
* {@link #GAME_OVER}, or {@link #CANCELLED}. */
|
* {@link #GAME_OVER}, or {@link #CANCELLED}. */
|
||||||
public int state;
|
public int state = PRE_GAME;
|
||||||
|
|
||||||
/** Indicates whether or not this game is rated. */
|
/** Indicates whether or not this game is rated. */
|
||||||
public boolean isRated;
|
public boolean isRated;
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ public class GameManager extends PlaceManager
|
|||||||
Name name = getPlayerName(playerIdx);
|
Name name = getPlayerName(playerIdx);
|
||||||
return (name == null) ? null : CrowdServer.lookupBody(name);
|
return (name == null) ? null : CrowdServer.lookupBody(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the specified player as an AI with the specified
|
* Sets the specified player as an AI with the specified
|
||||||
* configuration. It is assumed that this will be set soon after the
|
* configuration. It is assumed that this will be set soon after the
|
||||||
@@ -355,7 +355,7 @@ public class GameManager extends PlaceManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the player index of the given user in the game, or
|
* Returns the player index of the given user in the game, or
|
||||||
* <code>-1</code> if the player is not involved in the game.
|
* <code>-1</code> if the player is not involved in the game.
|
||||||
*/
|
*/
|
||||||
public int getPlayerIndex (Name username)
|
public int getPlayerIndex (Name username)
|
||||||
@@ -431,8 +431,7 @@ public class GameManager extends PlaceManager
|
|||||||
String msgbundle, String msg, boolean waitForStart)
|
String msgbundle, String msg, boolean waitForStart)
|
||||||
{
|
{
|
||||||
if (waitForStart &&
|
if (waitForStart &&
|
||||||
((_gameobj == null) ||
|
((_gameobj == null) || (_gameobj.state == GameObject.PRE_GAME))) {
|
||||||
(_gameobj.state == GameObject.AWAITING_PLAYERS))) {
|
|
||||||
// queue up the message.
|
// queue up the message.
|
||||||
if (_startmsgs == null) {
|
if (_startmsgs == null) {
|
||||||
_startmsgs = new ArrayList();
|
_startmsgs = new ArrayList();
|
||||||
@@ -609,8 +608,7 @@ public class GameManager extends PlaceManager
|
|||||||
{
|
{
|
||||||
// start up the game if we're not a party game and if we haven't
|
// start up the game if we're not a party game and if we haven't
|
||||||
// already done so
|
// already done so
|
||||||
if (!isPartyGame() &&
|
if (!isPartyGame() && _gameobj.state == GameObject.PRE_GAME) {
|
||||||
_gameobj.state == GameObject.AWAITING_PLAYERS) {
|
|
||||||
startGame();
|
startGame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -624,7 +622,7 @@ public class GameManager extends PlaceManager
|
|||||||
protected void checkForNoShows ()
|
protected void checkForNoShows ()
|
||||||
{
|
{
|
||||||
// nothing to worry about if we're already started
|
// nothing to worry about if we're already started
|
||||||
if (_gameobj.state != GameObject.AWAITING_PLAYERS) {
|
if (_gameobj.state != GameObject.PRE_GAME) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -740,7 +738,7 @@ public class GameManager extends PlaceManager
|
|||||||
{
|
{
|
||||||
// initialize the player status
|
// initialize the player status
|
||||||
_gameobj.setPlayerStatus(new int[getPlayerSlots()]);
|
_gameobj.setPlayerStatus(new int[getPlayerSlots()]);
|
||||||
|
|
||||||
// increment the round identifier
|
// increment the round identifier
|
||||||
_gameobj.setRoundId(_gameobj.roundId + 1);
|
_gameobj.setRoundId(_gameobj.roundId + 1);
|
||||||
|
|
||||||
@@ -752,6 +750,32 @@ public class GameManager extends PlaceManager
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the game state changes. This happens after the attribute
|
||||||
|
* change event has propagated.
|
||||||
|
*
|
||||||
|
* @param state the new game state.
|
||||||
|
* @param oldState the previous game state.
|
||||||
|
*/
|
||||||
|
protected void stateDidChange (int state, int oldState)
|
||||||
|
{
|
||||||
|
switch (state) {
|
||||||
|
case GameObject.IN_PLAY:
|
||||||
|
gameDidStart();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GameObject.CANCELLED:
|
||||||
|
// fall through to GAME_OVER case
|
||||||
|
|
||||||
|
case GameObject.GAME_OVER:
|
||||||
|
// call gameDidEnd() only if the game was previously in play
|
||||||
|
if (oldState == GameObject.IN_PLAY) {
|
||||||
|
gameDidEnd();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called after the game start notification was dispatched. Derived
|
* Called after the game start notification was dispatched. Derived
|
||||||
* classes can override this to put whatever wheels they might need
|
* classes can override this to put whatever wheels they might need
|
||||||
@@ -941,7 +965,7 @@ public class GameManager extends PlaceManager
|
|||||||
{
|
{
|
||||||
return (_gameobj.state == GameObject.GAME_OVER);
|
return (_gameobj.state == GameObject.GAME_OVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the game is about to end, but before the game end
|
* Called when the game is about to end, but before the game end
|
||||||
* notification has been delivered to the players. Derived classes
|
* notification has been delivered to the players. Derived classes
|
||||||
@@ -984,7 +1008,7 @@ public class GameManager extends PlaceManager
|
|||||||
if (shouldConcludeGame() && winnerCount > 0 && !_gameobj.isDraw()) {
|
if (shouldConcludeGame() && winnerCount > 0 && !_gameobj.isDraw()) {
|
||||||
reportWinnersAndLosers();
|
reportWinnersAndLosers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate ratings and all that...
|
// calculate ratings and all that...
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1020,7 +1044,7 @@ public class GameManager extends PlaceManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the game is to be reset to its starting state in
|
* Called when the game is to be reset to its starting state in
|
||||||
* preparation for a new game without actually ending the current
|
* preparation for a new game without actually ending the current
|
||||||
@@ -1124,22 +1148,8 @@ public class GameManager extends PlaceManager
|
|||||||
public void attributeChanged (AttributeChangedEvent event)
|
public void attributeChanged (AttributeChangedEvent event)
|
||||||
{
|
{
|
||||||
if (event.getName().equals(GameObject.STATE)) {
|
if (event.getName().equals(GameObject.STATE)) {
|
||||||
switch (_committedState = event.getIntValue()) {
|
stateDidChange(_committedState = event.getIntValue(),
|
||||||
case GameObject.IN_PLAY:
|
((Integer)event.getOldValue()).intValue());
|
||||||
gameDidStart();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GameObject.CANCELLED:
|
|
||||||
// fall through to GAME_OVER case
|
|
||||||
|
|
||||||
case GameObject.GAME_OVER:
|
|
||||||
// Call gameDidEnd only if it was actually started
|
|
||||||
if (((Integer)event.getOldValue()).intValue() ==
|
|
||||||
GameObject.IN_PLAY) {
|
|
||||||
gameDidEnd();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user