Initial work on reading and writing scenes to XML files.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@113 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
#
|
#
|
||||||
# $Id: miso.properties,v 1.7 2001/07/21 01:51:09 shaper Exp $
|
# $Id: miso.properties,v 1.8 2001/07/23 22:31:47 shaper Exp $
|
||||||
#
|
#
|
||||||
# Initial test config values for miso development.
|
# Initial test config values for miso development.
|
||||||
#
|
#
|
||||||
|
|
||||||
# the tileset manager class to use for working with tilesets
|
# the tileset manager class for working with tilesets
|
||||||
tilesetmgr = com.threerings.miso.tile.EditableTileSetManager
|
tilesetmgr = com.threerings.miso.tile.EditableTileSetManager
|
||||||
|
|
||||||
# the scene manager class to use for working with scenes
|
# the scene manager class for working with scenes
|
||||||
scenemanager = com.threerings.miso.scene.CompiledSceneManager
|
scenemgr = com.threerings.miso.scene.EditableSceneManager
|
||||||
|
|
||||||
# the tileset descriptions
|
# the tileset descriptions
|
||||||
tilesets = rsrc/config/miso/tilesets.xml
|
tilesets = rsrc/config/miso/tilesets.xml
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileManager.java,v 1.10 2001/07/23 18:52:51 shaper Exp $
|
// $Id: TileManager.java,v 1.11 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.tile;
|
package com.threerings.miso.tile;
|
||||||
|
|
||||||
@@ -20,9 +20,9 @@ public class TileManager
|
|||||||
/**
|
/**
|
||||||
* Initialize the tile manager with the given TileSetManager object.
|
* Initialize the tile manager with the given TileSetManager object.
|
||||||
*/
|
*/
|
||||||
public TileManager (TileSetManager tsmgr)
|
public TileManager (TileSetManager tilesetmgr)
|
||||||
{
|
{
|
||||||
_tsmgr = tsmgr;
|
_tilesetmgr = tilesetmgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,7 +43,7 @@ public class TileManager
|
|||||||
|
|
||||||
// retrieve the tile image from the tileset
|
// retrieve the tile image from the tileset
|
||||||
tile = new Tile(tsid, tid);
|
tile = new Tile(tsid, tid);
|
||||||
if ((tile.img = _tsmgr.getTileImage(tsid, tid)) == null) {
|
if ((tile.img = _tilesetmgr.getTileImage(tsid, tid)) == null) {
|
||||||
Log.warning("Null tile image [tsid="+tsid+", tid="+tid+"].");
|
Log.warning("Null tile image [tsid="+tsid+", tid="+tid+"].");
|
||||||
}
|
}
|
||||||
tile.height = (short)((BufferedImage)tile.img).getHeight();
|
tile.height = (short)((BufferedImage)tile.img).getHeight();
|
||||||
@@ -60,12 +60,12 @@ public class TileManager
|
|||||||
*/
|
*/
|
||||||
public TileSetManager getTileSetManager ()
|
public TileSetManager getTileSetManager ()
|
||||||
{
|
{
|
||||||
return _tsmgr;
|
return _tilesetmgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Cache of tiles that have been requested thus far. */
|
/** Cache of tiles that have been requested thus far. */
|
||||||
protected IntMap _tiles = new IntMap();
|
protected IntMap _tiles = new IntMap();
|
||||||
|
|
||||||
/** Our tileset manager. */
|
/** The tileset manager. */
|
||||||
protected TileSetManager _tsmgr;
|
protected TileSetManager _tilesetmgr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileSetManager.java,v 1.8 2001/07/23 18:52:51 shaper Exp $
|
// $Id: TileSetManager.java,v 1.9 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.tile;
|
package com.threerings.miso.tile;
|
||||||
|
|
||||||
@@ -8,30 +8,54 @@ import com.threerings.media.ImageManager;
|
|||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The TileSetManager provides tileset management functionality
|
||||||
|
* intended for use by the TileManager. It provides facilities for
|
||||||
|
* obtaining information about individual tilesets, retrieving an list
|
||||||
|
* of all tilesets available, and retrieving the image associated with
|
||||||
|
* a particular tile in a set.
|
||||||
|
*/
|
||||||
public interface TileSetManager
|
public interface TileSetManager
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Return the total number of tiles in the specified tileset.
|
* Return the total number of tiles in the specified tileset or -1
|
||||||
|
* if the tileset is not found.
|
||||||
|
*
|
||||||
|
* @param tsid the tileset identifier.
|
||||||
|
* @return the number of tiles.
|
||||||
*/
|
*/
|
||||||
public int getNumTilesInSet (int tsid);
|
public int getNumTilesInSet (int tsid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a list of all tilesets available for use.
|
* Return an ArrayList containing all TileSet objects available.
|
||||||
|
*
|
||||||
|
* @return the list of tilesets.
|
||||||
*/
|
*/
|
||||||
public ArrayList getAllTileSets ();
|
public ArrayList getAllTileSets ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the tileset object corresponding to the specified tileset id.
|
* Return the tileset object corresponding to the specified
|
||||||
|
* tileset id, or null if the tileset is not found.
|
||||||
|
*
|
||||||
|
* @param tsid the tileset identifier.
|
||||||
|
* @return the tileset object.
|
||||||
*/
|
*/
|
||||||
public TileSet getTileSet (int tsid);
|
public TileSet getTileSet (int tsid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the image corresponding to the specified tileset and tile id.
|
* Return the image corresponding to the specified tileset and tile id.
|
||||||
|
*
|
||||||
|
* @param tsid the tileset identifier.
|
||||||
|
* @param tid the tile identifier.
|
||||||
|
*
|
||||||
|
* @return the tile image.
|
||||||
*/
|
*/
|
||||||
public Image getTileImage (int tsid, int tid);
|
public Image getTileImage (int tsid, int tid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the total number of tilesets.
|
* Return the total number of tilesets available for use.
|
||||||
|
*
|
||||||
|
* @return the number of tilesets.
|
||||||
*/
|
*/
|
||||||
public int getNumTileSets ();
|
public int getNumTileSets ();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileSetManagerImpl.java,v 1.7 2001/07/23 18:52:51 shaper Exp $
|
// $Id: TileSetManagerImpl.java,v 1.8 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.tile;
|
package com.threerings.miso.tile;
|
||||||
|
|
||||||
@@ -43,9 +43,6 @@ public abstract class TileSetManagerImpl implements TileSetManager
|
|||||||
|
|
||||||
public ArrayList getAllTileSets ()
|
public ArrayList getAllTileSets ()
|
||||||
{
|
{
|
||||||
int size = _tilesets.size();
|
|
||||||
if (size == 0) return null;
|
|
||||||
|
|
||||||
ArrayList list = new ArrayList();
|
ArrayList list = new ArrayList();
|
||||||
CollectionUtil.addAll(list, _tilesets.elements());
|
CollectionUtil.addAll(list, _tilesets.elements());
|
||||||
return list;
|
return list;
|
||||||
|
|||||||
@@ -1,24 +1,23 @@
|
|||||||
//
|
//
|
||||||
// $Id: TileSetParser.java,v 1.3 2001/07/23 18:52:51 shaper Exp $
|
// $Id: TileSetParser.java,v 1.4 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.tile;
|
package com.threerings.miso.tile;
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An interface to be implemented by classes that wish to provide a
|
* The TileSetParser is a general interface to be implemented by
|
||||||
* general interface to load tileset description information from an
|
* classes that load tileset descriptions in a particular format from
|
||||||
* input stream.
|
* a file.
|
||||||
*/
|
*/
|
||||||
public interface TileSetParser
|
public interface TileSetParser
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Read tileset description data from the given input stream and
|
* Read tileset description data from the specified file and
|
||||||
* construct TileSet objects to suit. Return an ArrayList of all
|
* construct TileSet objects to suit. Return an ArrayList of all
|
||||||
* TileSet objects constructed, or a zero-length array if no
|
* TileSet objects constructed, or a zero-length list if no
|
||||||
* tileset descriptions were fully parsed.
|
* tileset descriptions were fully parsed.
|
||||||
*/
|
*/
|
||||||
public ArrayList loadTileSets (InputStream tis) throws IOException;
|
public ArrayList loadTileSets (String fname) throws IOException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
//
|
//
|
||||||
// $Id: XMLTileSetParser.java,v 1.5 2001/07/23 18:52:51 shaper Exp $
|
// $Id: XMLTileSetParser.java,v 1.6 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.tile;
|
package com.threerings.miso.tile;
|
||||||
|
|
||||||
import com.threerings.miso.Log;
|
|
||||||
|
|
||||||
import com.samskivert.util.StringUtil;
|
|
||||||
import com.samskivert.xml.XMLUtil;
|
|
||||||
|
|
||||||
import org.xml.sax.*;
|
|
||||||
import org.xml.sax.helpers.DefaultHandler;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
|
||||||
|
import org.xml.sax.*;
|
||||||
|
import org.xml.sax.helpers.DefaultHandler;
|
||||||
|
|
||||||
|
import com.samskivert.util.*;
|
||||||
|
import com.samskivert.xml.XMLUtil;
|
||||||
|
import com.threerings.miso.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse an XML tileset description file and construct tileset objects
|
* Parse an XML tileset description file and construct tileset objects
|
||||||
* for each valid description. Does not currently perform validation
|
* for each valid description. Does not currently perform validation
|
||||||
@@ -75,13 +74,22 @@ public class XMLTileSetParser extends DefaultHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList loadTileSets (InputStream tis) throws IOException
|
public ArrayList loadTileSets (String fname) throws IOException
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
XMLUtil.parse(this, tis);
|
InputStream tis = ConfigUtil.getStream(fname);
|
||||||
return _tilesets;
|
if (tis == null) {
|
||||||
|
Log.warning("Couldn't find file [fname=" + fname + "].");
|
||||||
|
return _tilesets;
|
||||||
|
}
|
||||||
|
|
||||||
} catch (ParserConfigurationException pce) {
|
// read all tileset descriptions from the XML input stream
|
||||||
|
XMLTileSetParser parser = new XMLTileSetParser();
|
||||||
|
XMLUtil.parse(this, tis);
|
||||||
|
|
||||||
|
return _tilesets;
|
||||||
|
|
||||||
|
} catch (ParserConfigurationException pce) {
|
||||||
throw new IOException(pce.toString());
|
throw new IOException(pce.toString());
|
||||||
|
|
||||||
} catch (SAXException saxe) {
|
} catch (SAXException saxe) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: DisplayMisoSceneImpl.java,v 1.9 2001/07/23 18:52:51 shaper Exp $
|
// $Id: DisplayMisoSceneImpl.java,v 1.10 2001/07/23 22:31:47 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
@@ -16,24 +16,25 @@ import java.io.*;
|
|||||||
*/
|
*/
|
||||||
public class Scene
|
public class Scene
|
||||||
{
|
{
|
||||||
|
/** String translations of each tile layer name. */
|
||||||
public static final String[] XLATE_LAYERS = { "Base", "Object" };
|
public static final String[] XLATE_LAYERS = { "Base", "Object" };
|
||||||
|
|
||||||
public Tile tiles[][][]; // the tiles comprising the scene
|
/** The tiles comprising the scene. */
|
||||||
|
public Tile tiles[][][];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new Scene object initialized to a default state.
|
* Construct a new Scene object initialized to a default state,
|
||||||
|
* specifying the tile manager from which the scene obtains tiles.
|
||||||
|
*
|
||||||
|
* @param tilemgr the tile manager.
|
||||||
*/
|
*/
|
||||||
public Scene (TileManager tmgr)
|
public Scene (TileManager tilemgr, int sid)
|
||||||
{
|
{
|
||||||
_tmgr = tmgr;
|
_tilemgr = tilemgr;
|
||||||
|
|
||||||
_name = DEF_SCENE_NAME;
|
_name = DEF_SCENE_NAME;
|
||||||
_sid = 0;
|
|
||||||
_version = VERSION;
|
|
||||||
|
|
||||||
tiles = new Tile[TILE_WIDTH][TILE_HEIGHT][NUM_LAYERS];
|
tiles = new Tile[TILE_WIDTH][TILE_HEIGHT][NUM_LAYERS];
|
||||||
|
|
||||||
Tile tile = _tmgr.getTile(DEF_TSID, DEF_TID);
|
Tile tile = _tilemgr.getTile(DEF_TSID, DEF_TID);
|
||||||
for (int xx = 0; xx < TILE_WIDTH; xx++) {
|
for (int xx = 0; xx < TILE_WIDTH; xx++) {
|
||||||
for (int yy = 0; yy < TILE_HEIGHT; yy++) {
|
for (int yy = 0; yy < TILE_HEIGHT; yy++) {
|
||||||
for (int ii = 0; ii < NUM_LAYERS; ii++) {
|
for (int ii = 0; ii < NUM_LAYERS; ii++) {
|
||||||
@@ -45,6 +46,38 @@ public class Scene
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the scene name.
|
||||||
|
*/
|
||||||
|
public String getName ()
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the scene identifier.
|
||||||
|
*/
|
||||||
|
public short getId ()
|
||||||
|
{
|
||||||
|
return _sid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the scene hot spots array.
|
||||||
|
*/
|
||||||
|
public Point[] getHotSpots ()
|
||||||
|
{
|
||||||
|
return _hotspots;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the scene exit points array.
|
||||||
|
*/
|
||||||
|
public ExitPoint[] getExits ()
|
||||||
|
{
|
||||||
|
return _exits;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the number of actual (non-null) tiles present in the
|
* Return the number of actual (non-null) tiles present in the
|
||||||
* specified tile layer for this scene.
|
* specified tile layer for this scene.
|
||||||
@@ -75,12 +108,12 @@ public class Scene
|
|||||||
// read scene header information
|
// read scene header information
|
||||||
_name = dis.readUTF();
|
_name = dis.readUTF();
|
||||||
_sid = dis.readShort();
|
_sid = dis.readShort();
|
||||||
_version = dis.readShort();
|
short version = dis.readShort();
|
||||||
|
|
||||||
// make sure we can understand the file format
|
// make sure we can understand the file format
|
||||||
if (_version < 0 || _version > VERSION) {
|
if (version < 0 || version > VERSION) {
|
||||||
throw new IOException("Can't understand scene file format " +
|
throw new IOException("Can't understand scene file format " +
|
||||||
" [version=" + _version + "]");
|
" [version=" + version + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
// allocate full tile array. null tiles denote tiles in absentia.
|
// allocate full tile array. null tiles denote tiles in absentia.
|
||||||
@@ -94,7 +127,7 @@ public class Scene
|
|||||||
short tid = dis.readShort();
|
short tid = dis.readShort();
|
||||||
|
|
||||||
// retrieve tile from tile manager
|
// retrieve tile from tile manager
|
||||||
tiles[xx][yy][LAYER_BASE] = _tmgr.getTile(tsid, tid);
|
tiles[xx][yy][LAYER_BASE] = _tilemgr.getTile(tsid, tid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +144,7 @@ public class Scene
|
|||||||
byte ty = dis.readByte();
|
byte ty = dis.readByte();
|
||||||
|
|
||||||
// retrieve tile from tile manager
|
// retrieve tile from tile manager
|
||||||
tiles[tx][ty][lnum] = _tmgr.getTile(tsid, tid);
|
tiles[tx][ty][lnum] = _tilemgr.getTile(tsid, tid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,7 +178,7 @@ public class Scene
|
|||||||
// write scene header information
|
// write scene header information
|
||||||
dos.writeUTF(_name);
|
dos.writeUTF(_name);
|
||||||
dos.writeShort(_sid);
|
dos.writeShort(_sid);
|
||||||
dos.writeShort(_version);
|
dos.writeShort(VERSION);
|
||||||
|
|
||||||
// write tiles for the base layer
|
// write tiles for the base layer
|
||||||
for (int xx = 0; xx < TILE_WIDTH; xx++) {
|
for (int xx = 0; xx < TILE_WIDTH; xx++) {
|
||||||
@@ -190,28 +223,45 @@ public class Scene
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// the latest scene file format version number
|
/** The latest scene file format version. */
|
||||||
protected static final short VERSION = 1;
|
protected static final short VERSION = 1;
|
||||||
|
|
||||||
// scene width/height in tiles
|
/** The scene width in tiles. */
|
||||||
protected static final int TILE_WIDTH = 55;
|
protected static final int TILE_WIDTH = 55;
|
||||||
|
|
||||||
|
/** The scene height in tiles. */
|
||||||
protected static final int TILE_HEIGHT = 55;
|
protected static final int TILE_HEIGHT = 55;
|
||||||
|
|
||||||
// layer identifiers and total number of layers
|
/** The base layer id. */
|
||||||
protected static final int LAYER_BASE = 0;
|
protected static final int LAYER_BASE = 0;
|
||||||
|
|
||||||
|
/** The object layer id. */
|
||||||
protected static final int LAYER_OBJECT = 1;
|
protected static final int LAYER_OBJECT = 1;
|
||||||
|
|
||||||
|
/** The total number of layers. */
|
||||||
protected static final int NUM_LAYERS = 2;
|
protected static final int NUM_LAYERS = 2;
|
||||||
|
|
||||||
|
/** The default scene name. */
|
||||||
protected static final String DEF_SCENE_NAME = "Untitled Scene";
|
protected static final String DEF_SCENE_NAME = "Untitled Scene";
|
||||||
|
|
||||||
|
/** The default tileset id. */
|
||||||
protected static final short DEF_TSID = 1000;
|
protected static final short DEF_TSID = 1000;
|
||||||
|
|
||||||
|
/** The default tile id. */
|
||||||
protected static final short DEF_TID = 1;
|
protected static final short DEF_TID = 1;
|
||||||
|
|
||||||
protected String _name; // the scene name
|
/** The scene name. */
|
||||||
protected short _sid; // the unique scene id
|
protected String _name;
|
||||||
protected short _version; // file format version
|
|
||||||
protected Point _hotspots[]; // hot spot zone points
|
|
||||||
protected ExitPoint _exits[]; // exit points to different scenes
|
|
||||||
|
|
||||||
protected TileManager _tmgr;
|
/** The unique scene id. */
|
||||||
|
protected short _sid;
|
||||||
|
|
||||||
|
/** Hot-spot zone points */
|
||||||
|
protected Point _hotspots[];
|
||||||
|
|
||||||
|
/** Exit points to different scenes. */
|
||||||
|
protected ExitPoint _exits[];
|
||||||
|
|
||||||
|
/** The tile manager. */
|
||||||
|
protected TileManager _tilemgr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,68 @@
|
|||||||
//
|
//
|
||||||
// $Id: EditableSceneManager.java,v 1.5 2001/07/23 18:52:51 shaper Exp $
|
// $Id: EditableSceneManager.java,v 1.6 2001/07/23 22:31:47 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.threerings.miso.Log;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The EditableSceneManager extends general scene manager
|
||||||
|
* functionality to allow reading scenes from and writing scenes to
|
||||||
|
* XML files.
|
||||||
|
*/
|
||||||
public class EditableSceneManager extends SceneManagerImpl
|
public class EditableSceneManager extends SceneManagerImpl
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Load all scenes described in the specified XML file into the
|
||||||
|
* hashtable of scenes currently available.
|
||||||
|
*
|
||||||
|
* @param fname the file to load scenes from.
|
||||||
|
*/
|
||||||
|
public void loadScenes (String fname) throws IOException
|
||||||
|
{
|
||||||
|
ArrayList scenes = null;
|
||||||
|
_sid = 0;
|
||||||
|
try {
|
||||||
|
scenes = new XMLSceneParser().loadScenes(fname);
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
Log.warning("Exception loading scenes [fname=" + fname +
|
||||||
|
", ioe=" + ioe + "].");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// bail if we didn't find any scenes
|
||||||
|
int size = scenes.size();
|
||||||
|
if (size == 0) {
|
||||||
|
Log.warning("No scenes found [fname=" + fname + "].");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy new scenes into the main scene hashtable
|
||||||
|
for (int ii = 0; ii < size; ii++) {
|
||||||
|
Scene scene = (Scene)scenes.get(ii);
|
||||||
|
_scenes.put(scene.getId(), scene);
|
||||||
|
Log.info("Adding scene to cache [scene=" + scene + "].");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write all scenes currently available to the specified file in
|
||||||
|
* XML format.
|
||||||
|
*
|
||||||
|
* @param fname the file to write the scenes to.
|
||||||
|
*/
|
||||||
|
public void writeAllScenes (String fname)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
ArrayList scenes = getAllScenes();
|
||||||
|
new XMLSceneWriter(scenes).writeToFile(fname);
|
||||||
|
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
Log.warning("Exception writing scenes to file [fname=" +
|
||||||
|
fname + ", ioe=" + ioe + "].");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneManager.java,v 1.5 2001/07/23 18:52:51 shaper Exp $
|
// $Id: SceneManager.java,v 1.6 2001/07/23 22:31:47 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages the various scenes that are displayed during the game and
|
* Manages the various scenes that are displayed during the game and
|
||||||
@@ -12,6 +13,20 @@ import java.io.InputStream;
|
|||||||
*/
|
*/
|
||||||
public interface SceneManager
|
public interface SceneManager
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Return an ArrayList containing all Scene objects available.
|
||||||
|
*
|
||||||
|
* @return the list of scenes.
|
||||||
|
*/
|
||||||
|
public ArrayList getAllScenes ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a new Scene object with the next unique scene id. The
|
||||||
|
* scene id is only guaranteed to be unique in the context of the
|
||||||
|
* scenes currently available via this SceneManager.
|
||||||
|
*/
|
||||||
|
public Scene getNewScene ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the Scene object for the specified scene id.
|
* Return the Scene object for the specified scene id.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,17 +1,23 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneManagerImpl.java,v 1.5 2001/07/23 18:52:51 shaper Exp $
|
// $Id: SceneManagerImpl.java,v 1.6 2001/07/23 22:31:47 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
import com.threerings.miso.Log;
|
|
||||||
|
|
||||||
import com.samskivert.util.ConfigUtil;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.samskivert.util.*;
|
||||||
|
import com.threerings.miso.Log;
|
||||||
|
import com.threerings.miso.tile.TileManager;
|
||||||
|
|
||||||
public abstract class SceneManagerImpl implements SceneManager
|
public abstract class SceneManagerImpl implements SceneManager
|
||||||
{
|
{
|
||||||
|
public void init (TileManager tilemgr)
|
||||||
|
{
|
||||||
|
_tilemgr = tilemgr;
|
||||||
|
}
|
||||||
|
|
||||||
public Scene getScene (int sid)
|
public Scene getScene (int sid)
|
||||||
{
|
{
|
||||||
// TBD
|
// TBD
|
||||||
@@ -22,4 +28,27 @@ public abstract class SceneManagerImpl implements SceneManager
|
|||||||
{
|
{
|
||||||
return Scene.XLATE_LAYERS;
|
return Scene.XLATE_LAYERS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList getAllScenes ()
|
||||||
|
{
|
||||||
|
ArrayList list = new ArrayList();
|
||||||
|
CollectionUtil.addAll(list, _scenes.elements());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Scene getNewScene ()
|
||||||
|
{
|
||||||
|
Scene scene = new Scene(_tilemgr, _sid);
|
||||||
|
_scenes.put(_sid++, scene);
|
||||||
|
return scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The next monotonically-increasing scene id. */
|
||||||
|
protected int _sid = 0;
|
||||||
|
|
||||||
|
/** The tile manager for use by all scenes. */
|
||||||
|
protected TileManager _tilemgr;
|
||||||
|
|
||||||
|
/** The scenes currently available. */
|
||||||
|
protected IntMap _scenes = new IntMap();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
//
|
//
|
||||||
// $Id: EditableTileSetManager.java,v 1.7 2001/07/23 18:52:51 shaper Exp $
|
// $Id: EditableTileSetManager.java,v 1.8 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.tile;
|
package com.threerings.miso.tile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import com.samskivert.util.Config;
|
import com.samskivert.util.Config;
|
||||||
import com.samskivert.util.ConfigUtil;
|
|
||||||
import com.threerings.miso.Log;
|
import com.threerings.miso.Log;
|
||||||
import com.threerings.media.ImageManager;
|
import com.threerings.media.ImageManager;
|
||||||
|
|
||||||
@@ -24,43 +22,29 @@ public class EditableTileSetManager extends TileSetManagerImpl
|
|||||||
{
|
{
|
||||||
super.init(config, imgmgr);
|
super.init(config, imgmgr);
|
||||||
|
|
||||||
// load the tileset descriptions
|
// load the tilesets from the XML description file
|
||||||
String fname = config.getValue("miso.tilesets", (String)null);
|
String fname = config.getValue("miso.tilesets", (String)null);
|
||||||
loadTileSets(fname);
|
ArrayList tilesets = null;
|
||||||
}
|
try {
|
||||||
|
tilesets = new XMLTileSetParser().loadTileSets(fname);
|
||||||
/**
|
|
||||||
* Load the tilesets described in the specified file into the set
|
|
||||||
* of available tilesets.
|
|
||||||
*/
|
|
||||||
protected void loadTileSets (String fname)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
InputStream tis = ConfigUtil.getStream(fname);
|
|
||||||
if (tis == null) {
|
|
||||||
Log.warning("Couldn't find file [fname=" + fname + "].");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// read all tileset descriptions from the XML input stream
|
|
||||||
XMLTileSetParser parser = new XMLTileSetParser();
|
|
||||||
ArrayList tsets = parser.loadTileSets(tis);
|
|
||||||
if (tsets == null) {
|
|
||||||
Log.warning("No tilesets found [tis=" + tis + "].");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// copy new tilesets into the main tileset hashtable
|
|
||||||
int size = tsets.size();
|
|
||||||
for (int ii = 0; ii < size; ii++) {
|
|
||||||
TileSet tset = (TileSet)tsets.get(ii);
|
|
||||||
_tilesets.put(tset.getId(), tset);
|
|
||||||
Log.info("Adding tileset to cache [tset=" + tset + "].");
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
Log.warning("Exception loading tileset [fname=" + fname +
|
Log.warning("Exception loading tileset [fname=" + fname +
|
||||||
", ioe=" + ioe + "].");
|
", ioe=" + ioe + "].");
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// bail if we didn't find any tilesets
|
||||||
|
int size = tilesets.size();
|
||||||
|
if (size == 0) {
|
||||||
|
Log.warning("No tilesets found [fname=" + fname + "].");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy new tilesets into the main tileset hashtable
|
||||||
|
for (int ii = 0; ii < size; ii++) {
|
||||||
|
TileSet tset = (TileSet)tilesets.get(ii);
|
||||||
|
_tilesets.put(tset.getId(), tset);
|
||||||
|
Log.info("Adding tileset to cache [tset=" + tset + "].");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: MisoUtil.java,v 1.2 2001/07/23 18:52:51 shaper Exp $
|
// $Id: MisoUtil.java,v 1.3 2001/07/23 22:31:48 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.util;
|
package com.threerings.miso.util;
|
||||||
|
|
||||||
@@ -39,11 +39,14 @@ public class MisoUtil
|
|||||||
*
|
*
|
||||||
* @return the new SceneManager object or null if an error occurred.
|
* @return the new SceneManager object or null if an error occurred.
|
||||||
*/
|
*/
|
||||||
public static SceneManager createSceneManager (Config config)
|
public static SceneManager
|
||||||
|
createSceneManager (Config config, TileManager tilemgr)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
return (SceneManager)
|
SceneManagerImpl scenemgr = (SceneManagerImpl)
|
||||||
config.instantiateValue("miso.scenemgr", DEF_SCENEMGR);
|
config.instantiateValue("miso.scenemgr", DEF_SCENEMGR);
|
||||||
|
scenemgr.init(tilemgr);
|
||||||
|
return scenemgr;
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.warning("Failed to instantiate scene manager [e=" + e + "].");
|
Log.warning("Failed to instantiate scene manager [e=" + e + "].");
|
||||||
|
|||||||
Reference in New Issue
Block a user