diff --git a/src/as/com/threerings/parlor/game/client/GameController.as b/src/as/com/threerings/parlor/game/client/GameController.as
index f478f318..39cd330e 100644
--- a/src/as/com/threerings/parlor/game/client/GameController.as
+++ b/src/as/com/threerings/parlor/game/client/GameController.as
@@ -160,11 +160,11 @@ public /*abstract*/ class GameController extends PlaceController
}
/**
- * Returns the unique round identifier for the current round.
+ * Returns the unique identifier for the current gameplay session.
*/
- public function getRoundId () :int
+ public function getSessionId () :int
{
- return (_gobj == null) ? -1 : _gobj.roundId;
+ return (_gobj == null) ? -1 : _gobj.sessionId;
}
/**
diff --git a/src/as/com/threerings/parlor/game/data/GameObject.as b/src/as/com/threerings/parlor/game/data/GameObject.as
index 7478096a..349bbfad 100644
--- a/src/as/com/threerings/parlor/game/data/GameObject.as
+++ b/src/as/com/threerings/parlor/game/data/GameObject.as
@@ -34,13 +34,11 @@ import com.threerings.io.TypedArray;
import com.threerings.crowd.data.PlaceObject;
/**
- * A game object hosts the shared data associated with a game played by
- * one or more players. The game object extends the place object so that
- * the game can act as a place where players actually go when playing the
- * game. Only very basic information is maintained in the base game
- * object. It serves as the base for a hierarchy of game object
- * derivatives that handle basic gameplay for a suite of different game
- * types (ie. turn based games, party games, board games, card games,
+ * A game object hosts the shared data associated with a game played by one or more players. The
+ * game object extends the place object so that the game can act as a place where players actually
+ * go when playing the game. Only very basic information is maintained in the base game object. It
+ * serves as the base for a hierarchy of game object derivatives that handle basic gameplay for a
+ * suite of different game types (ie. turn based games, party games, board games, card games,
* etc.).
*/
public class GameObject extends PlaceObject
@@ -61,15 +59,15 @@ public class GameObject extends PlaceObject
/** The field name of the winners field. */
public static const WINNERS :String = "winners";
- /** The field name of the roundId field. */
- public static const ROUND_ID :String = "roundId";
+ /** The field name of the sessionId field. */
+ public static const SESSION_ID :String = "sessionId";
/** The field name of the playerStatus field. */
public static const PLAYER_STATUS :String = "playerStatus";
// AUTO-GENERATED: FIELDS END
- /** A game state constant indicating that the game has not yet started
- * and is still awaiting the arrival of all of the players. */
+ /** A game state constant indicating that the game has not yet started and is still awaiting
+ * the arrival of all of the players. */
public static const PRE_GAME :int = 0;
/** A game state constant indicating that the game is in play. */
@@ -84,13 +82,12 @@ public class GameObject extends PlaceObject
/** The player status constant for a player whose game is in play. */
public static const PLAYER_IN_PLAY :int = 0;
- /** The player status constant for a player whose has been knocked out
- * of the game. NOTE: This can include a player choosing to leave a
- * game prematurely. */
+ /** The player status constant for a player whose has been knocked out of the game. NOTE: This
+ * can include a player choosing to leave a game prematurely. */
public static const PLAYER_LEFT_GAME :int = 1;
- /** The game state, one of {@link #PRE_GAME}, {@link #IN_PLAY},
- * {@link #GAME_OVER}, or {@link #CANCELLED}. */
+ /** The game state, one of {@link #PRE_GAME}, {@link #IN_PLAY}, {@link #GAME_OVER}, or
+ * {@link #CANCELLED}. */
public var state :int = PRE_GAME;
/** Indicates whether or not this game is rated. */
@@ -102,17 +99,16 @@ public class GameObject extends PlaceObject
/** The usernames of the players involved in this game. */
public var players :TypedArray; /* of Name */
- /** Whether each player in the game is a winner, or null
- * if the game is not yet over. */
+ /** Whether each player in the game is a winner, or null if the game is not yet over. */
public var winners :TypedArray; /* of Boolean */
- /** The unique round identifier for the current round. */
- public var roundId :int;
+ /** A unique identifier for each game session. Every time the game is started, this value will
+ * be incremented to provide a unique identifier for that particular session. */
+ public var sessionId :int;
- /** If null, indicates that all present players are active, or for
- * more complex games can be non-null to indicate the current status
- * of each player in the game. The status value is one of
- * {@link #PLAYER_LEFT_GAME} or {@link #PLAYER_IN_PLAY}. */
+ /** If null, indicates that all present players are active, or for more complex games can be
+ * non-null to indicate the current status of each player in the game. The status value is one
+ * of {@link #PLAYER_LEFT_GAME} or {@link #PLAYER_IN_PLAY}. */
public var playerStatus :TypedArray; /* of int */
/**
@@ -146,8 +142,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns whether the given player is still an active player in
- * the game. (Ie. whether or not they are still participating.)
+ * Returns whether the given player is still an active player in the game. (Ie. whether or not
+ * they are still participating.)
*/
public function isActivePlayer (pidx :int) :Boolean
{
@@ -156,8 +152,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns the player index of the given user in the game, or
- * -1 if the player is not involved in the game.
+ * Returns the player index of the given user in the game, or -1 if the player is
+ * not involved in the game.
*/
public function getPlayerIndex (username :Name) :int
{
@@ -165,8 +161,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns whether the game is in play. A game that is not in play
- * could either be awaiting players, ended, or cancelled.
+ * Returns whether the game is in play. A game that is not in play could either be awaiting
+ * players, ended, or cancelled.
*/
public function isInPlay () :Boolean
{
@@ -182,8 +178,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns whether the given player index is a winner, or false if the
- * winners are not yet assigned.
+ * Returns whether the given player index is a winner, or false if the winners are not yet
+ * assigned.
*/
public function isWinner (pidx :int) :Boolean
{
@@ -191,8 +187,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns the number of winners for this game, or 0 if
- * the winners array is not populated, e.g., the game is not yet over.
+ * Returns the number of winners for this game, or 0 if the winners array is not
+ * populated, e.g., the game is not yet over.
*/
public function getWinnerCount () :int
{
@@ -216,10 +212,9 @@ public class GameObject extends PlaceObject
}
/**
- * Returns the winner index of the first winning player for this game,
- * or -1 if there are no winners or the winners array is
- * not yet assigned. This is only likely to be useful for games that
- * are known to have a single winner.
+ * Returns the winner index of the first winning player for this game, or -1 if
+ * there are no winners or the winners array is not yet assigned. This is only likely to be
+ * useful for games that are known to have a single winner.
*/
public function getWinnerIndex () :int
{
@@ -227,9 +222,8 @@ public class GameObject extends PlaceObject
}
/**
- * Used by {@link #isActivePlayer} to determine if the supplied status is
- * associated with an active player (one that has not resigned from the
- * game and/or left the game room).
+ * Used by {@link #isActivePlayer} to determine if the supplied status is associated with an
+ * active player (one that has not resigned from the game and/or left the game room).
*/
protected function isActivePlayerStatus (playerStatus :int) :Boolean
{
@@ -361,19 +355,19 @@ public class GameObject extends PlaceObject
// }
//
// /**
-// * Requests that the roundId field be set to the
+// * Requests that the sessionId field be set to the
// * specified value. The local value will be updated immediately and an
// * event will be propagated through the system to notify all listeners
// * that the attribute did change. Proxied copies of this object (on
// * clients) will apply the value change when they received the
// * attribute changed notification.
// */
-// public function setRoundId (value :int) :void
+// public function setSessionId (value :int) :void
// {
-// var ovalue :int = this.roundId;
+// var ovalue :int = this.sessionId;
// requestAttributeChange(
-// ROUND_ID, Integer.valueOf(value), Integer.valueOf(ovalue));
-// this.roundId = value;
+// SESSION_ID, Integer.valueOf(value), Integer.valueOf(ovalue));
+// this.sessionId = value;
// }
//
// /**
@@ -422,7 +416,7 @@ public class GameObject extends PlaceObject
// out.writeBoolean(isPrivate);
// out.writeObject(players);
// out.writeField(winners);
-// out.writeInt(roundId);
+// out.writeInt(sessionId);
// out.writeField(playerStatus);
// }
@@ -434,11 +428,9 @@ public class GameObject extends PlaceObject
isRated = ins.readBoolean();
isPrivate = ins.readBoolean();
players = (ins.readObject() as TypedArray);
- winners = (ins.readField(TypedArray.getJavaType(Boolean))
- as TypedArray);
- roundId = ins.readInt();
- playerStatus = (ins.readField(TypedArray.getJavaType(int))
- as TypedArray);
+ winners = (ins.readField(TypedArray.getJavaType(Boolean)) as TypedArray);
+ sessionId = ins.readInt();
+ playerStatus = (ins.readField(TypedArray.getJavaType(int)) as TypedArray);
}
}
}
diff --git a/src/java/com/threerings/parlor/game/client/GameController.java b/src/java/com/threerings/parlor/game/client/GameController.java
index 4ba00cf1..690467c3 100644
--- a/src/java/com/threerings/parlor/game/client/GameController.java
+++ b/src/java/com/threerings/parlor/game/client/GameController.java
@@ -163,11 +163,11 @@ public abstract class GameController extends PlaceController
}
/**
- * Returns the unique round identifier for the current round.
+ * Returns the unique session identifier for the current gameplay session.
*/
- public int getRoundId ()
+ public int getSessionId ()
{
- return (_gobj == null) ? -1 : _gobj.roundId;
+ return (_gobj == null) ? -1 : _gobj.sessionId;
}
/**
diff --git a/src/java/com/threerings/parlor/game/data/GameObject.java b/src/java/com/threerings/parlor/game/data/GameObject.java
index 0e9cb82a..7ea13eea 100644
--- a/src/java/com/threerings/parlor/game/data/GameObject.java
+++ b/src/java/com/threerings/parlor/game/data/GameObject.java
@@ -27,13 +27,11 @@ import com.threerings.util.Name;
import com.threerings.crowd.data.PlaceObject;
/**
- * A game object hosts the shared data associated with a game played by
- * one or more players. The game object extends the place object so that
- * the game can act as a place where players actually go when playing the
- * game. Only very basic information is maintained in the base game
- * object. It serves as the base for a hierarchy of game object
- * derivatives that handle basic gameplay for a suite of different game
- * types (ie. turn based games, party games, board games, card games,
+ * A game object hosts the shared data associated with a game played by one or more players. The
+ * game object extends the place object so that the game can act as a place where players actually
+ * go when playing the game. Only very basic information is maintained in the base game object. It
+ * serves as the base for a hierarchy of game object derivatives that handle basic gameplay for a
+ * suite of different game types (ie. turn based games, party games, board games, card games,
* etc.).
*/
public class GameObject extends PlaceObject
@@ -54,15 +52,15 @@ public class GameObject extends PlaceObject
/** The field name of the winners field. */
public static final String WINNERS = "winners";
- /** The field name of the roundId field. */
- public static final String ROUND_ID = "roundId";
+ /** The field name of the sessionId field. */
+ public static final String SESSION_ID = "sessionId";
/** The field name of the playerStatus field. */
public static final String PLAYER_STATUS = "playerStatus";
// AUTO-GENERATED: FIELDS END
- /** A game state constant indicating that the game has not yet started
- * and is still awaiting the arrival of all of the players. */
+ /** A game state constant indicating that the game has not yet started and is still awaiting
+ * the arrival of all of the players. */
public static final int PRE_GAME = 0;
/** A game state constant indicating that the game is in play. */
@@ -77,13 +75,12 @@ public class GameObject extends PlaceObject
/** The player status constant for a player whose game is in play. */
public static final int PLAYER_IN_PLAY = 0;
- /** The player status constant for a player whose has been knocked out
- * of the game. NOTE: This can include a player choosing to leave a
- * game prematurely. */
+ /** The player status constant for a player whose has been knocked out of the game. NOTE: This
+ * can include a player choosing to leave a game prematurely. */
public static final int PLAYER_LEFT_GAME = 1;
- /** The game state, one of {@link #PRE_GAME}, {@link #IN_PLAY},
- * {@link #GAME_OVER}, or {@link #CANCELLED}. */
+ /** The game state, one of {@link #PRE_GAME}, {@link #IN_PLAY}, {@link #GAME_OVER}, or
+ * {@link #CANCELLED}. */
public int state = PRE_GAME;
/** Indicates whether or not this game is rated. */
@@ -95,19 +92,19 @@ public class GameObject extends PlaceObject
/** The usernames of the players involved in this game. */
public Name[] players;
- /** Whether each player in the game is a winner, or null
- * if the game is not yet over. */
+ /** Whether each player in the game is a winner, or null if the game is not yet over. */
public boolean[] winners;
- /** The unique round identifier for the current round. */
- public int roundId;
+ /** A unique identifier for each game session. Every time the game is started, this value will
+ * be incremented to provide a unique identifier for that particular session. */
+ public int sessionId;
/**
* If null, indicates that all present players are active, or for more complex games can be
* non-null to indicate the current status of each player in the game. The status value is one
- * of {@link #PLAYER_LEFT_GAME} or {@link #PLAYER_IN_PLAY}.
- * Subclasses of GameObject may use other means to determine a player's status in the game, so - * call {@link #isActivePlayer(int)} to see if a player is still participating in a game. + * of {@link #PLAYER_LEFT_GAME} or {@link #PLAYER_IN_PLAY}.
Subclasses of GameObject may use
+ * other means to determine a player's status in the game, so call {@link #isActivePlayer(int)}
+ * to see if a player is still participating in a game.
*/
public int[] playerStatus;
@@ -142,8 +139,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns whether the given player is still an active player in
- * the game. (Ie. whether or not they are still participating.)
+ * Returns whether the given player is still an active player in the game. (Ie. whether or not
+ * they are still participating.)
*/
public boolean isActivePlayer (int pidx)
{
@@ -152,8 +149,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns the player index of the given user in the game, or
- * -1 if the player is not involved in the game.
+ * Returns the player index of the given user in the game, or -1 if the player is
+ * not involved in the game.
*/
public int getPlayerIndex (Name username)
{
@@ -167,8 +164,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns whether the game is in play. A game that is not in play
- * could either be awaiting players, ended, or cancelled.
+ * Returns whether the game is in play. A game that is not in play could either be awaiting
+ * players, ended, or cancelled.
*/
public boolean isInPlay ()
{
@@ -184,8 +181,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns whether the given player index is a winner, or false if the
- * winners are not yet assigned.
+ * Returns whether the given player index is a winner, or false if the winners are not yet
+ * assigned.
*/
public boolean isWinner (int pidx)
{
@@ -193,8 +190,8 @@ public class GameObject extends PlaceObject
}
/**
- * Returns the number of winners for this game, or 0 if
- * the winners array is not populated, e.g., the game is not yet over.
+ * Returns the number of winners for this game, or 0 if the winners array is not
+ * populated, e.g., the game is not yet over.
*/
public int getWinnerCount ()
{
@@ -217,10 +214,9 @@ public class GameObject extends PlaceObject
}
/**
- * Returns the winner index of the first winning player for this game,
- * or -1 if there are no winners or the winners array is
- * not yet assigned. This is only likely to be useful for games that
- * are known to have a single winner.
+ * Returns the winner index of the first winning player for this game, or -1 if
+ * there are no winners or the winners array is not yet assigned. This is only likely to be
+ * useful for games that are known to have a single winner.
*/
public int getWinnerIndex ()
{
@@ -234,9 +230,8 @@ public class GameObject extends PlaceObject
}
/**
- * Used by {@link #isActivePlayer} to determine if the supplied status is
- * associated with an active player (one that has not resigned from the
- * game and/or left the game room).
+ * Used by {@link #isActivePlayer} to determine if the supplied status is associated with an
+ * active player (one that has not resigned from the game and/or left the game room).
*/
protected boolean isActivePlayerStatus (int playerStatus)
{
@@ -367,19 +362,19 @@ public class GameObject extends PlaceObject
}
/**
- * Requests that the roundId field be set to the
+ * Requests that the sessionId field be set to the
* specified value. The local value will be updated immediately and an
* event will be propagated through the system to notify all listeners
* that the attribute did change. Proxied copies of this object (on
* clients) will apply the value change when they received the
* attribute changed notification.
*/
- public void setRoundId (int value)
+ public void setSessionId (int value)
{
- int ovalue = this.roundId;
+ int ovalue = this.sessionId;
requestAttributeChange(
- ROUND_ID, Integer.valueOf(value), Integer.valueOf(ovalue));
- this.roundId = value;
+ SESSION_ID, Integer.valueOf(value), Integer.valueOf(ovalue));
+ this.sessionId = value;
}
/**
diff --git a/src/java/com/threerings/parlor/game/server/GameManager.java b/src/java/com/threerings/parlor/game/server/GameManager.java
index a36c099a..9f271535 100644
--- a/src/java/com/threerings/parlor/game/server/GameManager.java
+++ b/src/java/com/threerings/parlor/game/server/GameManager.java
@@ -368,11 +368,11 @@ public class GameManager extends PlaceManager
}
/**
- * Returns the unique round identifier for the current round.
+ * Returns the unique session identifier for this game session.
*/
- public int getRoundId ()
+ public int getSessionId ()
{
- return _gameobj.roundId;
+ return _gameobj.sessionId;
}
/**
@@ -981,9 +981,8 @@ public class GameManager extends PlaceManager
*/
protected void gameWillStart ()
{
- // update our round id locally; see gameDidStart() for where we actually broadcast this
- // change to the clients
- _gameobj.roundId = _gameobj.roundId + 1;
+ // update our session id
+ _gameobj.setSessionId(_gameobj.sessionId + 1);
// let our delegates do their business
applyToDelegates(new DelegateOp() {
@@ -1045,12 +1044,6 @@ public class GameManager extends PlaceManager
_noShowInterval.cancel();
}
- // broadcast the increment of the round identifier (we set this value locally on the server
- // in gameWillStart so that delegates and pre-game starters can know what the round is, but
- // we don't want the client to hear the ROUND_ID update until after the STATE change has
- // been dispatched)
- _gameobj.setRoundId(_gameobj.roundId);
-
// let our delegates do their business
applyToDelegates(new DelegateOp() {
public void apply (PlaceManagerDelegate delegate) {
diff --git a/src/java/com/threerings/puzzle/client/PuzzleAnimationWaiter.java b/src/java/com/threerings/puzzle/client/PuzzleAnimationWaiter.java
index 3606c262..47bd632d 100644
--- a/src/java/com/threerings/puzzle/client/PuzzleAnimationWaiter.java
+++ b/src/java/com/threerings/puzzle/client/PuzzleAnimationWaiter.java
@@ -26,11 +26,9 @@ import com.threerings.media.animation.AnimationWaiter;
import com.threerings.puzzle.data.PuzzleObject;
/**
- * An animation waiter to be used with puzzles that want to modify the
- * game object or board in some way after the animations end, and would
- * like to do so in a safe fashion such that their changes aren't
- * unwittingly performed on game data for a subsequent round of the
- * puzzle.
+ * An animation waiter to be used with puzzles that want to modify the game object or board in some
+ * way after the animations end, and would like to do so in a safe fashion such that their changes
+ * aren't unwittingly performed on game data for a subsequent round of the puzzle.
*/
public abstract class PuzzleAnimationWaiter extends AnimationWaiter
{
@@ -40,16 +38,15 @@ public abstract class PuzzleAnimationWaiter extends AnimationWaiter
public PuzzleAnimationWaiter (PuzzleObject puzobj)
{
_puzobj = puzobj;
- _roundId = puzobj.roundId;
+ _sessionId = puzobj.sessionId;
}
/**
- * Returns whether the puzzle associated with this puzzle animation
- * waiter is still valid.
+ * Returns whether the puzzle associated with this puzzle animation waiter is still valid.
*/
public boolean puzzleStillValid ()
{
- return (_puzobj.isInPlay() && (_roundId == _puzobj.roundId));
+ return (_puzobj.isInPlay() && (_sessionId == _puzobj.sessionId));
}
// documentation inherited
@@ -59,16 +56,14 @@ public abstract class PuzzleAnimationWaiter extends AnimationWaiter
}
/**
- * Replacement for {@link AnimationWaiter#allAnimationsFinished} that
- * also reports whether the puzzle associated with this animation
- * waiter is still valid.
+ * Replacement for {@link AnimationWaiter#allAnimationsFinished} that also reports whether the
+ * puzzle associated with this animation waiter is still valid.
*/
protected abstract void allAnimationsFinished (boolean puzStillValid);
- /** The initial round id. */
- protected int _roundId;
+ /** The initial session id. */
+ protected int _sessionId;
- /** The puzzle object that the animations we're observering want to
- * modify. */
+ /** The puzzle object that the animations we're observering want to modify. */
protected PuzzleObject _puzobj;
}
diff --git a/src/java/com/threerings/puzzle/client/PuzzleController.java b/src/java/com/threerings/puzzle/client/PuzzleController.java
index cc12a5d7..8945b130 100644
--- a/src/java/com/threerings/puzzle/client/PuzzleController.java
+++ b/src/java/com/threerings/puzzle/client/PuzzleController.java
@@ -362,10 +362,9 @@ public abstract class PuzzleController extends GameController
break;
}
- } else if (name.equals(PuzzleObject.ROUND_ID)) {
- // Need to clear out stale events. If we don't, we could send
- // events that claim to be from the new round that are actually
- // from the old round.
+ } else if (name.equals(PuzzleObject.SESSION_ID)) {
+ // Need to clear out stale events. If we don't, we could send events that claim to be
+ // from the new session that are actually from the old session.
_events.clear();
}
}
@@ -378,9 +377,8 @@ public abstract class PuzzleController extends GameController
// stop the old action
clearAction();
- // when the server gets around to resetting the game, we'll get a
- // 'state => IN_PLAY' message which will result in gameDidStart()
- // being called and starting the action back up
+ // when the server gets around to resetting the game, we'll get a 'state => IN_PLAY'
+ // message which will result in gameDidStart() being called and starting the action back up
}
/**
@@ -767,7 +765,7 @@ public abstract class PuzzleController extends GameController
int[] events = CollectionUtil.toIntArray(_events);
_events.clear();
-// Log.info("Sending progress [round=" + _puzobj.roundId +
+// Log.info("Sending progress [session=" + _puzobj.sessionId +
// ", events=" + StringUtil.toString(events) + "].");
// create an array of the board states that correspond with those
@@ -780,12 +778,11 @@ public abstract class PuzzleController extends GameController
// send the update progress request
_puzobj.puzzleGameService.updateProgressSync(
- _ctx.getClient(), _puzobj.roundId, events, states);
+ _ctx.getClient(), _puzobj.sessionId, events, states);
} else {
// send the update progress request
- _puzobj.puzzleGameService.updateProgress(
- _ctx.getClient(), _puzobj.roundId, events);
+ _puzobj.puzzleGameService.updateProgress(_ctx.getClient(), _puzobj.sessionId, events);
}
}
diff --git a/src/java/com/threerings/puzzle/server/PuzzleManager.java b/src/java/com/threerings/puzzle/server/PuzzleManager.java
index 90e60e1b..1d789125 100644
--- a/src/java/com/threerings/puzzle/server/PuzzleManager.java
+++ b/src/java/com/threerings/puzzle/server/PuzzleManager.java
@@ -508,9 +508,9 @@ public abstract class PuzzleManager extends GameManager
protected abstract BoardSummary newBoardSummary (Board board);
// documentation inherited from interface PuzzleGameProvider
- public void updateProgress (ClientObject caller, int roundId, int[] events)
+ public void updateProgress (ClientObject caller, int sessionId, int[] events)
{
- updateProgressSync(caller, roundId, events, null);
+ updateProgressSync(caller, sessionId, events, null);
}
/**
@@ -518,42 +518,37 @@ public abstract class PuzzleManager extends GameManager
* checks to make sure that the progress update is valid and the
* puzzle is still in play and then applies the updates via {@link #applyProgressEvents}.
*/
- public void updateProgressSync (ClientObject caller, int roundId, int[] events, Board[] states)
+ public void updateProgressSync (ClientObject caller, int sessionId, int[] events, Board[] states)
{
- // bail if the progress update isn't for the current round
- if (roundId != _puzobj.roundId) {
- // only warn if this isn't a straggling update from the
- // previous round
- if (roundId != _puzobj.roundId-1) {
- log.warning("Received progress update for invalid round, " +
- "not applying [game=" + _puzobj.which() +
- ", invalidRoundId=" + roundId +
- ", roundId=" + _puzobj.roundId + "].");
+ // bail if the progress update isn't for the current session
+ if (sessionId != _puzobj.sessionId) {
+ // only warn if this isn't a straggling update from the previous session
+ if (sessionId != _puzobj.sessionId-1) {
+ log.warning("Received progress update for invalid session, not applying " +
+ "[game=" + _puzobj.which() + ", invalidSessionId=" + sessionId +
+ ", sessionId=" + _puzobj.sessionId + "].");
}
return;
}
// if the game is over, we wing straggling updates
if (!_puzobj.isInPlay()) {
- log.debug("Ignoring straggling events " +
- "[game=" + _puzobj.which() +
- ", who=" + caller.who() +
- ", events=" + StringUtil.toString(events) + "].");
+ log.debug("Ignoring straggling events", "game", _puzobj.which(), "who", caller.who(),
+ "events", events);
return;
}
// determine the caller's player index in the game
int pidx = IntListUtil.indexOf(_playerOids, caller.getOid());
if (pidx == -1) {
- log.warning("Received progress update for non-player?! " +
- "[game=" + _puzobj.which() + ", who=" + caller.who() +
- ", ploids=" + StringUtil.toString(_playerOids) + "].");
+ log.warning("Received progress update for non-player?!", "game", _puzobj.which(),
+ "who", caller.who(), "ploids", _playerOids);
return;
}
// Log.info("Handling progress events [game=" + _puzobj.which() +
-// ", pidx=" + pidx + ", roundId=" + roundId +
+// ", pidx=" + pidx + ", sessionId=" + sessionId +
// ", count=" + events.length + "].");
// note that we received a progress update from this player