From ab18d9742e3f3b44b294dbdece7c66b25a54b3ac Mon Sep 17 00:00:00 2001 From: Walter Korman Date: Mon, 16 Jul 2001 22:12:01 +0000 Subject: [PATCH] Allow placement of the selected tile in scenes undergoing edit in the scene editor application. Added comments. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@53 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/media/tile/TileManager.java | 22 ++++++--- .../com/threerings/media/tile/TileSet.java | 6 +-- .../miso/client/CompiledSceneManager.java | 16 +------ .../miso/client/DisplayMisoSceneImpl.java | 4 +- .../miso/client/EditableSceneManager.java | 15 +------ .../threerings/miso/client/IsoSceneView.java | 45 ++++++++++++++----- .../threerings/miso/client/SceneManager.java | 13 ++++-- .../miso/client/SceneManagerImpl.java | 18 ++++++++ .../com/threerings/miso/client/SceneView.java | 11 ++++- .../threerings/miso/media/ImageManager.java | 3 +- 10 files changed, 100 insertions(+), 53 deletions(-) create mode 100644 src/java/com/threerings/miso/client/SceneManagerImpl.java diff --git a/src/java/com/threerings/media/tile/TileManager.java b/src/java/com/threerings/media/tile/TileManager.java index 40810a1ec..e0bb4b934 100644 --- a/src/java/com/threerings/media/tile/TileManager.java +++ b/src/java/com/threerings/media/tile/TileManager.java @@ -1,5 +1,5 @@ // -// $Id: TileManager.java,v 1.3 2001/07/16 18:59:31 shaper Exp $ +// $Id: TileManager.java,v 1.4 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.tile; @@ -10,17 +10,22 @@ import com.samskivert.util.IntMap; import java.awt.*; /** - * Provides a simplified interface for retrieving tile objects from - * various tilesets, by name or identifier, and manages caching of - * tiles and related resources as appropriate. + * Provides a simplified interface for managing multiple tilesets and + * tiles. */ public class TileManager { + /** + * Initialize the tile manager with the given TileSetManager object. + */ public TileManager (TileSetManager tsmgr) { _tsmgr = tsmgr; } + /** + * Return the total number of tiles in the specified tileset. + */ public int getNumTilesInSet (int tsid) { TileSet tset = _tsmgr.getTileSet(tsid); @@ -28,11 +33,18 @@ public class TileManager return tset.getNumTiles(); } + /** + * Return a String array of all tileset names ordered by ascending + * tileset id. + */ public String[] getTileSetNames () { return _tsmgr.getTileSetNames(); } + /** + * Return the Tile object for the specified tileset and tile id. + */ public Tile getTile (int tsid, int tid) { // the fully unique tile id is the conjoined tile set and tile id @@ -55,7 +67,7 @@ public class TileManager _tiles.put(utid, tile); - Log.info("Loaded tile into cache [tsid="+tsid+", tid="+tid+"]."); +// Log.info("Loaded tile into cache [tsid="+tsid+", tid="+tid+"]."); return tile; } diff --git a/src/java/com/threerings/media/tile/TileSet.java b/src/java/com/threerings/media/tile/TileSet.java index 544ca4043..3a8911d5e 100644 --- a/src/java/com/threerings/media/tile/TileSet.java +++ b/src/java/com/threerings/media/tile/TileSet.java @@ -1,5 +1,5 @@ // -// $Id: TileSet.java,v 1.4 2001/07/16 18:59:31 shaper Exp $ +// $Id: TileSet.java,v 1.5 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.tile; @@ -73,9 +73,9 @@ public class TileSet { // load the full tile image if we don't already have it if (_imgTiles == null) { - Log.info("Getting full tileset image [file=" + _file + "]."); if ((_imgTiles = ImageManager.getImage(_file)) == null) { - Log.warning("Failed to retrieve full tileset image."); + Log.warning("Failed to retrieve full tileset image " + + "[file=" + _file + "]."); return null; } } diff --git a/src/java/com/threerings/miso/client/CompiledSceneManager.java b/src/java/com/threerings/miso/client/CompiledSceneManager.java index e1e7cb8b6..0d333a551 100644 --- a/src/java/com/threerings/miso/client/CompiledSceneManager.java +++ b/src/java/com/threerings/miso/client/CompiledSceneManager.java @@ -1,20 +1,8 @@ // -// $Id: CompiledSceneManager.java,v 1.1 2001/07/12 22:38:03 shaper Exp $ +// $Id: CompiledSceneManager.java,v 1.2 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.scene; -public class CompiledSceneManager implements SceneManager +public class CompiledSceneManager extends SceneManagerImpl { - // context, rsrc mgr, loads compiled scene files via rsrc mgr - public Scene getScene (String name) - { - // TBD - return null; - } - - public Scene getScene (int sid) - { - // TBD - return null; - } } diff --git a/src/java/com/threerings/miso/client/DisplayMisoSceneImpl.java b/src/java/com/threerings/miso/client/DisplayMisoSceneImpl.java index af7d36b0a..2bc40d31d 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.3 2001/07/16 00:45:06 shaper Exp $ +// $Id: DisplayMisoSceneImpl.java,v 1.4 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.scene; @@ -16,6 +16,8 @@ import java.io.*; */ public class Scene { + public static final String[] XLATE_LAYERS = { "Base", "Object" }; + public Tile tiles[][][]; // the tiles comprising the scene /** diff --git a/src/java/com/threerings/miso/client/EditableSceneManager.java b/src/java/com/threerings/miso/client/EditableSceneManager.java index 30c1f33d4..fc2d253de 100644 --- a/src/java/com/threerings/miso/client/EditableSceneManager.java +++ b/src/java/com/threerings/miso/client/EditableSceneManager.java @@ -1,19 +1,8 @@ // -// $Id: EditableSceneManager.java,v 1.1 2001/07/12 22:38:03 shaper Exp $ +// $Id: EditableSceneManager.java,v 1.2 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.scene; -public class EditableSceneManager implements SceneManager +public class EditableSceneManager extends SceneManagerImpl { - public Scene getScene (String name) - { - // TBD - return null; - } - - public Scene getScene (int sid) - { - // TBD - return null; - } } diff --git a/src/java/com/threerings/miso/client/IsoSceneView.java b/src/java/com/threerings/miso/client/IsoSceneView.java index 70547ca5d..a1d83b47e 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.3 2001/07/16 00:45:06 shaper Exp $ +// $Id: IsoSceneView.java,v 1.4 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.scene; @@ -128,6 +128,10 @@ public class IsoSceneView implements SceneView g2.drawRect(_lineY[0].x - 1, _lineY[0].y - 1, 3, 3); } + /** + * Paint the tile coordinates in tile (x, y) whose top-left corner + * is at screen coordinates (sx, sy). + */ protected void paintCoords (Graphics2D g2, int x, int y, int sx, int sy) { g2.setFont(_font); @@ -135,7 +139,10 @@ public class IsoSceneView implements SceneView g2.drawString(""+x, sx+Tile.HALF_WIDTH-2, sy+Tile.HALF_HEIGHT-2); g2.drawString(""+y, sx+Tile.HALF_WIDTH-2, sy+Tile.HEIGHT-2); } - + + /** + * Paint a highlight around the tile at screen coordinates (sx, sy). + */ protected void paintHighlightedTile (Graphics2D g2, int sx, int sy) { int x = sx; @@ -163,9 +170,23 @@ public class IsoSceneView implements SceneView */ public void setHighlightedTile (int x, int y) { - float mX, mY; + Point tpos = screenToTile(x, y); + if (tpos != null) _htile = tpos; +// Log.info("Highlighting tile [x="+_htile.x+", y="+_htile.y+"]."); + } + + /** + * Returns a new Point object containing the tile coordinates + * corresponding to the specified screen-based mouse-position + * coordinates. + */ + protected Point screenToTile (int x, int y) + { + Point tpos = new Point(); + + float mX, mY; int bX, bY; - + // calculate the x-axis line (from tile origin to end of visible axis) mX = 0.5f; _lineX[0].x = Tile.HALF_WIDTH; @@ -188,22 +209,20 @@ public class IsoSceneView implements SceneView int xdist = (int) MathUtil.distance(_lineX[0].x, _lineX[0].y, _lineY[1].x, _lineY[1].y); - _htile.x = (int)((xdist - Tile.EDGE_LENGTH) / Tile.EDGE_LENGTH); + tpos.x = (int)((xdist - Tile.EDGE_LENGTH) / Tile.EDGE_LENGTH); // determine distance of mouse pos along the y-axis int ydist = (int) MathUtil.distance(_lineY[0].x, _lineY[0].y, _lineY[1].x, _lineY[1].y); - _htile.y = (int)(ydist / Tile.EDGE_LENGTH); + tpos.y = (int)(ydist / Tile.EDGE_LENGTH); //Log.info("[mX="+mX+", bX="+bX+", mY="+mY+", bY="+bY+"]"); //Log.info("x-axis=" + MathUtil.lineToString(_lineX[0], _lineX[1])); //Log.info("y-axis=" + MathUtil.lineToString(_lineY[0], _lineY[1])); - //Log.info("Highlighting tile [x="+_htile.x+", y="+_htile.y+"]."); - } - // TODO: abstract into methods for tile -> screen coords, - // screen -> tile coords + return tpos; + } public void setScene (Scene scene) { @@ -222,6 +241,12 @@ public class IsoSceneView implements SceneView height + "]."); } + public void setTile (int x, int y, int lnum, Tile tile) + { + Point tpos = screenToTile(x, y); + _scene.tiles[tpos.x][tpos.y][lnum] = tile; + } + protected static final int OFF_X = 0; protected static final int OFF_Y = 0; diff --git a/src/java/com/threerings/miso/client/SceneManager.java b/src/java/com/threerings/miso/client/SceneManager.java index 90ebdd730..31869d079 100644 --- a/src/java/com/threerings/miso/client/SceneManager.java +++ b/src/java/com/threerings/miso/client/SceneManager.java @@ -1,5 +1,5 @@ // -// $Id: SceneManager.java,v 1.1 2001/07/12 22:38:03 shaper Exp $ +// $Id: SceneManager.java,v 1.2 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.scene; @@ -9,7 +9,14 @@ package com.threerings.cocktail.miso.scene; */ public interface SceneManager { - public Scene getScene (String name); - + /** + * Return the Scene object for the specified scene id. + */ public Scene getScene (int sid); + + /** + * Return a String array of all layer names ordered by ascending + * layer id. + */ + public String[] getLayerNames (); } diff --git a/src/java/com/threerings/miso/client/SceneManagerImpl.java b/src/java/com/threerings/miso/client/SceneManagerImpl.java new file mode 100644 index 000000000..4ae6e3c42 --- /dev/null +++ b/src/java/com/threerings/miso/client/SceneManagerImpl.java @@ -0,0 +1,18 @@ +// +// $Id: SceneManagerImpl.java,v 1.1 2001/07/16 22:12:01 shaper Exp $ + +package com.threerings.cocktail.miso.scene; + +public class SceneManagerImpl implements SceneManager +{ + public Scene getScene (int sid) + { + // TBD + return null; + } + + public String[] getLayerNames () + { + return Scene.XLATE_LAYERS; + } +} diff --git a/src/java/com/threerings/miso/client/SceneView.java b/src/java/com/threerings/miso/client/SceneView.java index 1a266d7fe..1b1c13b4c 100644 --- a/src/java/com/threerings/miso/client/SceneView.java +++ b/src/java/com/threerings/miso/client/SceneView.java @@ -1,8 +1,10 @@ // -// $Id: SceneView.java,v 1.2 2001/07/16 00:45:06 shaper Exp $ +// $Id: SceneView.java,v 1.3 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.scene; +import com.threerings.cocktail.miso.tile.Tile; + import java.awt.Component; import java.awt.Graphics; @@ -27,9 +29,14 @@ public interface SceneView * Set the scene that we're rendering. */ public void setScene (Scene scene); - + /** * Set the target component to which we're rendering. */ public void setTarget (Component target); + + /** + * Set the tile at the specified location and layer in the scene. + */ + public void setTile (int x, int y, int lnum, Tile tile); } diff --git a/src/java/com/threerings/miso/media/ImageManager.java b/src/java/com/threerings/miso/media/ImageManager.java index fe1179fed..ac2a99fec 100644 --- a/src/java/com/threerings/miso/media/ImageManager.java +++ b/src/java/com/threerings/miso/media/ImageManager.java @@ -1,5 +1,5 @@ // -// $Id: ImageManager.java,v 1.3 2001/07/16 00:45:06 shaper Exp $ +// $Id: ImageManager.java,v 1.4 2001/07/16 22:12:01 shaper Exp $ package com.threerings.cocktail.miso.media; @@ -46,7 +46,6 @@ public class ImageManager } else { _imgs.put(fname, img); - Log.info("Loaded image into cache successfully."); } } catch (Exception e) {