Keep the sceneId of the currently occupied scene in the body object.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1718 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
//
|
||||||
|
// $Id: ScenedBodyObject.java,v 1.1 2002/09/20 00:54:06 mdb Exp $
|
||||||
|
|
||||||
|
package com.threerings.whirled.data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A system that uses the whirled services must provide a body object
|
||||||
|
* extension that implements this interface.
|
||||||
|
*/
|
||||||
|
public interface ScenedBodyObject
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns the scene id currently occupied by this body.
|
||||||
|
*/
|
||||||
|
public int getSceneId ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the scene id currently occupied by this body.
|
||||||
|
*/
|
||||||
|
public void setSceneId (int sceneId);
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneProvider.java,v 1.11 2002/08/14 19:07:57 mdb Exp $
|
// $Id: SceneProvider.java,v 1.12 2002/09/20 00:54:06 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.whirled.server;
|
package com.threerings.whirled.server;
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@ import com.threerings.whirled.Log;
|
|||||||
import com.threerings.whirled.client.SceneService.SceneMoveListener;
|
import com.threerings.whirled.client.SceneService.SceneMoveListener;
|
||||||
import com.threerings.whirled.data.SceneCodes;
|
import com.threerings.whirled.data.SceneCodes;
|
||||||
import com.threerings.whirled.data.SceneModel;
|
import com.threerings.whirled.data.SceneModel;
|
||||||
|
import com.threerings.whirled.data.ScenedBodyObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The scene provider handles the server side of the scene related
|
* The scene provider handles the server side of the scene related
|
||||||
@@ -83,6 +84,10 @@ public class SceneProvider
|
|||||||
// try doing the actual move
|
// try doing the actual move
|
||||||
PlaceConfig config = _locprov.moveTo(source, ploid);
|
PlaceConfig config = _locprov.moveTo(source, ploid);
|
||||||
|
|
||||||
|
// now that we've finally moved, we can update the user object
|
||||||
|
// with the new scene id
|
||||||
|
((ScenedBodyObject)source).setSceneId(scmgr.getScene().getId());
|
||||||
|
|
||||||
// check to see if they need a newer version of the scene data
|
// check to see if they need a newer version of the scene data
|
||||||
SceneModel model = scmgr.getSceneModel();
|
SceneModel model = scmgr.getSceneModel();
|
||||||
if (sceneVersion < model.version) {
|
if (sceneVersion < model.version) {
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
//
|
//
|
||||||
// $Id: ZonedBodyObject.java,v 1.1 2001/12/04 00:31:58 mdb Exp $
|
// $Id: ZonedBodyObject.java,v 1.2 2002/09/20 00:54:06 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.whirled.zone.data;
|
package com.threerings.whirled.zone.data;
|
||||||
|
|
||||||
|
import com.threerings.whirled.data.ScenedBodyObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A system that uses the zone services must provide a body object
|
* A system that uses the zone services must provide a body object
|
||||||
* extension that implements this interface.
|
* extension that implements this interface.
|
||||||
*/
|
*/
|
||||||
public interface ZonedBodyObject
|
public interface ZonedBodyObject extends ScenedBodyObject
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns the zone id currently occupied by this body.
|
* Returns the zone id currently occupied by this body.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: ZoneProvider.java,v 1.10 2002/08/14 19:07:58 mdb Exp $
|
// $Id: ZoneProvider.java,v 1.11 2002/09/20 00:54:06 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.whirled.zone.server;
|
package com.threerings.whirled.zone.server;
|
||||||
|
|
||||||
@@ -13,8 +13,9 @@ import com.threerings.crowd.data.PlaceObject;
|
|||||||
import com.threerings.crowd.server.LocationProvider;
|
import com.threerings.crowd.server.LocationProvider;
|
||||||
|
|
||||||
import com.threerings.whirled.data.SceneModel;
|
import com.threerings.whirled.data.SceneModel;
|
||||||
import com.threerings.whirled.server.SceneRegistry;
|
import com.threerings.whirled.data.ScenedBodyObject;
|
||||||
import com.threerings.whirled.server.SceneManager;
|
import com.threerings.whirled.server.SceneManager;
|
||||||
|
import com.threerings.whirled.server.SceneRegistry;
|
||||||
|
|
||||||
import com.threerings.whirled.zone.Log;
|
import com.threerings.whirled.zone.Log;
|
||||||
import com.threerings.whirled.zone.client.ZoneService.ZoneMoveListener;
|
import com.threerings.whirled.zone.client.ZoneService.ZoneMoveListener;
|
||||||
@@ -150,8 +151,14 @@ public class ZoneProvider
|
|||||||
PlaceConfig config = _locprov.moveTo(source, ploid);
|
PlaceConfig config = _locprov.moveTo(source, ploid);
|
||||||
|
|
||||||
// now that we've finally moved, we can update the user object
|
// now that we've finally moved, we can update the user object
|
||||||
// with the new zone id
|
// with the new scene and zone ids
|
||||||
((ZonedBodyObject)source).setZoneId(summary.zoneId);
|
try {
|
||||||
|
source.startTransaction();
|
||||||
|
((ScenedBodyObject)source).setSceneId(scmgr.getScene().getId());
|
||||||
|
((ZonedBodyObject)source).setZoneId(summary.zoneId);
|
||||||
|
} finally {
|
||||||
|
source.commitTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
// check to see if they need a newer version of the scene data
|
// check to see if they need a newer version of the scene data
|
||||||
SceneModel model = scmgr.getSceneModel();
|
SceneModel model = scmgr.getSceneModel();
|
||||||
|
|||||||
Reference in New Issue
Block a user