Tile sets that are specified as object tile sets now always produce
object tiles. If no dimensions are specified for an object, it defaults to 1x1 unit tile units. The media package supports specification of tilesets as object tile sets via the "layer" attribute. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@450 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileSetImpl.java,v 1.1 2001/10/11 00:41:26 shaper Exp $
|
// $Id: TileSetImpl.java,v 1.2 2001/10/12 16:36:58 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.media.tile;
|
package com.threerings.media.tile;
|
||||||
|
|
||||||
@@ -37,8 +37,8 @@ public class TileSetImpl implements TileSet
|
|||||||
/** The number of tiles in the tileset. */
|
/** The number of tiles in the tileset. */
|
||||||
public int numTiles;
|
public int numTiles;
|
||||||
|
|
||||||
/** Mapping of object tile ids to object dimensions. */
|
/** Whether this set produces object tiles. */
|
||||||
public HashIntMap objects = new HashIntMap();
|
public boolean isObjectSet = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The offset distance (x, y) in pixels from the top-left of the
|
* The offset distance (x, y) in pixels from the top-left of the
|
||||||
@@ -123,11 +123,24 @@ public class TileSetImpl implements TileSet
|
|||||||
*/
|
*/
|
||||||
protected Tile createTile (int tid)
|
protected Tile createTile (int tid)
|
||||||
{
|
{
|
||||||
int size[] = (int[])objects.get(tid);
|
// construct an object tile if the tile set was specified as such
|
||||||
if (size != null) {
|
if (isObjectSet) {
|
||||||
return new ObjectTile(tsid, tid, size[0], size[1]);
|
// default object dimensions to (1, 1)
|
||||||
|
int wid = 1, hei = 1;
|
||||||
|
|
||||||
|
// retrieve object dimensions if known
|
||||||
|
if (_objects != null) {
|
||||||
|
int size[] = (int[])_objects.get(tid);
|
||||||
|
if (size != null) {
|
||||||
|
wid = size[0];
|
||||||
|
hei = size[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ObjectTile(tsid, tid, wid, hei);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// construct a basic tile
|
||||||
return new Tile(tsid, tid);
|
return new Tile(tsid, tid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,6 +205,18 @@ public class TileSetImpl implements TileSet
|
|||||||
_imgTiles, tx, ty, rowWidth[ridx], rowHeight[ridx]);
|
_imgTiles, tx, ty, rowWidth[ridx], rowHeight[ridx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void addObjectInfo (int tid, int size[])
|
||||||
|
{
|
||||||
|
if (_objects == null) {
|
||||||
|
_objects = new HashIntMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
_objects.put(tid, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Mapping of object tile ids to object dimensions. */
|
||||||
|
protected HashIntMap _objects;
|
||||||
|
|
||||||
/** The image containing all tile images for this set. */
|
/** The image containing all tile images for this set. */
|
||||||
protected Image _imgTiles;
|
protected Image _imgTiles;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,22 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileSetParser.java,v 1.5 2001/08/16 23:14:20 mdb Exp $
|
// $Id: TileSetParser.java,v 1.6 2001/10/12 16:36:58 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.media.tile;
|
package com.threerings.media.tile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The TileSetParser is a general interface to be implemented by
|
* The tile set parser interface is intended to be implemented by
|
||||||
* classes that load tileset descriptions in a particular format from
|
* classes that load tileset descriptions from a file.
|
||||||
* a file.
|
|
||||||
*/
|
*/
|
||||||
public interface TileSetParser
|
public interface TileSetParser
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Read tileset description data from the specified file and
|
* Read tileset description data from the specified file and
|
||||||
* construct TileSet objects to suit. Return an ArrayList of all
|
* construct {@link TileSet} objects to suit. Return a list of
|
||||||
* TileSet objects constructed, or a zero-length list if no
|
* all tile set objects constructed, or a zero-length list if no
|
||||||
* tileset descriptions were fully parsed.
|
* tileset descriptions were fully parsed.
|
||||||
*/
|
*/
|
||||||
public ArrayList loadTileSets (String fname) throws IOException;
|
public List loadTileSets (String fname) throws IOException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
//
|
//
|
||||||
// $Id: XMLTileSetParser.java,v 1.16 2001/10/11 00:41:26 shaper Exp $
|
// $Id: XMLTileSetParser.java,v 1.17 2001/10/12 16:36:58 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.media.tile;
|
package com.threerings.media.tile;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
|
||||||
import org.xml.sax.*;
|
import org.xml.sax.*;
|
||||||
@@ -74,9 +75,18 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
_tag = qName;
|
_tag = qName;
|
||||||
|
|
||||||
if (_tag.equals("tileset")) {
|
if (_tag.equals("tileset")) {
|
||||||
|
// construct the new tile set
|
||||||
|
_tset = createTileSet();
|
||||||
|
|
||||||
|
// note whether it contains object tiles
|
||||||
|
String str = attributes.getValue("layer");
|
||||||
|
_tset.isObjectSet = str.toLowerCase().equals(LAYER_OBJECT);
|
||||||
|
|
||||||
|
// get the tile set id
|
||||||
_tset.tsid = getInt(attributes.getValue("tsid"));
|
_tset.tsid = getInt(attributes.getValue("tsid"));
|
||||||
|
|
||||||
String str = attributes.getValue("name");
|
// get the tile set name
|
||||||
|
str = attributes.getValue("name");
|
||||||
_tset.name = (str == null) ? DEF_NAME : str;
|
_tset.name = (str == null) ? DEF_NAME : str;
|
||||||
|
|
||||||
} else if (_tag.equals("object")) {
|
} else if (_tag.equals("object")) {
|
||||||
@@ -87,7 +97,7 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
int hei = getInt(attributes.getValue("height"));
|
int hei = getInt(attributes.getValue("height"));
|
||||||
|
|
||||||
// add the object info to the tileset object hashtable
|
// add the object info to the tileset object hashtable
|
||||||
_tset.objects.put(tid, new int[] { wid, hei });
|
_tset.addObjectInfo(tid, new int[] { wid, hei });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +130,7 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
// documentation inherited
|
// documentation inherited
|
||||||
public ArrayList loadTileSets (String fname) throws IOException
|
public List loadTileSets (String fname) throws IOException
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
InputStream tis = ConfigUtil.getStream(fname);
|
InputStream tis = ConfigUtil.getStream(fname);
|
||||||
@@ -154,7 +164,7 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
protected void init ()
|
protected void init ()
|
||||||
{
|
{
|
||||||
_chars = new StringBuffer();
|
_chars = new StringBuffer();
|
||||||
_tset = createTileSet();
|
_tset = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -164,7 +174,7 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
*/
|
*/
|
||||||
protected TileSetImpl createTileSet ()
|
protected TileSetImpl createTileSet ()
|
||||||
{
|
{
|
||||||
return new TileSetImpl();
|
return new TileSetImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -198,6 +208,9 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
/** Default tileset name. */
|
/** Default tileset name. */
|
||||||
protected static final String DEF_NAME = "Untitled";
|
protected static final String DEF_NAME = "Untitled";
|
||||||
|
|
||||||
|
/** String constant denoting an object tile set. */
|
||||||
|
protected static final String LAYER_OBJECT = "object";
|
||||||
|
|
||||||
/** The XML element tag currently being processed. */
|
/** The XML element tag currently being processed. */
|
||||||
protected String _tag;
|
protected String _tag;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user