Implement these listeners in helper classes rather than in ourselves where they
become undesirably part of our public interface. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5485 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -75,7 +75,7 @@ import static com.threerings.crowd.Log.log;
|
|||||||
* well as through event listeners.
|
* well as through event listeners.
|
||||||
*/
|
*/
|
||||||
public class PlaceManager
|
public class PlaceManager
|
||||||
implements MessageListener, OidListListener, ObjectDeathListener, SpeakHandler.SpeakerValidator
|
implements MessageListener, SpeakHandler.SpeakerValidator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* An interface used to allow the registration of standard message handlers to be invoked by
|
* An interface used to allow the registration of standard message handlers to be invoked by
|
||||||
@@ -269,6 +269,8 @@ public class PlaceManager
|
|||||||
// we'll need to hear about place object events
|
// we'll need to hear about place object events
|
||||||
plobj.addListener(this);
|
plobj.addListener(this);
|
||||||
plobj.addListener(_bodyUpdater);
|
plobj.addListener(_bodyUpdater);
|
||||||
|
plobj.addListener(_occListener);
|
||||||
|
plobj.addListener(_deathListener);
|
||||||
|
|
||||||
// configure this place's access controller
|
// configure this place's access controller
|
||||||
plobj.setAccessController(getAccessController());
|
plobj.setAccessController(getAccessController());
|
||||||
@@ -401,36 +403,6 @@ public class PlaceManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// from interface OidListListener
|
|
||||||
public void objectAdded (ObjectAddedEvent event)
|
|
||||||
{
|
|
||||||
if (event.getName().equals(PlaceObject.OCCUPANTS)) {
|
|
||||||
bodyEntered(event.getOid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// from interface OidListListener
|
|
||||||
public void objectRemoved (ObjectRemovedEvent event)
|
|
||||||
{
|
|
||||||
if (event.getName().equals(PlaceObject.OCCUPANTS)) {
|
|
||||||
bodyLeft(event.getOid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// from interface ObjectDeathListener
|
|
||||||
public void objectDestroyed (ObjectDestroyedEvent event)
|
|
||||||
{
|
|
||||||
// unregister ourselves
|
|
||||||
_registry.unmapPlaceManager(this);
|
|
||||||
|
|
||||||
// let our derived classes and delegates shut themselves down
|
|
||||||
try {
|
|
||||||
didShutdown();
|
|
||||||
} catch (Throwable t) {
|
|
||||||
log.warning("Manager choked in didShutdown()", "where", where(), t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// documentation inherited from interface
|
// documentation inherited from interface
|
||||||
public boolean isValidSpeaker (DObject speakObj, ClientObject speaker, byte mode)
|
public boolean isValidSpeaker (DObject speakObj, ClientObject speaker, byte mode)
|
||||||
{
|
{
|
||||||
@@ -556,6 +528,8 @@ public class PlaceManager
|
|||||||
// clear out our listenership
|
// clear out our listenership
|
||||||
_plobj.removeListener(this);
|
_plobj.removeListener(this);
|
||||||
_plobj.removeListener(_bodyUpdater);
|
_plobj.removeListener(_bodyUpdater);
|
||||||
|
_plobj.removeListener(_occListener);
|
||||||
|
_plobj.removeListener(_deathListener);
|
||||||
|
|
||||||
// let our delegates know that we've shut down
|
// let our delegates know that we've shut down
|
||||||
applyToDelegates(new DelegateOp(PlaceManagerDelegate.class) {
|
applyToDelegates(new DelegateOp(PlaceManagerDelegate.class) {
|
||||||
@@ -614,8 +588,7 @@ public class PlaceManager
|
|||||||
|
|
||||||
// let our delegates know what's up
|
// let our delegates know what's up
|
||||||
applyToDelegates(new DelegateOp(PlaceManagerDelegate.class) {
|
applyToDelegates(new DelegateOp(PlaceManagerDelegate.class) {
|
||||||
@Override
|
@Override public void apply (PlaceManagerDelegate delegate) {
|
||||||
public void apply (PlaceManagerDelegate delegate) {
|
|
||||||
delegate.bodyLeft(bodyOid);
|
delegate.bodyLeft(bodyOid);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -728,6 +701,35 @@ public class PlaceManager
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Listens for body entry and departure. */
|
||||||
|
protected OidListListener _occListener = new OidListListener() {
|
||||||
|
public void objectAdded (ObjectAddedEvent event) {
|
||||||
|
if (event.getName().equals(PlaceObject.OCCUPANTS)) {
|
||||||
|
bodyEntered(event.getOid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void objectRemoved (ObjectRemovedEvent event) {
|
||||||
|
if (event.getName().equals(PlaceObject.OCCUPANTS)) {
|
||||||
|
bodyLeft(event.getOid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Listens for death of our place object. */
|
||||||
|
protected ObjectDeathListener _deathListener = new ObjectDeathListener() {
|
||||||
|
public void objectDestroyed (ObjectDestroyedEvent event) {
|
||||||
|
// unregister ourselves
|
||||||
|
_registry.unmapPlaceManager(PlaceManager.this);
|
||||||
|
|
||||||
|
// let our derived classes and delegates shut themselves down
|
||||||
|
try {
|
||||||
|
didShutdown();
|
||||||
|
} catch (Throwable t) {
|
||||||
|
log.warning("Manager choked in didShutdown()", "where", where(), t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** A reference to the place registry with which we're registered. */
|
/** A reference to the place registry with which we're registered. */
|
||||||
protected PlaceRegistry _registry;
|
protected PlaceRegistry _registry;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user