Use observer lists.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1906 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2002-11-05 20:52:39 +00:00
parent 400b8ca638
commit d5dbc514ca
@@ -1,5 +1,5 @@
// //
// $Id: SpriteManager.java,v 1.38 2002/10/08 21:03:37 ray Exp $ // $Id: SpriteManager.java,v 1.39 2002/11/05 20:52:39 mdb Exp $
package com.threerings.media.sprite; package com.threerings.media.sprite;
@@ -7,11 +7,12 @@ import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.Shape; import java.awt.Shape;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import com.samskivert.util.ObserverList;
import com.threerings.media.AbstractMediaManager; import com.threerings.media.AbstractMediaManager;
import com.threerings.media.Log; import com.threerings.media.Log;
import com.threerings.media.RegionManager; import com.threerings.media.RegionManager;
@@ -133,12 +134,10 @@ public class SpriteManager extends AbstractMediaManager
} }
// documentation inherited // documentation inherited
protected void dispatchEvent (ArrayList observers, Object event) protected void dispatchEvent (ObserverList observers, Object event)
{ {
SpriteEvent sevt = (SpriteEvent) event; _dispatchOp.init((SpriteEvent)event);
for (int ii=0, nn=observers.size(); ii < nn; ii++) { observers.apply(_dispatchOp);
((SpriteObserver) observers.get(ii)).handleEvent(sevt);
}
} }
// NOTE- collision handling code is turned off for now. To re-implement, // NOTE- collision handling code is turned off for now. To re-implement,
@@ -213,4 +212,23 @@ public class SpriteManager extends AbstractMediaManager
// return (s2.getX() - s1.getX()); // return (s2.getX() - s1.getX());
// } // }
// } // }
/** Used by {@link #dispatchEvent}. */
protected static class DispatchOp implements ObserverList.ObserverOp
{
public void init (SpriteEvent event)
{
_event = event;
}
public boolean apply (Object observer)
{
((SpriteObserver)observer).handleEvent(_event);
return true;
}
protected SpriteEvent _event;
};
protected DispatchOp _dispatchOp = new DispatchOp();
} }