com.threerings.whirled.zone.server

## Interface ZoneManager

All Known Subinterfaces:
  PeeredZoneManager

    public interface ZoneManager

A zone is a collection of scenes organized into a connected group. A user can wander around within a zone, moving from scene to scene via the standard mechanisms. To move between zones, they must use a special mechanism (like at the dock, they can move from an island zone into their ship zone; or they can move from an island zone into their house zone). A zone provides scene summary information that can be used to display a map of the zone to the client.

### Nested Class Summary

Nested Classes
`static interface` `ZoneManager.ResolutionListener` Used to notify requesters when an asynchronous zone load has completed (successfully or not).

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `bodyDidEnterZone(com.threerings.crowd.data.BodyObject body, int zoneId)` Called when a body has been granted access to a zone.
`String` `ratifyBodyEntry(com.threerings.crowd.data.BodyObject body, int zoneId)` Called when a body has requested to enter a zone.
`String` `ratifyBodyExit(com.threerings.crowd.data.BodyObject body)` Called when a body has requested to leave a zone.
`void` `resolveZone(int zoneId, ZoneManager.ResolutionListener listener)` Resolves and delivers the scene summary information for the requested zone.

### Method Detail

#### resolveZone

    void resolveZone(int zoneId,
                     ZoneManager.ResolutionListener listener)

Resolves and delivers the scene summary information for the requested zone. Zone resolution is an asynchronous process, which necessitates this callback-style interface.

Parameters:
  `zoneId` - the qualified zone id of the zone to resolve.
  `listener` - the listener that should be notified when the zone is successfully resolved or is known to have failed to resolve.

#### ratifyBodyExit

    String ratifyBodyExit(com.threerings.crowd.data.BodyObject body)

Called when a body has requested to leave a zone. The zone manager may return null to indicate that the body is allowed to leave the current zone or a string error code indicating the reason for denial of access (which will be propagated back to the requesting client).

Parameters:
  `body` - the body object of the user that desires to depart their current zone (which can be obtained by casting the `BodyObject` to a `ZonedBodyObject`).

#### ratifyBodyEntry

    String ratifyBodyEntry(com.threerings.crowd.data.BodyObject body,
                           int zoneId)

Called when a body has requested to enter a zone. The zone manager may return null to indicate that the body is allowed access to the zone or a string error code indicating the reason for denial of access (which will be propagated back to the requesting client). This method is called after the zone is resolved so that the zone manager may complete the ratification process without blocking (which it must do).

Parameters:
  `body` - the body object of the user that desires access to the specified zone.
  `zoneId` - the id of the zone to which the user desires access.

#### bodyDidEnterZone

    void bodyDidEnterZone(com.threerings.crowd.data.BodyObject body,
                          int zoneId)

Called when a body has been granted access to a zone. This method must not block.

Parameters:
  `body` - the body object of the user that was just granted access to a zone.
  `zoneId` - the id of the zone to which they were granted access.