Allow customizing the ZoneMoveHandler.

git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@881 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
Andrzej Kapolka
2009-09-29 00:43:35 +00:00
parent 54c809d21a
commit 5c7f0aea67
2 changed files with 21 additions and 3 deletions
@@ -68,7 +68,7 @@ public class ZoneMoveHandler extends AbstractSceneMoveHandler
_summary = summary;
// now resolve the target scene
_screg.resolveScene(_sceneId, this);
resolveScene();
}
// from interface ZoneManager.ResolutionListener
@@ -112,6 +112,14 @@ public class ZoneMoveHandler extends AbstractSceneMoveHandler
_zmgr.bodyDidEnterZone(_body, _summary.zoneId);
}
/**
* Begins the process of resolving the target scene.
*/
protected void resolveScene ()
{
_screg.resolveScene(_sceneId, this);
}
protected ZoneManager _zmgr;
protected SceneRegistry _screg;
protected int _sceneId, _version;
@@ -171,8 +171,18 @@ public class ZoneRegistry
}
// resolve the zone and move the user
zmgr.resolveZone(zoneId, new ZoneMoveHandler(_locman, zmgr, _screg, (BodyObject)caller,
sceneId, sceneVer, listener));
zmgr.resolveZone(zoneId, createZoneMoveHandler(
zmgr, (BodyObject)caller, sceneId, sceneVer, listener));
}
/**
* Creates a handler to handle the described zone movement.
*/
protected ZoneMoveHandler createZoneMoveHandler (
ZoneManager zmgr, BodyObject body, int sceneId, int sceneVer,
ZoneService.ZoneMoveListener listener)
{
return new ZoneMoveHandler(_locman, zmgr, _screg, body, sceneId, sceneVer, listener);
}
/** A table of zone managers. */