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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user