diff --git a/src/java/com/threerings/media/AbstractMedia.java b/src/java/com/threerings/media/AbstractMedia.java index 9cc5b13c..22c38de5 100644 --- a/src/java/com/threerings/media/AbstractMedia.java +++ b/src/java/com/threerings/media/AbstractMedia.java @@ -37,7 +37,7 @@ import com.samskivert.util.StringUtil; * Something that can be rendered on the media panel. */ public abstract class AbstractMedia - implements Shape, Comparable + implements Shape { /** A {@link #_renderOrder} value at or above which, indicates that this * media is in the HUD (heads up display) and should not scroll when the @@ -166,8 +166,10 @@ public abstract class AbstractMedia return _bounds.getPathIterator(at, flatness); } - // from interface Comparable - public int compareTo (AbstractMedia other) + /** + * Compares this media to the specified media by render order. + */ + public int renderCompareTo (AbstractMedia other) { int result = _renderOrder - other._renderOrder; return (result != 0) ? result : naturalCompareTo(other); diff --git a/src/java/com/threerings/media/AbstractMediaManager.java b/src/java/com/threerings/media/AbstractMediaManager.java index 366eec9c..1c8ddd04 100644 --- a/src/java/com/threerings/media/AbstractMediaManager.java +++ b/src/java/com/threerings/media/AbstractMediaManager.java @@ -27,7 +27,7 @@ import java.awt.Shape; import java.util.ArrayList; import java.util.Comparator; -import com.samskivert.util.ComparableArrayList; +import com.samskivert.util.SortableArrayList; import com.samskivert.util.ObserverList.ObserverOp; import com.samskivert.util.ObserverList; import com.samskivert.util.Tuple; @@ -166,7 +166,7 @@ public abstract class AbstractMediaManager } _media.remove(media); - _media.insertSorted(media); + _media.insertSorted(media, RENDER_ORDER); } /** @@ -195,7 +195,7 @@ public abstract class AbstractMediaManager } media.init(this); - int ipos = _media.insertSorted(media); + int ipos = _media.insertSorted(media, RENDER_ORDER); // if we've started our tick but have not yet painted our media, we need to take care that // this newly added media will be ticked before our upcoming render @@ -270,7 +270,7 @@ public abstract class AbstractMediaManager } /** Type safety jockeying. */ - protected abstract ComparableArrayList createMediaList (); + protected abstract SortableArrayList createMediaList (); /** * Dispatches all queued media notifications. @@ -284,6 +284,13 @@ public abstract class AbstractMediaManager _notify.clear(); } + /** Used to sort media by render order. */ + protected static final Comparator RENDER_ORDER = new Comparator() { + public int compare (AbstractMedia am1, AbstractMedia am2) { + return am1.renderCompareTo(am2); + } + }; + /** The media host we're working with. */ protected MediaHost _host; @@ -295,8 +302,8 @@ public abstract class AbstractMediaManager new ArrayList>(); /** Our render-order sorted list of media. */ - @SuppressWarnings("unchecked") protected ComparableArrayList _media = - (ComparableArrayList)createMediaList(); + @SuppressWarnings("unchecked") protected SortableArrayList _media = + (SortableArrayList)createMediaList(); /** The position in our media list that we're ticking (while in the middle of a call to {@link * #tick}) otherwise -1. */ diff --git a/src/java/com/threerings/media/animation/AnimationManager.java b/src/java/com/threerings/media/animation/AnimationManager.java index d8c40ff0..be15a8f7 100644 --- a/src/java/com/threerings/media/animation/AnimationManager.java +++ b/src/java/com/threerings/media/animation/AnimationManager.java @@ -21,7 +21,7 @@ package com.threerings.media.animation; -import com.samskivert.util.ComparableArrayList; +import com.samskivert.util.SortableArrayList; import com.threerings.media.AbstractMedia; import com.threerings.media.AbstractMediaManager; @@ -71,10 +71,10 @@ public class AnimationManager extends AbstractMediaManager } @Override // from AbstractMediaManager - protected ComparableArrayList createMediaList () + protected SortableArrayList createMediaList () { - return (_anims = new ComparableArrayList()); + return (_anims = new SortableArrayList()); } - protected ComparableArrayList _anims; + protected SortableArrayList _anims; } diff --git a/src/java/com/threerings/media/sprite/SpriteManager.java b/src/java/com/threerings/media/sprite/SpriteManager.java index a7c3a5f6..1f66ba8d 100644 --- a/src/java/com/threerings/media/sprite/SpriteManager.java +++ b/src/java/com/threerings/media/sprite/SpriteManager.java @@ -29,7 +29,7 @@ import java.util.List; import java.util.Iterator; import com.samskivert.util.Predicate; -import com.samskivert.util.ComparableArrayList; +import com.samskivert.util.SortableArrayList; import com.threerings.media.AbstractMedia; import com.threerings.media.AbstractMediaManager; @@ -248,10 +248,10 @@ public class SpriteManager extends AbstractMediaManager // } @Override // from AbstractMediaManager - protected ComparableArrayList createMediaList () + protected SortableArrayList createMediaList () { - return (_sprites = new ComparableArrayList()); + return (_sprites = new SortableArrayList()); } - protected ComparableArrayList _sprites; + protected SortableArrayList _sprites; }