From f3f4ba4c167658956b25d4afdbf02381fc33d6f6 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Mon, 17 Dec 2001 04:11:40 +0000 Subject: [PATCH] Let observers know when we attempt to switch zones as well as when we succeed or fail in those attempts. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@824 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/whirled/zone/client/ZoneDirector.java | 10 ++++++++-- .../threerings/whirled/zone/client/ZoneObserver.java | 12 +++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/java/com/threerings/whirled/zone/client/ZoneDirector.java b/src/java/com/threerings/whirled/zone/client/ZoneDirector.java index 18d84c92b..677ece4dd 100644 --- a/src/java/com/threerings/whirled/zone/client/ZoneDirector.java +++ b/src/java/com/threerings/whirled/zone/client/ZoneDirector.java @@ -1,5 +1,5 @@ // -// $Id: ZoneDirector.java,v 1.3 2001/12/17 04:00:27 mdb Exp $ +// $Id: ZoneDirector.java,v 1.4 2001/12/17 04:11:40 mdb Exp $ package com.threerings.whirled.zone.client; @@ -82,6 +82,10 @@ public class ZoneDirector return; } + // let our zone observers know that we're attempting to switch + // zones + notifyObservers(new Integer(zoneId)); + // check the version of our cached copy of the scene to which // we're requesting to move; if we were unable to load it, assume // a cached version of zero @@ -155,7 +159,9 @@ public class ZoneDirector for (int i = 0; i < _observers.size(); i++) { ZoneObserver obs = (ZoneObserver)_observers.get(i); try { - if (data instanceof ZoneSummary) { + if (data instanceof Integer) { + obs.zoneWillChange(((Integer)data).intValue()); + } else if (data instanceof ZoneSummary) { obs.zoneDidChange((ZoneSummary)data); } else { obs.zoneChangeFailed((String)data); diff --git a/src/java/com/threerings/whirled/zone/client/ZoneObserver.java b/src/java/com/threerings/whirled/zone/client/ZoneObserver.java index 5c070069e..402ce623f 100644 --- a/src/java/com/threerings/whirled/zone/client/ZoneObserver.java +++ b/src/java/com/threerings/whirled/zone/client/ZoneObserver.java @@ -1,5 +1,5 @@ // -// $Id: ZoneObserver.java,v 1.1 2001/12/17 04:00:27 mdb Exp $ +// $Id: ZoneObserver.java,v 1.2 2001/12/17 04:11:40 mdb Exp $ package com.threerings.whirled.zone.client; @@ -11,6 +11,16 @@ import com.threerings.whirled.zone.data.ZoneSummary; */ public interface ZoneObserver { + /** + * Called when we begin the process of switching to a new zone. This + * will be followed by a call to {@link #zoneDidChange} to indicate + * that the change was successful or {@link #zoneChangeFailed} if the + * change fails. + * + * @param zoneId the zone id of the zone to which we are changing. + */ + public void zoneWillChange (int zoneId); + /** * Called when we have switched to a new zone. *