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;
@@ -7,11 +7,12 @@ import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Shape;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.samskivert.util.ObserverList;
import com.threerings.media.AbstractMediaManager;
import com.threerings.media.Log;
import com.threerings.media.RegionManager;
@@ -133,12 +134,10 @@ public class SpriteManager extends AbstractMediaManager
}
// documentation inherited
protected void dispatchEvent (ArrayList observers, Object event)
protected void dispatchEvent (ObserverList observers, Object event)
{
SpriteEvent sevt = (SpriteEvent) event;
for (int ii=0, nn=observers.size(); ii < nn; ii++) {
((SpriteObserver) observers.get(ii)).handleEvent(sevt);
}
_dispatchOp.init((SpriteEvent)event);
observers.apply(_dispatchOp);
}
// 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());
// }
// }
/** 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();
}