tag?
+ int tid = getInt(attributes.getValue("tid"));
+ int wid = getInt(attributes.getValue("width"));
+ int hei = getInt(attributes.getValue("height"));
+
+ // add the object info to the tileset object hashtable
+ _tset.objects.put(tid, new int[] { wid, hei });
}
}
+ // documentation inherited
public void endElement (String uri, String localName, String qName)
{
// we know we've received the entirety of the character data
@@ -96,6 +108,7 @@ public class XMLTileSetParser extends DefaultHandler
_chars = new StringBuffer();
}
+ // documentation inherited
public void characters (char ch[], int start, int length)
{
// bail if we're not within a meaningful tag
@@ -106,6 +119,7 @@ public class XMLTileSetParser extends DefaultHandler
_chars.append(ch, start, length);
}
+ // documentation inherited
public ArrayList loadTileSets (String fname) throws IOException
{
try {
@@ -141,15 +155,16 @@ public class XMLTileSetParser extends DefaultHandler
{
_chars = new StringBuffer();
_tset = createTileSet();
- _model = _tset.getModel();
}
/**
- * Constructs and returns a new tile set object.
+ * Constructs and returns a new tile set object. Derived classes
+ * may override this method to create their own sub-classes of the
+ * TileSet object.
*/
- protected TileSet createTileSet ()
+ protected TileSetImpl createTileSet ()
{
- return new TileSet();
+ return new TileSetImpl();
}
/**
@@ -167,26 +182,19 @@ public class XMLTileSetParser extends DefaultHandler
}
/**
- * Returns the integer tileset id corresponding to the given
- * string, or DEF_TSID if an error occurred.
+ * Returns the integer represented by the given string or -1 if an
+ * error occurred.
*/
- protected int getTileSetId (String str)
+ protected int getInt (String str)
{
- if (str == null) {
- return DEF_TSID;
- }
-
try {
- return Integer.parseInt(str);
+ return (str == null) ? -1 : Integer.parseInt(str);
} catch (NumberFormatException nfe) {
- Log.warning("Malformed integer tileset id [str=" + str + "].");
- return DEF_TSID;
+ Log.warning("Malformed integer value [str=" + str + "].");
+ return -1;
}
}
- /** Default tileset id. */
- protected static final int DEF_TSID = -1;
-
/** Default tileset name. */
protected static final String DEF_NAME = "Untitled";
@@ -199,9 +207,6 @@ public class XMLTileSetParser extends DefaultHandler
/** Temporary storage of character data while parsing. */
protected StringBuffer _chars;
- /** The tile set whose model is populated while parsing. */
- protected TileSet _tset;
-
- /** The tile set data model populated while parsing. */
- protected TileSet.TileSetModel _model;
+ /** The tile set populated while parsing. */
+ protected TileSetImpl _tset;
}
diff --git a/src/java/com/threerings/miso/client/DisplayMisoSceneImpl.java b/src/java/com/threerings/miso/client/DisplayMisoSceneImpl.java
index 4cd8f65f3..661a4542d 100644
--- a/src/java/com/threerings/miso/client/DisplayMisoSceneImpl.java
+++ b/src/java/com/threerings/miso/client/DisplayMisoSceneImpl.java
@@ -1,5 +1,5 @@
//
-// $Id: DisplayMisoSceneImpl.java,v 1.38 2001/10/08 21:04:25 shaper Exp $
+// $Id: DisplayMisoSceneImpl.java,v 1.39 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene;
@@ -10,11 +10,12 @@ import java.util.List;
import com.samskivert.util.StringUtil;
-import com.threerings.media.tile.TileManager;
+import com.threerings.media.tile.*;
import com.threerings.whirled.data.Scene;
import com.threerings.miso.Log;
import com.threerings.miso.scene.util.ClusterUtil;
+
import com.threerings.miso.tile.MisoTile;
/**
@@ -24,71 +25,55 @@ import com.threerings.miso.tile.MisoTile;
*/
public class MisoSceneImpl implements EditableMisoScene
{
+ /** The scene name. */
+ public String name = DEF_SCENE_NAME;
+
+ /** The locations within the scene. */
+ public ArrayList locations = new ArrayList();
+
+ /** The clusters within the scene. */
+ public ArrayList clusters = new ArrayList();
+
+ /** The portals to different scenes. */
+ public ArrayList portals = new ArrayList();
+
+ /** The base tiles in the scene. */
+ public MisoTile[][] baseTiles;
+
+ /** The fringe tiles in the scene. */
+ public Tile[][] fringeTiles;
+
+ /** The object tiles in the scene. */
+ public ObjectTile[][] objectTiles;
+
+ /** All tiles in the scene. */
+ public Tile[][][] tiles;
+
/**
* Construct a new miso scene object. The base layer tiles are
* initialized to contain tiles of the specified default tileset and
* tile id.
*
* @param model the iso scene view model.
- * @param tilemgr the tile manager.
- * @param deftsid the default tileset id.
- * @param deftid the default tile id.
+ * @param deftile the default tile.
*/
- public MisoSceneImpl (IsoSceneViewModel model, TileManager tilemgr,
- int deftsid, int deftid)
+ public MisoSceneImpl (IsoSceneViewModel model, MisoTile deftile)
{
_model = model;
- _tilemgr = tilemgr;
+ _deftile = deftile;
- _sid = SID_INVALID;
- _name = DEF_SCENE_NAME;
+ baseTiles = new MisoTile[_model.scenewid][_model.scenehei];
+ fringeTiles = new Tile[_model.scenewid][_model.scenehei];
+ objectTiles = new ObjectTile[_model.scenewid][_model.scenehei];
+ tiles = new Tile[][][] { baseTiles, fringeTiles, objectTiles };
- _locations = new ArrayList();
- _clusters = new ArrayList();
- _portals = new ArrayList();
-
- _tiles = new MisoTile[_model.scenewid][_model.scenehei][NUM_LAYERS];
- _deftile = (MisoTile)_tilemgr.getTile(deftsid, deftid);
- for (int xx = 0; xx < _model.scenewid; xx++) {
- for (int yy = 0; yy < _model.scenehei; yy++) {
- for (int ii = 0; ii < NUM_LAYERS; ii++) {
- if (ii == LAYER_BASE) {
- _tiles[xx][yy][ii] = _deftile;
- }
- }
- }
- }
- }
-
- /**
- * Construct a new Miso scene object with the given values.
- *
- * @param model the iso scene view model.
- * @param tilemgr the tile manager.
- * @param name the scene name.
- * @param locations the locations.
- * @param portals the portals.
- * @param tiles the tiles comprising the scene.
- */
- public MisoSceneImpl (IsoSceneViewModel model, TileManager tilemgr,
- String name, ArrayList locations,
- ArrayList clusters, ArrayList portals,
- MisoTile[][][] tiles)
- {
- _model = model;
- _tilemgr = tilemgr;
- _sid = SID_INVALID;
- _name = name;
- _locations = locations;
- _clusters = clusters;
- _portals = portals;
- _tiles = tiles;
+ initBaseTiles();
}
// documentation inherited
public String getName ()
{
- return _name;
+ return name;
}
// documentation inherited
@@ -109,10 +94,32 @@ public class MisoSceneImpl implements EditableMisoScene
return null;
}
- // documentation inherited
- public MisoTile[][][] getTiles ()
+ public Tile[][][] getTiles ()
{
- return _tiles;
+ return tiles;
+ }
+
+ public Tile[][] getTiles (int lnum)
+ {
+ return tiles[lnum];
+ }
+
+ // documentation inherited
+ public MisoTile[][] getBaseLayer ()
+ {
+ return baseTiles;
+ }
+
+ // documentation inherited
+ public Tile[][] getFringeLayer ()
+ {
+ return fringeTiles;
+ }
+
+ // documentation inherited
+ public ObjectTile[][] getObjectLayer ()
+ {
+ return objectTiles;
}
// documentation inherited
@@ -124,19 +131,19 @@ public class MisoSceneImpl implements EditableMisoScene
// documentation inherited
public List getLocations ()
{
- return _locations;
+ return locations;
}
// documentation inherited
public List getClusters ()
{
- return _clusters;
+ return clusters;
}
// documentation inherited
public List getPortals ()
{
- return _portals;
+ return portals;
}
// documentation inherited
@@ -160,7 +167,7 @@ public class MisoSceneImpl implements EditableMisoScene
// documentation inherited
public void setName (String name)
{
- _name = name;
+ this.name = name;
}
// documentation inherited
@@ -180,12 +187,12 @@ public class MisoSceneImpl implements EditableMisoScene
public void updateLocation (Location loc, int clusteridx)
{
// add the location if it's not already present
- if (!_locations.contains(loc)) {
- _locations.add(loc);
+ if (!locations.contains(loc)) {
+ locations.add(loc);
}
// update the cluster contents
- ClusterUtil.regroup(_clusters, loc, clusteridx);
+ ClusterUtil.regroup(clusters, loc, clusteridx);
}
/**
@@ -201,14 +208,14 @@ public class MisoSceneImpl implements EditableMisoScene
updateLocation(portal, -1);
// don't allow adding a portal more than once
- if (_portals.contains(portal)) {
+ if (portals.contains(portal)) {
Log.warning("Attempt to add already-existing portal " +
"[portal=" + portal + "].");
return;
}
// add it to the list
- _portals.add(portal);
+ portals.add(portal);
}
/**
@@ -221,17 +228,17 @@ public class MisoSceneImpl implements EditableMisoScene
public void removeLocation (Location loc)
{
// remove from the location list
- if (!_locations.remove(loc)) {
+ if (!locations.remove(loc)) {
// we didn't know about it, so it can't be in a cluster or
// the portal list
return;
}
// remove from any possible cluster
- ClusterUtil.remove(_clusters, loc);
+ ClusterUtil.remove(clusters, loc);
// remove from any possible existence on the portal list
- _portals.remove(loc);
+ portals.remove(loc);
}
/**
@@ -240,47 +247,41 @@ public class MisoSceneImpl implements EditableMisoScene
public String toString ()
{
StringBuffer buf = new StringBuffer();
- buf.append("[name=").append(_name);
+ buf.append("[name=").append(name);
buf.append(", sid=").append(_sid);
- buf.append(", locations=").append(StringUtil.toString(_locations));
- buf.append(", clusters=").append(StringUtil.toString(_clusters));
- buf.append(", portals=").append(StringUtil.toString(_portals));
+ buf.append(", locations=").append(StringUtil.toString(locations));
+ buf.append(", clusters=").append(StringUtil.toString(clusters));
+ buf.append(", portals=").append(StringUtil.toString(portals));
return buf.append("]").toString();
}
+ /**
+ * Initialize the base tile layer with the default tile.
+ */
+ protected void initBaseTiles ()
+ {
+ for (int xx = 0; xx < _model.scenewid; xx++) {
+ for (int yy = 0; yy < _model.scenehei; yy++) {
+ baseTiles[xx][yy] = _deftile;
+ }
+ }
+ }
+
/** The default scene name. */
protected static final String DEF_SCENE_NAME = "Untitled Scene";
- /** The scene name. */
- protected String _name;
-
/** The unique scene id. */
- protected int _sid;
+ protected int _sid = SID_INVALID;
/** The scene version. */
protected int _version;
- /** The tiles comprising the scene. */
- public MisoTile[][][] _tiles;
-
/** The default entrance portal. */
protected Portal _entrance;
- /** The locations within the scene. */
- protected ArrayList _locations;
-
- /** The clusters within the scene. */
- protected ArrayList _clusters;
-
- /** The portals to different scenes. */
- protected ArrayList _portals;
-
/** The default tile for the base layer in the scene. */
protected MisoTile _deftile;
/** The iso scene view data model. */
protected IsoSceneViewModel _model;
-
- /** The tile manager. */
- protected TileManager _tilemgr;
}
diff --git a/src/java/com/threerings/miso/client/IsoSceneView.java b/src/java/com/threerings/miso/client/IsoSceneView.java
index 4c99b8273..bdc57770a 100644
--- a/src/java/com/threerings/miso/client/IsoSceneView.java
+++ b/src/java/com/threerings/miso/client/IsoSceneView.java
@@ -1,5 +1,5 @@
//
-// $Id: IsoSceneView.java,v 1.56 2001/09/28 01:31:32 mdb Exp $
+// $Id: IsoSceneView.java,v 1.57 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene;
@@ -12,7 +12,6 @@ import java.util.ArrayList;
import com.threerings.media.sprite.*;
import com.threerings.media.tile.Tile;
-import com.threerings.media.tile.TileManager;
import com.threerings.miso.Log;
import com.threerings.miso.scene.util.AStarPathUtil;
@@ -28,14 +27,11 @@ public class IsoSceneView implements SceneView
/**
* Construct an IsoSceneView object.
*
- * @param tilemgr the tile manager.
* @param spritemgr the sprite manager.
* @param model the data model.
*/
- public IsoSceneView (TileManager tilemgr, SpriteManager spritemgr,
- IsoSceneViewModel model)
+ public IsoSceneView (SpriteManager spritemgr, IsoSceneViewModel model)
{
- _tilemgr = tilemgr;
_spritemgr = spritemgr;
setModel(model);
@@ -174,7 +170,9 @@ public class IsoSceneView implements SceneView
for (int xx = 0; xx < _model.scenewid; xx++) {
// skip this tile if it's not marked dirty
- if (!_dirty[xx][yy]) continue;
+ if (!_dirty[xx][yy]) {
+ continue;
+ }
// get the tile's screen position
Polygon poly = _polys[xx][yy];
@@ -183,15 +181,17 @@ public class IsoSceneView implements SceneView
for (int kk = 0; kk < MisoScene.NUM_LAYERS; kk++) {
// get the tile at these coordinates and layer
- Tile tile = tiles[xx][yy][kk];
- if (tile == null) continue;
+ Tile tile = tiles[kk][xx][yy];
+ if (tile == null) {
+ continue;
+ }
// offset the image y-position by the tile-specific height
int ypos = poly.ypoints[0] - _model.tilehhei -
(tile.height - _model.tilehei);
// draw the tile image
- gfx.drawImage(tile.img, poly.xpoints[0], ypos, null);
+ tile.paint(gfx, poly);
}
// draw all sprites residing in the current tile
@@ -204,7 +204,9 @@ public class IsoSceneView implements SceneView
}
// bail early if we know we've drawn all dirty tiles
- if (++numDrawn == _numDirty) break;
+ if (++numDrawn == _numDirty) {
+ break;
+ }
}
}
}
@@ -237,19 +239,23 @@ public class IsoSceneView implements SceneView
for (int kk = 0; kk < MisoScene.NUM_LAYERS; kk++) {
// grab the tile we're rendering
- Tile tile = tiles[tx][ty][kk];
- if (tile == null) continue;
+ Tile tile = tiles[kk][tx][ty];
+ if (tile == null) {
+ continue;
+ }
+
+ Polygon poly = _polys[tx][ty];
// determine screen y-position, accounting for
// tile image height
int ypos = screenY - (tile.height - _model.tilehei);
// draw the tile image at the appropriate screen position
- gfx.drawImage(tile.img, screenX, ypos, null);
+ tile.paint(gfx, poly);
// draw all sprites residing in the current tile
// TODO: simplify other tile positioning here to use poly
- _spritemgr.renderSprites(gfx, _polys[tx][ty]);
+ _spritemgr.renderSprites(gfx, poly);
}
// draw tile coordinates in each tile
@@ -505,7 +511,9 @@ public class IsoSceneView implements SceneView
}
// do nothing if the tile's already dirty
- if (_dirty[x][y]) return;
+ if (_dirty[x][y]) {
+ return;
+ }
// mark the tile dirty
_numDirty++;
@@ -543,7 +551,7 @@ public class IsoSceneView implements SceneView
// get a reasonable path from start to end
List tilepath =
AStarPathUtil.getPath(
- _scene.getTiles(), _model.scenewid, _model.scenehei,
+ _scene.getBaseLayer(), _model.scenewid, _model.scenehei,
sprite, stpos.x, stpos.y, tbx, tby);
if (tilepath == null) {
return null;
@@ -624,7 +632,4 @@ public class IsoSceneView implements SceneView
/** The sprite manager. */
protected SpriteManager _spritemgr;
-
- /** The tile manager. */
- protected TileManager _tilemgr;
}
diff --git a/src/java/com/threerings/miso/client/MisoScene.java b/src/java/com/threerings/miso/client/MisoScene.java
index f1d28410a..297fbc025 100644
--- a/src/java/com/threerings/miso/client/MisoScene.java
+++ b/src/java/com/threerings/miso/client/MisoScene.java
@@ -1,10 +1,12 @@
//
-// $Id: MisoScene.java,v 1.4 2001/10/08 21:04:25 shaper Exp $
+// $Id: MisoScene.java,v 1.5 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene;
import java.util.List;
+import com.threerings.media.tile.Tile;
+import com.threerings.media.tile.ObjectTile;
import com.threerings.miso.tile.MisoTile;
/**
@@ -40,38 +42,58 @@ public interface MisoScene
public String getName ();
/**
- * Return the tiles that comprise this scene.
+ * Returns an array of the tile layers that comprise the scene.
*/
- public MisoTile[][][] getTiles ();
+ public Tile[][][] getTiles ();
/**
- * Return the default tile for the base layer of the scene.
+ * Returns the tile layer for the specified layer index.
+ */
+ public Tile[][] getTiles (int lnum);
+
+ /**
+ * Returns the tiles that comprise the base layer of this scene.
+ */
+ public MisoTile[][] getBaseLayer ();
+
+ /**
+ * Returns the tiles that comprise the fringe layer of this scene.
+ */
+ public Tile[][] getFringeLayer ();
+
+ /**
+ * Returns the tiles that comprise the object layer of this scene.
+ */
+ public ObjectTile[][] getObjectLayer ();
+
+ /**
+ * Returns the default tile for the base layer of the scene.
*/
public MisoTile getDefaultTile ();
/**
- * Return the locations in this scene. The locations list should
- * contain all locations and portals in the scene. The list returned
- * by this method should not be modified.
+ * Returns the locations in this scene. The locations list should
+ * contain all locations and portals in the scene. The list
+ * returned by this method should not be modified.
*/
public List getLocations ();
/**
- * Return the clusters in this scene. The clusters will reference all
- * of the locations that are clustered. The list returned by this
- * method should not be modified.
+ * Returns the clusters in this scene. The clusters will reference
+ * all of the locations that are clustered. The list returned by
+ * this method should not be modified.
*/
public List getClusters ();
/**
- * Return the portals associated with this scene. Portals should never
- * be part of a cluster. The list returned by this method should
- * not be modified.
+ * Returns the portals associated with this scene. Portals should
+ * never be part of a cluster. The list returned by this method
+ * should not be modified.
*/
public List getPortals ();
/**
- * Return the portal that is the default entrance to this scene.
+ * Returns the portal that is the default entrance to this scene.
*/
public Portal getEntrance ();
}
diff --git a/src/java/com/threerings/miso/client/SceneView.java b/src/java/com/threerings/miso/client/SceneView.java
index bacffd98f..d7dd05e47 100644
--- a/src/java/com/threerings/miso/client/SceneView.java
+++ b/src/java/com/threerings/miso/client/SceneView.java
@@ -1,5 +1,5 @@
//
-// $Id: SceneView.java,v 1.15 2001/08/22 02:14:57 mdb Exp $
+// $Id: SceneView.java,v 1.16 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene;
@@ -8,7 +8,6 @@ import java.util.List;
import com.threerings.media.sprite.DirtyRectList;
import com.threerings.media.sprite.Path;
-import com.threerings.media.tile.Tile;
/**
* The scene view interface provides an interface to be implemented by
diff --git a/src/java/com/threerings/miso/client/SceneViewPanel.java b/src/java/com/threerings/miso/client/SceneViewPanel.java
index 589d7e5c0..b91f71eff 100644
--- a/src/java/com/threerings/miso/client/SceneViewPanel.java
+++ b/src/java/com/threerings/miso/client/SceneViewPanel.java
@@ -1,5 +1,5 @@
//
-// $Id: SceneViewPanel.java,v 1.14 2001/09/21 02:30:35 mdb Exp $
+// $Id: SceneViewPanel.java,v 1.15 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene;
@@ -9,7 +9,6 @@ import javax.swing.*;
import com.samskivert.util.Config;
import com.threerings.media.sprite.*;
-import com.threerings.media.tile.TileManager;
import com.threerings.miso.util.MisoUtil;
/**
@@ -23,14 +22,13 @@ public class SceneViewPanel
/**
* Construct the panel and initialize it with a context.
*/
- public SceneViewPanel (Config config, TileManager tilemgr,
- SpriteManager spritemgr)
+ public SceneViewPanel (Config config, SpriteManager spritemgr)
{
// create the data model for the scene view
_smodel = new IsoSceneViewModel(config);
// create the scene view
- _view = newSceneView(tilemgr, spritemgr, _smodel);
+ _view = newSceneView(spritemgr, _smodel);
// set our attributes for optimal display performance
setDoubleBuffered(false);
@@ -41,9 +39,9 @@ public class SceneViewPanel
* Constructs the underlying scene view implementation.
*/
protected IsoSceneView newSceneView (
- TileManager tmgr, SpriteManager smgr, IsoSceneViewModel model)
+ SpriteManager smgr, IsoSceneViewModel model)
{
- return new IsoSceneView(tmgr, smgr, model);
+ return new IsoSceneView(smgr, model);
}
/**
diff --git a/src/java/com/threerings/miso/client/util/AStarPathUtil.java b/src/java/com/threerings/miso/client/util/AStarPathUtil.java
index 779d46ca3..208b87760 100644
--- a/src/java/com/threerings/miso/client/util/AStarPathUtil.java
+++ b/src/java/com/threerings/miso/client/util/AStarPathUtil.java
@@ -1,5 +1,5 @@
//
-// $Id: AStarPathUtil.java,v 1.5 2001/10/08 21:04:25 shaper Exp $
+// $Id: AStarPathUtil.java,v 1.6 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene.util;
@@ -43,7 +43,7 @@ public class AStarPathUtil
* @return the list of points in the path.
*/
public static List getPath (
- MisoTile tiles[][][], int tilewid, int tilehei, Traverser trav,
+ MisoTile tiles[][], int tilewid, int tilehei, Traverser trav,
int ax, int ay, int bx, int by)
{
AStarInfo info = new AStarInfo(tiles, tilewid, tilehei, trav, bx, by);
@@ -109,8 +109,7 @@ public class AStarPathUtil
}
// skip node if it's impassable
- // TODO: fix hard-coded consideration of only the base layer
- if (!info.trav.canTraverse(info.tiles[x][y][0])) {
+ if (!info.trav.canTraverse(info.tiles[x][y])) {
return;
}
@@ -198,7 +197,7 @@ public class AStarPathUtil
class AStarInfo
{
/** The array of tiles being traversed. */
- public MisoTile tiles[][][];
+ public MisoTile tiles[][];
/** The tile array dimensions. */
public int tilewid, tilehei;
@@ -219,7 +218,7 @@ class AStarInfo
public int destx, desty;
public AStarInfo (
- MisoTile tiles[][][], int tilewid, int tilehei, Traverser trav,
+ MisoTile tiles[][], int tilewid, int tilehei, Traverser trav,
int destx, int desty)
{
// save off references
diff --git a/src/java/com/threerings/miso/client/util/MisoSceneUtil.java b/src/java/com/threerings/miso/client/util/MisoSceneUtil.java
index 6607beb7c..21d4e6703 100644
--- a/src/java/com/threerings/miso/client/util/MisoSceneUtil.java
+++ b/src/java/com/threerings/miso/client/util/MisoSceneUtil.java
@@ -1,5 +1,5 @@
//
-// $Id: MisoSceneUtil.java,v 1.2 2001/09/28 01:31:32 mdb Exp $
+// $Id: MisoSceneUtil.java,v 1.3 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene.util;
@@ -15,6 +15,31 @@ public class MisoSceneUtil
/** String translations of each tile layer name. */
public static final String[] XLATE_LAYERS = { "Base", "Fringe", "Object" };
+ /**
+ * Returns the layer index number for the named layer. Layer
+ * names are looked up via XLATE_LAYERS and are
+ * case-insensitive.
+ *
+ * @param name the layer name.
+ */
+ public static int getLayerIndex (String name)
+ {
+ if (name == null) {
+ return DEF_LAYER;
+ }
+
+ name = name.toLowerCase();
+
+ for (int ii = 0; ii < MisoScene.NUM_LAYERS; ii++) {
+ String b = MisoSceneUtil.XLATE_LAYERS[ii].toLowerCase();
+ if (name.equals(b)) {
+ return ii;
+ }
+ }
+
+ return DEF_LAYER;
+ }
+
/**
* Return the location object at the given full coordinates, or null
* if no location is currently present at that location.
@@ -74,4 +99,7 @@ public class MisoSceneUtil
{
return ClusterUtil.getClusterIndex(scene.getClusters(), loc);
}
+
+ /** The default layer index for an unknown named layer. */
+ protected static final int DEF_LAYER = MisoScene.LAYER_BASE;
}
diff --git a/src/java/com/threerings/miso/tile/BaseTileSet.java b/src/java/com/threerings/miso/tile/BaseTileSet.java
index c0f2053e6..f308bdf70 100644
--- a/src/java/com/threerings/miso/tile/BaseTileSet.java
+++ b/src/java/com/threerings/miso/tile/BaseTileSet.java
@@ -1,10 +1,12 @@
//
-// $Id: BaseTileSet.java,v 1.1 2001/10/08 21:04:25 shaper Exp $
+// $Id: BaseTileSet.java,v 1.2 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.tile;
import com.threerings.media.tile.*;
+import com.threerings.miso.scene.MisoScene;
+
/**
* The miso tile set class extends the base tile set class to add
* support for tile passability. Passability is used to determine
@@ -12,28 +14,33 @@ import com.threerings.media.tile.*;
* traverse a particular tile in a {@link
* com.threerings.miso.scene.MisoScene}.
*/
-public class MisoTileSet extends TileSet
+public class MisoTileSet extends TileSetImpl
{
- public MisoTileSet ()
- {
- _model = new MisoTileSetModel();
- }
+ /** The miso scene layer the tiles are intended for. */
+ public int layer;
+
+ /** Whether each tile is passable. */
+ public int passable[];
public Tile createTile (int tid)
{
- MisoTile tile = new MisoTile(_model.tsid, tid);
+ // only create miso tiles for the base layer
+ if (layer != MisoScene.LAYER_BASE) {
+ return super.createTile(tid);
+ }
- // set the tile's passability, defaulting to passable if this
- // tileset has no passability specified
- int passable[] = ((MisoTileSetModel)_model).passable;
- tile.passable = (passable == null || (passable[tid] == 1));
-
- return tile;
+ return new MisoTile(tsid, tid);
}
- protected static class MisoTileSetModel extends TileSetModel
+ protected void populateTile (Tile tile)
{
- /** Whether each tile is passable. */
- public int passable[];
+ super.populateTile(tile);
+
+ if (tile instanceof MisoTile) {
+ // set the tile's passability, defaulting to passable if this
+ // tileset has no passability specified
+ ((MisoTile)tile).passable =
+ (passable == null || (passable[tile.tid] == 1));
+ }
}
}
diff --git a/src/java/com/threerings/miso/tile/TileUtil.java b/src/java/com/threerings/miso/tile/TileUtil.java
index 3783f8db2..2cae6ea11 100644
--- a/src/java/com/threerings/miso/tile/TileUtil.java
+++ b/src/java/com/threerings/miso/tile/TileUtil.java
@@ -1,5 +1,5 @@
//
-// $Id: TileUtil.java,v 1.5 2001/09/13 19:10:26 mdb Exp $
+// $Id: TileUtil.java,v 1.6 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.tile;
@@ -9,6 +9,7 @@ import com.threerings.media.sprite.MultiFrameImage;
import com.threerings.media.sprite.Sprite;
import com.threerings.media.tile.*;
+import com.threerings.miso.Log;
import com.threerings.miso.scene.AmbulatorySprite;
/**
@@ -28,19 +29,27 @@ public class TileUtil
*
* @return the array of multi-frame sprite images.
*/
- public static MultiFrameImage[] getAmbulatorySpriteFrames (
- TileManager tilemgr, int tsid)
+ public static MultiFrameImage[]
+ getAmbulatorySpriteFrames (TileManager tilemgr, int tsid)
{
MultiFrameImage[] anims = new MultiFrameImage[Sprite.NUM_DIRECTIONS];
- for (int ii = 0; ii < Sprite.NUM_DIRECTIONS; ii++) {
- Tile[] tiles = new Tile[NUM_DIR_FRAMES];
- for (int jj = 0; jj < NUM_DIR_FRAMES; jj++) {
- int idx = (ii * NUM_DIR_FRAMES) + jj;
- tiles[jj] = tilemgr.getTile(tsid, idx);
- }
- anims[ii] = new MultiTileImage(tiles);
- }
+ try {
+ for (int ii = 0; ii < Sprite.NUM_DIRECTIONS; ii++) {
+ Tile[] tiles = new Tile[NUM_DIR_FRAMES];
+ for (int jj = 0; jj < NUM_DIR_FRAMES; jj++) {
+ int idx = (ii * NUM_DIR_FRAMES) + jj;
+ tiles[jj] = tilemgr.getTile(tsid, idx);
+ }
+
+ anims[ii] = new MultiTileImage(tiles);
+ }
+
+ } catch (TileException te) {
+ Log.warning("Exception retrieving ambulatory sprite tiles " +
+ "[te=" + te + "].");
+ return null;
+ }
return anims;
}
diff --git a/src/java/com/threerings/miso/tile/tools/xml/XMLMisoTileSetParser.java b/src/java/com/threerings/miso/tile/tools/xml/XMLMisoTileSetParser.java
index fb81e155c..8a82ca1bc 100644
--- a/src/java/com/threerings/miso/tile/tools/xml/XMLMisoTileSetParser.java
+++ b/src/java/com/threerings/miso/tile/tools/xml/XMLMisoTileSetParser.java
@@ -1,11 +1,13 @@
//
-// $Id: XMLMisoTileSetParser.java,v 1.1 2001/10/08 21:04:25 shaper Exp $
+// $Id: XMLMisoTileSetParser.java,v 1.2 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.tile;
-import com.samskivert.util.StringUtil;
+import org.xml.sax.*;
+import com.samskivert.util.StringUtil;
import com.threerings.media.tile.*;
+import com.threerings.miso.scene.util.MisoSceneUtil;
/**
* Extends the base XML tile set parser to construct {@link
@@ -14,17 +16,30 @@ import com.threerings.media.tile.*;
*/
public class XMLMisoTileSetParser extends XMLTileSetParser
{
+ // documentation inherited
+ public void startElement (String uri, String localName,
+ String qName, Attributes attributes)
+ {
+ super.startElement(uri, localName, qName, attributes);
+
+ if (qName.equals("tileset")) {
+ String val = attributes.getValue("layer");
+ ((MisoTileSet)_tset).layer = MisoSceneUtil.getLayerIndex(val);
+ }
+ }
+
+ // documentation inherited
protected void finishElement (String qName, String str)
{
super.finishElement(qName, str);
if (qName.equals("passable")) {
- ((MisoTileSet.MisoTileSetModel)_model).passable =
- StringUtil.parseIntArray(str);
+ ((MisoTileSet)_tset).passable = StringUtil.parseIntArray(str);
}
}
- protected TileSet createTileSet ()
+ // documentation inherited
+ protected TileSetImpl createTileSet ()
{
return new MisoTileSet();
}
diff --git a/src/java/com/threerings/miso/tools/xml/XMLSceneParser.java b/src/java/com/threerings/miso/tools/xml/XMLSceneParser.java
index f2642a774..65cc3b48a 100644
--- a/src/java/com/threerings/miso/tools/xml/XMLSceneParser.java
+++ b/src/java/com/threerings/miso/tools/xml/XMLSceneParser.java
@@ -1,5 +1,5 @@
//
-// $Id: XMLSceneParser.java,v 1.17 2001/10/08 21:04:25 shaper Exp $
+// $Id: XMLSceneParser.java,v 1.18 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene.xml;
@@ -13,6 +13,7 @@ import org.xml.sax.helpers.DefaultHandler;
import com.samskivert.util.*;
import com.samskivert.xml.XMLUtil;
+
import com.threerings.media.tile.*;
import com.threerings.miso.Log;
@@ -43,10 +44,7 @@ public class XMLSceneParser extends DefaultHandler
} else if (_tag.equals("row")) {
_info.rownum = getInt(attributes.getValue("rownum"));
-
- // get the column start value if present
- String strcs = attributes.getValue("colstart");
- if (strcs != null) _info.colstart = getInt(strcs);
+ _info.colstart = getInt(attributes.getValue("colstart"));
}
}
@@ -56,11 +54,13 @@ public class XMLSceneParser extends DefaultHandler
// for the elements we're tracking at this point, so proceed
// with saving off element values for use when we construct
// the scene object.
+ String str = _chars.toString().trim();
+
if (qName.equals("name")) {
- _info.name = _chars.toString().trim();
+ _info.scene.name = str;
} else if (qName.equals("version")) {
- int version = getInt(_chars.toString());
+ int version = getInt(str);
if (version < 0 || version > XMLSceneVersion.VERSION) {
Log.warning(
"Unrecognized scene file format version, will attempt " +
@@ -70,27 +70,22 @@ public class XMLSceneParser extends DefaultHandler
}
} else if (qName.equals("locations")) {
- int vals[] = StringUtil.parseIntArray(_chars.toString());
- _info.locations = toLocationsList(vals);
+ int vals[] = StringUtil.parseIntArray(str);
+ addLocations(_info.scene.locations, vals);
} else if (qName.equals("cluster")) {
- int vals[] = StringUtil.parseIntArray(_chars.toString());
- _info.clusters.add(toCluster(_info.locations, vals));
+ int vals[] = StringUtil.parseIntArray(str);
+ _info.scene.clusters.add(toCluster(_info.scene.locations, vals));
} else if (qName.equals("portals")) {
- String vals[] = StringUtil.parseStringArray(_chars.toString());
- _info.portals = toPortalList(_info.locations, vals);
+ String vals[] = StringUtil.parseStringArray(str);
+ addPortals(_info.scene.portals, _info.scene.locations, vals);
} else if (qName.equals("row")) {
- if (_info.lnum == MisoScene.LAYER_BASE) {
- readRowData(_info, _chars.toString());
- } else {
- readSparseRowData(_info, _chars.toString());
- }
+ addTileRow(_info, str);
} else if (qName.equals("scene")) {
- // construct the scene object on tag close
- _info.constructScene(_tilemgr);
+ // nothing for now
}
// note that we're not within a tag to avoid considering any
@@ -111,6 +106,24 @@ public class XMLSceneParser extends DefaultHandler
_chars.append(ch, start, length);
}
+ /**
+ * Add the tiles described by the given data to the scene.
+ */
+ protected void addTileRow (SceneInfo info, String data)
+ {
+ try {
+ if (info.lnum == MisoScene.LAYER_BASE) {
+ readRowData(info, data);
+ } else {
+ readSparseRowData(info, data);
+ }
+
+ } catch (TileException te) {
+ Log.warning("Exception reading scene tile data " +
+ "[te=" + te + "].");
+ }
+ }
+
/**
* Given a string of comma-delimited tuples as (tileset id, tile
* id), populate the scene info tile array with tiles to suit.
@@ -119,6 +132,7 @@ public class XMLSceneParser extends DefaultHandler
* @param data the tile data.
*/
protected void readRowData (SceneInfo info, String data)
+ throws TileException
{
int[] vals = StringUtil.parseIntArray(data);
@@ -133,9 +147,10 @@ public class XMLSceneParser extends DefaultHandler
}
// create the tile objects in the tile array
+ Tile[][] tiles = info.scene.getTiles(info.lnum);
for (int xx = 0; xx < vals.length; xx += 2) {
- MisoTile tile = (MisoTile)_tilemgr.getTile(vals[xx], vals[xx + 1]);
- info.tiles[xx / 2][info.rownum][info.lnum] = tile;
+ Tile tile = _tilemgr.getTile(vals[xx], vals[xx + 1]);
+ tiles[xx / 2][info.rownum] = tile;
}
}
@@ -151,6 +166,7 @@ public class XMLSceneParser extends DefaultHandler
* @param data the tile data.
*/
protected void readSparseRowData (SceneInfo info, String data)
+ throws TileException
{
int[] vals = StringUtil.parseIntArray(data);
@@ -164,10 +180,11 @@ public class XMLSceneParser extends DefaultHandler
}
// create the tile objects in the tile array
+ Tile[][] tiles = info.scene.getTiles(info.lnum);
for (int xx = 0; xx < vals.length; xx += 2) {
- MisoTile tile = (MisoTile)_tilemgr.getTile(vals[xx], vals[xx + 1]);
+ Tile tile = _tilemgr.getTile(vals[xx], vals[xx + 1]);
int xidx = info.colstart + (xx / 2);
- info.tiles[xidx][info.rownum][info.lnum] = tile;
+ tiles[xidx][info.rownum] = tile;
}
}
@@ -191,37 +208,34 @@ public class XMLSceneParser extends DefaultHandler
}
/**
- * Given an array of integer values, return a list of the
- * Location objects represented therein, constructed
- * from each successive triplet of values as (x, y, orientation)
- * in the integer array.
+ * Given an array of integer values, add the Location
+ * objects represented therein to the given list, constructed from
+ * each successive triplet of values as (x, y, orientation) in the
+ * integer array.
*
* @param vals the integer values.
- *
- * @return the location list, or null if an error occurred.
*/
- protected ArrayList toLocationsList (int[] vals)
+ protected void addLocations (ArrayList list, int[] vals)
{
// make sure we have a seemingly-appropriate number of points
- if ((vals.length % 3) != 0) return null;
+ if ((vals.length % 3) != 0) {
+ return;
+ }
// read in all of the locations and add to the list
- ArrayList list = new ArrayList();
for (int ii = 0; ii < vals.length; ii += 3) {
Location loc = new Location(
vals[ii], vals[ii+1], vals[ii+2]);
list.add(loc);
}
-
- return list;
}
/**
- * Given an array of string values, return a list of
- * Portal objects constructed from each successive
- * triplet of values as (locidx, portal name) in the array. The
- * list of Location objects must have already been
- * fully read previously.
+ * Given an array of string values, add the Portal
+ * objects constructed from each successive triplet of values as
+ * (locidx, portal name) in the array to the given portal list.
+ * The list of Location objects must have already
+ * been fully read previously.
*
* This is something of a hack since we perhaps ought to parse
* the original String into its constituent components ourselves,
@@ -229,20 +243,19 @@ public class XMLSceneParser extends DefaultHandler
* StringUtil.toString() method to take care of
* tokenizing things for us, so, there you have it.
*
- * @param ArrayList the location list.
+ * @param portals the portal list.
+ * @param locs the location list.
* @param vals the String values.
- *
- * @return the portal list, or null if an error occurred.
*/
- protected ArrayList toPortalList (ArrayList locs, String[] vals)
+ protected void addPortals (
+ ArrayList portals, ArrayList locs, String[] vals)
{
// make sure we have an appropriate number of values
if ((vals.length % 2) != 0) {
- return null;
+ return;
}
// read in all of the portals
- ArrayList portals = new ArrayList();
for (int ii = 0; ii < vals.length; ii += 2) {
int locidx = getInt(vals[ii]);
@@ -253,8 +266,6 @@ public class XMLSceneParser extends DefaultHandler
// upgrade the corresponding location in the location list
locs.set(locidx, portal);
}
-
- return portals;
}
/**
@@ -264,7 +275,7 @@ public class XMLSceneParser extends DefaultHandler
protected int getInt (String str)
{
try {
- return Integer.parseInt(str);
+ return (str == null) ? -1 : Integer.parseInt(str);
} catch (NumberFormatException nfe) {
Log.warning("Malformed integer value [str=" + str + "].");
return -1;
@@ -329,25 +340,16 @@ public class XMLSceneParser extends DefaultHandler
/** Temporary storage of scene info while parsing. */
protected SceneInfo _info;
+ // TODO: allow specifying the entrance location for a scene in the
+ // editor, read/write to XML scene description files.
+
/**
- * A class to hold temporary information on a scene.
+ * A class to hold the information gathered while parsing.
*/
class SceneInfo
{
- /** The scene name. */
- public String name;
-
- /** The location list. */
- public ArrayList locations;
-
- /** The portal list. */
- public ArrayList portals;
-
- /** The cluster list. */
- public ArrayList clusters;
-
- /** The tile array. */
- public MisoTile[][][] tiles;
+ /** The scene populated with data while parsing. */
+ public MisoSceneImpl scene;
/** The current layer number being processed. */
public int lnum;
@@ -358,20 +360,9 @@ public class XMLSceneParser extends DefaultHandler
/** The column at which the current row data begins. */
public int colstart;
- /** The scene object constructed once all scene info is parsed. */
- public EditableMisoScene scene;
-
public SceneInfo ()
{
- int width = _model.scenewid, height = _model.scenehei;
- tiles = new MisoTile[width][height][MisoScene.NUM_LAYERS];
- clusters = new ArrayList();
- }
-
- public void constructScene (TileManager tilemgr)
- {
- scene = new MisoSceneImpl(
- _model, tilemgr, name, locations, clusters, portals, tiles);
+ scene = new MisoSceneImpl(_model, null);
}
}
}
diff --git a/src/java/com/threerings/miso/tools/xml/XMLSceneWriter.java b/src/java/com/threerings/miso/tools/xml/XMLSceneWriter.java
index 004534f93..ca9b34ea7 100644
--- a/src/java/com/threerings/miso/tools/xml/XMLSceneWriter.java
+++ b/src/java/com/threerings/miso/tools/xml/XMLSceneWriter.java
@@ -1,5 +1,5 @@
//
-// $Id: XMLSceneWriter.java,v 1.14 2001/09/28 01:31:32 mdb Exp $
+// $Id: XMLSceneWriter.java,v 1.15 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.scene.xml;
@@ -211,7 +211,7 @@ public class XMLSceneWriter extends DataWriter
int numtiles = colstart + len;
for (int ii = colstart; ii < numtiles; ii++) {
- Tile tile = tiles[ii][rownum][lnum];
+ Tile tile = tiles[lnum][ii][rownum];
if (tile == null) {
Log.warning("Null tile [x=" + ii + ", rownum=" + rownum +
", lnum=" + lnum + "].");
@@ -277,7 +277,7 @@ public class XMLSceneWriter extends DataWriter
Tile[][][] tiles = scene.getTiles();
int start = -1, len = 0;
for (int xx = info[0]; xx < _model.scenewid; xx++) {
- Tile tile = tiles[xx][rownum][lnum];
+ Tile tile = tiles[lnum][xx][rownum];
if (tile == null) {
if (start == -1) {
continue;
diff --git a/src/java/com/threerings/nodemap/Node.java b/src/java/com/threerings/nodemap/Node.java
index 506f41ebf..ce1b6736e 100644
--- a/src/java/com/threerings/nodemap/Node.java
+++ b/src/java/com/threerings/nodemap/Node.java
@@ -1,5 +1,5 @@
//
-// $Id: Node.java,v 1.5 2001/08/28 23:50:45 shaper Exp $
+// $Id: Node.java,v 1.6 2001/10/11 00:41:27 shaper Exp $
package com.threerings.nodemap;
@@ -37,6 +37,9 @@ public abstract class Node implements ToolTipProvider
* added to the node more than once.
*
* @param e the new edge.
+ *
+ * @exception DuplicateEdgeException thrown if the node already
+ * contains the given edge.
*/
protected void addEdge (Edge e) throws DuplicateEdgeException
{
@@ -50,7 +53,7 @@ public abstract class Node implements ToolTipProvider
}
/**
- * Return an Iterator object that iterates over the
+ * Returns an Iterator object that iterates over the
* edges leaving this node.
*
* @return the iterator object.
@@ -90,7 +93,7 @@ public abstract class Node implements ToolTipProvider
}
/**
- * Return whether the node contains the given point.
+ * Returns whether the node contains the given point.
*
* @param x the x-position.
* @param y the y-position.
@@ -104,7 +107,7 @@ public abstract class Node implements ToolTipProvider
}
/**
- * Return the node width in pixels.
+ * Returns the node width in pixels.
*/
public int getWidth ()
{
@@ -112,7 +115,7 @@ public abstract class Node implements ToolTipProvider
}
/**
- * Return the node height in pixels.
+ * Returns the node height in pixels.
*/
public int getHeight ()
{
@@ -192,7 +195,7 @@ public abstract class Node implements ToolTipProvider
public void handleMouseClicked (int x, int y) { }
/**
- * Return a string representation of this node.
+ * Returns a string representation of this node.
*/
public String toString ()
{
diff --git a/src/java/com/threerings/nodemap/NodeMap.java b/src/java/com/threerings/nodemap/NodeMap.java
index f1eecdde1..91b6d343b 100644
--- a/src/java/com/threerings/nodemap/NodeMap.java
+++ b/src/java/com/threerings/nodemap/NodeMap.java
@@ -1,5 +1,5 @@
//
-// $Id: NodeMap.java,v 1.4 2001/08/28 23:50:45 shaper Exp $
+// $Id: NodeMap.java,v 1.5 2001/10/11 00:41:27 shaper Exp $
package com.threerings.nodemap;
@@ -36,7 +36,9 @@ public class NodeMap
public void layout ()
{
// do nothing if we have no nodes
- if (_nodes.size() == 0) return;
+ if (_nodes.size() == 0) {
+ return;
+ }
// default to using the first node as the root
if (_root == null) {
@@ -54,7 +56,8 @@ public class NodeMap
}
/**
- * Calculate the bounding rectangle that wholly contains the node map.
+ * Calculate the bounding rectangle that wholly contains the node
+ * map.
*/
protected void updateBounds ()
{
@@ -126,6 +129,9 @@ public class NodeMap
* present in the node map more than once.
*
* @param n the node to add.
+ *
+ * @exception DuplicateNodeException thrown if the node already
+ * exists in the node map.
*/
public void addNode (Node n) throws DuplicateNodeException
{
@@ -146,6 +152,11 @@ public class NodeMap
*
* @param n the node.
* @param e the edge to add.
+ *
+ * @exception NoSuchNodeException thrown if the given node does
+ * not exist in the node map.
+ * @exception DuplicateEdgeException thrown if the given node
+ * already contains the given edge.
*/
public void addEdge (Node n, Edge e)
throws NoSuchNodeException, DuplicateEdgeException
@@ -165,6 +176,9 @@ public class NodeMap
* present in the node map.
*
* @param n the root node.
+ *
+ * @exception NoSuchNodeException thrown if the given node does
+ * not exist in the node map.
*/
public void setRootNode (Node n) throws NoSuchNodeException
{
@@ -177,7 +191,7 @@ public class NodeMap
}
/**
- * Return the dimensions of the node map in pixels.
+ * Returns the dimensions of the node map in pixels.
*/
public Dimension getSize ()
{
@@ -190,7 +204,7 @@ public class NodeMap
}
/**
- * Return the bounding rectangle of the node map.
+ * Returns the bounding rectangle of the node map.
*/
public Rectangle getBounds ()
{
@@ -204,7 +218,7 @@ public class NodeMap
* events.
*
* @param x the mouse x-coordinate.
- * @param y the ymouse y-coordinate.
+ * @param y the mouse y-coordinate.
*/
public void handleMouseMoved (int x, int y)
{
@@ -263,7 +277,7 @@ public class NodeMap
* Inform any affected nodes of mouse-clicked events.
*
* @param x the mouse x-coordinate.
- * @param y the ymouse y-coordinate.
+ * @param y the mouse y-coordinate.
*/
public void handleMouseClicked (int x, int y)
{
diff --git a/src/java/com/threerings/nodemap/NodeMapPanel.java b/src/java/com/threerings/nodemap/NodeMapPanel.java
index 5c18fbc1c..9c13157f6 100644
--- a/src/java/com/threerings/nodemap/NodeMapPanel.java
+++ b/src/java/com/threerings/nodemap/NodeMapPanel.java
@@ -1,5 +1,5 @@
//
-// $Id: NodeMapPanel.java,v 1.4 2001/09/28 00:46:54 shaper Exp $
+// $Id: NodeMapPanel.java,v 1.5 2001/10/11 00:41:27 shaper Exp $
package com.threerings.nodemap;
@@ -20,7 +20,7 @@ public class NodeMapPanel extends JPanel
implements MouseListener, MouseMotionListener, ToolTipObserver
{
/**
- * Construct a node map panel.
+ * Constructs a node map panel.
*/
public NodeMapPanel ()
{
@@ -28,7 +28,7 @@ public class NodeMapPanel extends JPanel
}
/**
- * Construct a node map panel that displays the given node map.
+ * Constructs a node map panel that displays the given node map.
*
* @param map the node map to display.
*/
@@ -39,7 +39,7 @@ public class NodeMapPanel extends JPanel
}
/**
- * Initialize the node map panel.
+ * Initializes the node map panel.
*/
protected void init ()
{
@@ -49,7 +49,7 @@ public class NodeMapPanel extends JPanel
}
/**
- * Set the node map displayed by this panel.
+ * Sets the node map displayed by this panel.
*
* @param map the node map to display.
*/
diff --git a/tests/rsrc/config/miso/tilesets.xml b/tests/rsrc/config/miso/tilesets.xml
index 048e93dec..9375ab8cb 100644
--- a/tests/rsrc/config/miso/tilesets.xml
+++ b/tests/rsrc/config/miso/tilesets.xml
@@ -1,33 +1,33 @@
-
+
-
+
media/miso/tiles/base.png
16, 16
32, 32
10, 10
-
+
media/miso/tiles/wall.png
45, 45
32, 32
3, 3
-
+
media/miso/tiles/icons.png
20, 49
32, 32
9, 2
-
+
media/miso/tiles/character.png
94, 94, 94, 94, 94, 94, 94, 94
94, 94, 94, 94, 94, 94, 94, 94
@@ -36,7 +36,7 @@
39, 18
-
+
media/miso/tiles/character-yellow.png
94, 94, 94, 94, 94, 94, 94, 94
94, 94, 94, 94, 94, 94, 94, 94
@@ -45,7 +45,7 @@
39, 18
-
+
media/miso/tiles/character-black.png
94, 94, 94, 94, 94, 94, 94, 94
94, 94, 94, 94, 94, 94, 94, 94
@@ -54,7 +54,7 @@
39, 18
-
+
media/miso/tiles/sample.png
48
64
@@ -62,21 +62,21 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1
-
+
media/miso/tiles/node-icons.png
16
16
8
-
+
media/miso/tiles/editor-icons.png
22
20
5
-
+
media/miso/tiles/building.png
240
64
@@ -84,7 +84,7 @@
0, 0, 0, 0, 0, 0
-
+
media/miso/tiles/sword-pieces.png
10
10
diff --git a/tests/src/java/com/threerings/miso/viewer/ViewerFrame.java b/tests/src/java/com/threerings/miso/viewer/ViewerFrame.java
index 50d63e835..4b76a2cff 100644
--- a/tests/src/java/com/threerings/miso/viewer/ViewerFrame.java
+++ b/tests/src/java/com/threerings/miso/viewer/ViewerFrame.java
@@ -1,5 +1,5 @@
//
-// $Id: ViewerFrame.java,v 1.18 2001/09/13 19:10:26 mdb Exp $
+// $Id: ViewerFrame.java,v 1.19 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.viewer;
@@ -12,6 +12,7 @@ import com.samskivert.swing.*;
import com.threerings.media.sprite.*;
import com.threerings.media.tile.TileManager;
+import com.threerings.media.tile.TileException;
import com.threerings.miso.Log;
import com.threerings.miso.scene.AmbulatorySprite;
@@ -43,10 +44,7 @@ class ViewerFrame extends JFrame implements WindowListener
TileManager tilemgr = _ctx.getTileManager();
// add the test character sprite to the sprite manager
- MultiFrameImage[] anims =
- TileUtil.getAmbulatorySpriteFrames(tilemgr, TSID_CHAR);
- AmbulatorySprite sprite = new AmbulatorySprite(300, 300, anims);
- spritemgr.addSprite(sprite);
+ AmbulatorySprite sprite = createSprite(tilemgr, spritemgr);
// create a top-level panel to manage everything
JPanel top = new JPanel();
@@ -80,6 +78,17 @@ class ViewerFrame extends JFrame implements WindowListener
getContentPane().add(top, BorderLayout.CENTER);
}
+ protected AmbulatorySprite createSprite (TileManager tilemgr,
+ SpriteManager spritemgr)
+ {
+ MultiFrameImage[] anims =
+ TileUtil.getAmbulatorySpriteFrames(tilemgr, TSID_CHAR);
+ AmbulatorySprite sprite = new AmbulatorySprite(300, 300, anims);
+ spritemgr.addSprite(sprite);
+
+ return sprite;
+ }
+
/** WindowListener interface methods */
public void windowClosing (WindowEvent e) {
diff --git a/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java b/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java
index d5fd2ea40..f5a97f7ad 100644
--- a/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java
+++ b/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java
@@ -1,5 +1,5 @@
//
-// $Id: ViewerSceneViewPanel.java,v 1.17 2001/10/08 21:04:26 shaper Exp $
+// $Id: ViewerSceneViewPanel.java,v 1.18 2001/10/11 00:41:27 shaper Exp $
package com.threerings.miso.viewer;
@@ -26,7 +26,7 @@ public class ViewerSceneViewPanel extends SceneViewPanel
public ViewerSceneViewPanel (
ViewerContext ctx, SpriteManager spritemgr, AmbulatorySprite sprite)
{
- super(ctx.getConfig(), ctx.getTileManager(), spritemgr);
+ super(ctx.getConfig(), spritemgr);
_ctx = ctx;
_sprite = sprite;