diff --git a/src/java/com/threerings/crowd/server/OccupantOp.java b/src/java/com/threerings/crowd/server/OccupantOp.java new file mode 100644 index 000000000..b6ee5b076 --- /dev/null +++ b/src/java/com/threerings/crowd/server/OccupantOp.java @@ -0,0 +1,18 @@ +// +// $Id: OccupantOp.java,v 1.1 2002/10/31 01:12:08 shaper Exp $ + +package com.threerings.crowd.server; + +import com.threerings.crowd.data.OccupantInfo; + +/** + * An operation to be applied to all occupants in a location that may + * contain occupants, e.g., a {@link PlaceManager}. + */ +public interface OccupantOp +{ + /** + * Called with the occupant info for each occupant in the location. + */ + public void apply (OccupantInfo info); +} diff --git a/src/java/com/threerings/crowd/server/PlaceManager.java b/src/java/com/threerings/crowd/server/PlaceManager.java index df46260f5..5a584399c 100644 --- a/src/java/com/threerings/crowd/server/PlaceManager.java +++ b/src/java/com/threerings/crowd/server/PlaceManager.java @@ -1,10 +1,11 @@ // -// $Id: PlaceManager.java,v 1.39 2002/10/26 02:40:30 shaper Exp $ +// $Id: PlaceManager.java,v 1.40 2002/10/31 01:12:08 shaper Exp $ package com.threerings.crowd.server; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.Properties; import com.samskivert.util.HashIntMap; @@ -102,6 +103,20 @@ public class PlaceManager return (OccupantInfo)_occInfo.get(bodyOid); } + /** + * Applies the supplied occupant operation to each occupant currently + * present in this place. + */ + public void applyToOccupants (OccupantOp op) + { + if (_plobj != null) { + Iterator iter = _plobj.occupantInfo.entries(); + while (iter.hasNext()) { + op.apply((OccupantInfo)iter.next()); + } + } + } + /** * Updates the occupant info for this room occupant. Note: * This must be used rather than setting the occupant info directly to