From ec49d733919eb6312015648e050b13718f723651 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 29 Jan 2003 21:31:37 +0000 Subject: [PATCH] Added support for default render priorities. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2225 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/media/tile/ObjectTile.java | 22 ++++++++++++++++++- .../threerings/media/tile/ObjectTileSet.java | 18 +++++++++++++-- .../tile/tools/xml/ObjectTileSetRuleSet.java | 14 +++++++++++- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/java/com/threerings/media/tile/ObjectTile.java b/src/java/com/threerings/media/tile/ObjectTile.java index f9b8a5fcc..36cba0d30 100644 --- a/src/java/com/threerings/media/tile/ObjectTile.java +++ b/src/java/com/threerings/media/tile/ObjectTile.java @@ -1,5 +1,5 @@ // -// $Id: ObjectTile.java,v 1.13 2003/01/13 22:49:46 mdb Exp $ +// $Id: ObjectTile.java,v 1.14 2003/01/29 21:31:37 mdb Exp $ package com.threerings.media.tile; @@ -94,6 +94,22 @@ public class ObjectTile extends Tile _originY = y; } + /** + * Returns this object tile's default render priority. + */ + public int getPriority () + { + return _priority; + } + + /** + * Sets this object tile's default render priority. + */ + protected void setPriority (int priority) + { + _priority = priority; + } + // documentation inherited public void toString (StringBuffer buf) { @@ -102,6 +118,7 @@ public class ObjectTile extends Tile buf.append(", baseHeight=").append(_baseHeight); buf.append(", originX=").append(_originX); buf.append(", originY=").append(_originY); + buf.append(", priority=").append(_priority); } /** The object footprint width in unit tile units. */ @@ -119,4 +136,7 @@ public class ObjectTile extends Tile * origin or MIN_VALUE if the origin should be calculated based on the * footprint. */ protected int _originY = Integer.MIN_VALUE; + + /** This object tile's default render priority. */ + protected int _priority; } diff --git a/src/java/com/threerings/media/tile/ObjectTileSet.java b/src/java/com/threerings/media/tile/ObjectTileSet.java index a6941a4fa..f6e75ea8b 100644 --- a/src/java/com/threerings/media/tile/ObjectTileSet.java +++ b/src/java/com/threerings/media/tile/ObjectTileSet.java @@ -1,5 +1,5 @@ // -// $Id: ObjectTileSet.java,v 1.10 2003/01/15 09:28:43 mdb Exp $ +// $Id: ObjectTileSet.java,v 1.11 2003/01/29 21:31:37 mdb Exp $ package com.threerings.media.tile; @@ -52,6 +52,14 @@ public class ObjectTileSet extends SwissArmyTileSet _yorigins = yorigins; } + /** + * Sets the default render priorities for our object tiles. + */ + public void setPriorities (int[] priorities) + { + _priorities = priorities; + } + // documentation inherited protected void toString (StringBuffer buf) { @@ -60,6 +68,7 @@ public class ObjectTileSet extends SwissArmyTileSet buf.append(", oheights=").append(StringUtil.toString(_oheights)); buf.append(", xorigins=").append(StringUtil.toString(_xorigins)); buf.append(", yorigins=").append(StringUtil.toString(_yorigins)); + buf.append(", prios=").append(StringUtil.toString(_priorities)); } /** @@ -75,8 +84,10 @@ public class ObjectTileSet extends SwissArmyTileSet if (_xorigins != null) { tile.setOrigin(_xorigins[tileIndex], _yorigins[tileIndex]); } + if (_priorities != null) { + tile.setPriority(_priorities[tileIndex]); + } return tile; - } /** The width (in tile units) of our object tiles. */ @@ -91,6 +102,9 @@ public class ObjectTileSet extends SwissArmyTileSet /** The y offset in pixels to the origin of the tile images. */ protected int[] _yorigins; + /** The default render priorities of our objects. */ + protected int[] _priorities; + /** Increase this value when object's serialized state is impacted by * a class change (modification of fields, inheritance). */ private static final long serialVersionUID = 1; diff --git a/src/java/com/threerings/media/tile/tools/xml/ObjectTileSetRuleSet.java b/src/java/com/threerings/media/tile/tools/xml/ObjectTileSetRuleSet.java index 075dcde5d..f59675ba0 100644 --- a/src/java/com/threerings/media/tile/tools/xml/ObjectTileSetRuleSet.java +++ b/src/java/com/threerings/media/tile/tools/xml/ObjectTileSetRuleSet.java @@ -1,5 +1,5 @@ // -// $Id: ObjectTileSetRuleSet.java,v 1.4 2002/02/05 20:29:09 mdb Exp $ +// $Id: ObjectTileSetRuleSet.java,v 1.5 2003/01/29 21:31:37 mdb Exp $ package com.threerings.media.tile.tools.xml; @@ -36,6 +36,8 @@ import com.threerings.media.tile.ObjectTileSet; * <objectWidths>4, 3, 4, 3</objectWidths> * <!-- the heights (in unit tile count) of the objects --> * <objectHeights>3, 4, 3, 4</objectHeights> + * <!-- the default render priorities for these object tiles --> + * <priorities>0, 0, -1, 0</priorities> * </tileset> * */ @@ -85,6 +87,16 @@ public class ObjectTileSetRuleSet extends SwissArmyTileSetRuleSet ((ObjectTileSet)target).setYOrigins(yorigins); } }); + + digester.addRule( + _prefix + TILESET_PATH + "/priorities", + new CallMethodSpecialRule(digester) { + public void parseAndSet (String bodyText, Object target) + { + int[] prios = StringUtil.parseIntArray(bodyText); + ((ObjectTileSet)target).setPriorities(prios); + } + }); } // documentation inherited