diff --git a/src/java/com/threerings/parlor/game/GameManager.java b/src/java/com/threerings/parlor/game/GameManager.java index 5c97b49b8..47c20eea5 100644 --- a/src/java/com/threerings/parlor/game/GameManager.java +++ b/src/java/com/threerings/parlor/game/GameManager.java @@ -1,5 +1,5 @@ // -// $Id: GameManager.java,v 1.28 2002/04/19 21:16:42 ray Exp $ +// $Id: GameManager.java,v 1.29 2002/04/19 21:40:38 ray Exp $ package com.threerings.parlor.game; @@ -85,9 +85,6 @@ public class GameManager extends PlaceManager // set up a delegate op for AI ticking _tickAIOp = new TickAIDelegateOp(); - - // and register ourselves to receive AI ticks - AIGameTicker.registerAIGame(this); } _AIs[pidx] = skill; @@ -142,17 +139,6 @@ public class GameManager extends PlaceManager } } - // documentation inherited - public void shutdown () - { - super.shutdown(); - - // also remove ourselves from the AIticker, if applicable - if (_AIs != null) { - AIGameTicker.unregisterAIGame(this); - } - } - // documentation inherited protected void bodyLeft (int bodyOid) { @@ -250,6 +236,11 @@ public class GameManager extends PlaceManager ((GameManagerDelegate)delegate).gameDidStart(); } }); + + // and register ourselves to receive AI ticks + if (_AIs != null) { + AIGameTicker.registerAIGame(this); + } } /** @@ -299,6 +290,11 @@ public class GameManager extends PlaceManager */ protected void gameDidEnd () { + // remove ourselves from the AIticker, if applicable + if (_AIs != null) { + AIGameTicker.unregisterAIGame(this); + } + // let our delegates do their business applyToDelegates(new DelegateOp() { public void apply (PlaceManagerDelegate delegate) { @@ -369,6 +365,8 @@ public class GameManager extends PlaceManager { if (event.getName().equals(GameObject.STATE)) { switch (event.getIntValue()) { + case GameObject.CANCELLED: + // fall through to GAME_OVER case case GameObject.GAME_OVER: // now we do our end of game processing gameDidEnd(); @@ -410,6 +408,9 @@ public class GameManager extends PlaceManager } } + /** + * A helper operation to distribute AI ticks to our delegates. + */ protected class TickAIDelegateOp implements DelegateOp { public void apply (PlaceManagerDelegate delegate) { diff --git a/src/java/com/threerings/parlor/game/GameManagerDelegate.java b/src/java/com/threerings/parlor/game/GameManagerDelegate.java index dac6ea673..7e2f2ac48 100644 --- a/src/java/com/threerings/parlor/game/GameManagerDelegate.java +++ b/src/java/com/threerings/parlor/game/GameManagerDelegate.java @@ -1,5 +1,5 @@ // -// $Id: GameManagerDelegate.java,v 1.3 2002/04/19 21:16:42 ray Exp $ +// $Id: GameManagerDelegate.java,v 1.4 2002/04/19 21:40:38 ray Exp $ package com.threerings.parlor.game; @@ -35,7 +35,8 @@ public class GameManagerDelegate extends PlaceManagerDelegate } /** - * Called by the manager when we should do some AI. + * Called by the manager when we should do some AI. Only called while + * the game is IN_PLAY. * * @param pidx the player index to fake some gameplay for. * @param skill the base skill level of the AI (0 - 100 inclusive).