Ignore request to start up an in-play game; moved code that starts a game

when all players have arrived in the game room into a method that can be
overridden.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1000 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2002-02-14 07:28:12 +00:00
parent 2e9627d601
commit 573939b483
@@ -1,5 +1,5 @@
//
// $Id: GameManager.java,v 1.20 2002/02/13 18:50:15 mdb Exp $
// $Id: GameManager.java,v 1.21 2002/02/14 07:28:12 mdb Exp $
package com.threerings.parlor.game;
@@ -137,6 +137,19 @@ public class GameManager extends PlaceManager
shutdown();
}
/**
* Called when all players have arrived in the game room. By default,
* this starts up the game, but a manager may wish to override this
* and start the game according to different criterion.
*/
protected void playersAllHere ()
{
// start up the game (if we haven't already)
if (_gameobj.state == GameObject.AWAITING_PLAYERS) {
startGame();
}
}
/**
* This is called when the game is ready to start (all players
* involved have delivered their "am ready" notifications). It calls
@@ -147,6 +160,13 @@ public class GameManager extends PlaceManager
*/
public void startGame ()
{
// complain if we're already started
if (_gameobj.state == GameObject.IN_PLAY) {
Log.warning("Requested to start an already in-play game " +
"[game=" + _gameobj + "].");
return;
}
// let the derived class do its pre-start stuff
gameWillStart();
@@ -250,8 +270,7 @@ public class GameManager extends PlaceManager
public void handleEvent (MessageEvent event, PlaceManager pmgr)
{
int cloid = event.getSourceOid();
BodyObject body = (BodyObject)
CrowdServer.omgr.getObject(cloid);
BodyObject body = (BodyObject)CrowdServer.omgr.getObject(cloid);
if (body == null) {
Log.warning("Player sent am ready notification and then " +
"disappeared [event=" + event + "].");
@@ -270,10 +289,9 @@ public class GameManager extends PlaceManager
}
}
// if everyone is now ready to go, start up the game (if we
// haven't already)
if (allSet && _gameobj.state == GameObject.AWAITING_PLAYERS) {
startGame();
// if everyone is now ready to go, make a note of it
if (allSet) {
playersAllHere();
}
}
}