Treasure Drop depended on the previous behavior, where if the hover sprite

was still hitting it didn't check for a new one. Let's keep the
check but instead let's just make sure that we ignore sprites
that are non-action or non-hover or are disabled.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3731 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2005-10-13 08:54:25 +00:00
parent aed0f94e50
commit bb5e7fed19
+12 -10
View File
@@ -39,6 +39,7 @@ import javax.swing.event.AncestorEvent;
import javax.swing.event.MouseInputAdapter; import javax.swing.event.MouseInputAdapter;
import java.util.Arrays; import java.util.Arrays;
import java.util.ArrayList;
import com.samskivert.swing.Controller; import com.samskivert.swing.Controller;
import com.samskivert.swing.Label; import com.samskivert.swing.Label;
@@ -726,20 +727,21 @@ public class MediaPanel extends JComponent
} }
/** /**
* Utility method, get the highest sprite, return it * Utility method, get the highest non-disabled action/hover sprite.
* if it's enabled.
*/ */
protected Sprite getHit (MouseEvent me) protected Sprite getHit (MouseEvent me)
{ {
// TODO: this should get all hit sprites, sort them by render ArrayList list = new ArrayList();
// priority and then return the first non-disabled sprite _spritemgr.getHitSprites(list, me.getX(), me.getY());
Sprite s = _spritemgr.getHighestHitSprite(me.getX(), me.getY()); for (int ii = 0, nn = list.size(); ii < nn; ii++) {
if (!(s instanceof DisableableSprite) || Object o = list.get(ii);
((DisableableSprite) s).isEnabled()) { if ((o instanceof HoverSprite || o instanceof ActionSprite) &&
return s; (!(o instanceof DisableableSprite) ||
} else { ((DisableableSprite) o).isEnabled())) {
return null; return (Sprite) o;
}
} }
return null;
} }
/** The active hover sprite, or action sprite. */ /** The active hover sprite, or action sprite. */