Initial version of viewer application to allow playtesting of scenes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@124 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: IsoSceneView.java,v 1.14 2001/07/23 18:52:51 shaper Exp $
|
// $Id: IsoSceneView.java,v 1.15 2001/07/25 17:38:15 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
@@ -156,6 +156,7 @@ public class IsoSceneView implements EditableSceneView
|
|||||||
|
|
||||||
Stroke ostroke = gfx.getStroke();
|
Stroke ostroke = gfx.getStroke();
|
||||||
gfx.setStroke(_hstroke);
|
gfx.setStroke(_hstroke);
|
||||||
|
|
||||||
gfx.setColor(_hcolor);
|
gfx.setColor(_hcolor);
|
||||||
|
|
||||||
gfx.drawLine(x, y + Tile.HALF_HEIGHT,
|
gfx.drawLine(x, y + Tile.HALF_HEIGHT,
|
||||||
|
|||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
`dirname $0`/runjava $* com.threerings.miso.viewer.ViewerApp
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#
|
||||||
|
# $Id: viewer.properties,v 1.1 2001/07/25 17:38:15 shaper Exp $
|
||||||
|
#
|
||||||
|
# Miso scene viewer application config values.
|
||||||
|
#
|
||||||
|
|
||||||
|
default_scene = /home/shaper/workspace/cocktail/rsrc/scenes/default.xml
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
//
|
||||||
|
// $Id: SceneViewPanel.java,v 1.1 2001/07/25 17:38:15 shaper Exp $
|
||||||
|
|
||||||
|
package com.threerings.miso.viewer;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import com.samskivert.util.Config;
|
||||||
|
import com.threerings.miso.Log;
|
||||||
|
import com.threerings.miso.viewer.util.ViewerContext;
|
||||||
|
import com.threerings.miso.scene.*;
|
||||||
|
import com.threerings.miso.scene.xml.XMLFileSceneRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The SceneViewPanel class is responsible for managing a SceneView,
|
||||||
|
* rendering it to the screen, and handling view-related UI events.
|
||||||
|
*/
|
||||||
|
public class SceneViewPanel extends JPanel
|
||||||
|
implements MouseListener, MouseMotionListener
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Construct the panel and initialize it with a context.
|
||||||
|
*/
|
||||||
|
public SceneViewPanel (ViewerContext ctx)
|
||||||
|
{
|
||||||
|
_ctx = ctx;
|
||||||
|
_view = new IsoSceneView(_ctx.getTileManager());
|
||||||
|
|
||||||
|
addMouseListener(this);
|
||||||
|
addMouseMotionListener(this);
|
||||||
|
|
||||||
|
// get the scene repository
|
||||||
|
XMLFileSceneRepository repo = (XMLFileSceneRepository)
|
||||||
|
_ctx.getSceneManager().getSceneRepository();
|
||||||
|
|
||||||
|
// load the starting scene
|
||||||
|
Config config = _ctx.getConfig();
|
||||||
|
String fname = config.getValue(CONF_SCENE, (String)DEF_SCENE);
|
||||||
|
try {
|
||||||
|
_view.setScene(repo.loadScene(fname));
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
Log.warning("Exception loading scene [fname=" + fname +
|
||||||
|
", ioe=" + ioe + "].");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the scene managed by the panel.
|
||||||
|
*/
|
||||||
|
public void setScene (Scene scene)
|
||||||
|
{
|
||||||
|
_view.setScene(scene);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the panel and the scene view to the given graphics object.
|
||||||
|
*/
|
||||||
|
public void paint (Graphics g)
|
||||||
|
{
|
||||||
|
super.paint(g);
|
||||||
|
_view.paint(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** MouseListener interface methods */
|
||||||
|
|
||||||
|
public void mouseClicked (MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseEntered (MouseEvent e) { }
|
||||||
|
|
||||||
|
public void mouseExited (MouseEvent e) { }
|
||||||
|
|
||||||
|
public void mousePressed (MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseReleased (MouseEvent e) { }
|
||||||
|
|
||||||
|
/** MouseMotionListener interface methods */
|
||||||
|
|
||||||
|
public void mouseMoved (MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseDragged (MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The config key to obtain the default scene filename. */
|
||||||
|
protected static final String CONF_SCENE = "miso-viewer.default_scene";
|
||||||
|
|
||||||
|
/** The default scene to load and display. */
|
||||||
|
protected static final String DEF_SCENE = "rsrc/scenes/default.xml";
|
||||||
|
|
||||||
|
/** The context object. */
|
||||||
|
protected ViewerContext _ctx;
|
||||||
|
|
||||||
|
/** The scene view we're managing. */
|
||||||
|
protected SceneView _view;
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
//
|
||||||
|
// $Id: ViewerApp.java,v 1.1 2001/07/25 17:38:15 shaper Exp $
|
||||||
|
|
||||||
|
package com.threerings.miso.viewer;
|
||||||
|
|
||||||
|
import java.awt.Frame;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.samskivert.swing.util.SwingUtil;
|
||||||
|
import com.samskivert.util.Config;
|
||||||
|
import com.threerings.miso.Log;
|
||||||
|
import com.threerings.miso.scene.SceneManager;
|
||||||
|
import com.threerings.miso.tile.TileManager;
|
||||||
|
import com.threerings.miso.util.MisoUtil;
|
||||||
|
import com.threerings.miso.viewer.util.ViewerContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ViewerApp is a scene viewing application that allows for trying
|
||||||
|
* out game scenes in a pseudo-runtime environment.
|
||||||
|
*/
|
||||||
|
public class ViewerApp
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Construct and initialize the ViewerApp object.
|
||||||
|
*/
|
||||||
|
public ViewerApp ()
|
||||||
|
{
|
||||||
|
// create and size the main application frame
|
||||||
|
_frame = new ViewerFrame();
|
||||||
|
_frame.setSize(WIDTH, HEIGHT);
|
||||||
|
// SwingUtil.centerFrame(_frame);
|
||||||
|
|
||||||
|
// create the handles on our various services
|
||||||
|
_config = createConfig();
|
||||||
|
_tilemgr = MisoUtil.createTileManager(_config, _frame);
|
||||||
|
_scenemgr = MisoUtil.createSceneManager(_config, _tilemgr);
|
||||||
|
_ctx = new ViewerContextImpl();
|
||||||
|
|
||||||
|
// initialize the frame with the now-prepared context
|
||||||
|
((ViewerFrame)_frame).init(_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the config object that contains configuration parameters
|
||||||
|
* for the application and other utilized packages.
|
||||||
|
*/
|
||||||
|
protected Config createConfig ()
|
||||||
|
{
|
||||||
|
Config config = new Config();
|
||||||
|
try {
|
||||||
|
// load the miso config info
|
||||||
|
MisoUtil.bindProperties(config);
|
||||||
|
|
||||||
|
// load the viewer-specific config info
|
||||||
|
config.bindProperties("miso-viewer", "rsrc/config/miso/viewer");
|
||||||
|
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
Log.warning("Error loading config information [e=" + ioe + "].");
|
||||||
|
}
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The implementation of the ViewerContext interface that provides
|
||||||
|
* handles to the config and manager objects that offer commonly
|
||||||
|
* used services.
|
||||||
|
*/
|
||||||
|
protected class ViewerContextImpl implements ViewerContext
|
||||||
|
{
|
||||||
|
public Config getConfig ()
|
||||||
|
{
|
||||||
|
return _config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SceneManager getSceneManager ()
|
||||||
|
{
|
||||||
|
return _scenemgr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileManager getTileManager ()
|
||||||
|
{
|
||||||
|
return _tilemgr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the application.
|
||||||
|
*/
|
||||||
|
public void run ()
|
||||||
|
{
|
||||||
|
_frame.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiate the application object and start it running.
|
||||||
|
*/
|
||||||
|
public static void main (String[] args)
|
||||||
|
{
|
||||||
|
ViewerApp app = new ViewerApp();
|
||||||
|
app.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The desired width and height for the main application window. */
|
||||||
|
protected static final int WIDTH = 800;
|
||||||
|
protected static final int HEIGHT = 600;
|
||||||
|
|
||||||
|
/** The config object. */
|
||||||
|
protected Config _config;
|
||||||
|
|
||||||
|
/** The scene manager object. */
|
||||||
|
protected SceneManager _scenemgr;
|
||||||
|
|
||||||
|
/** The tile manager object. */
|
||||||
|
protected TileManager _tilemgr;
|
||||||
|
|
||||||
|
/** The context object. */
|
||||||
|
protected ViewerContext _ctx;
|
||||||
|
|
||||||
|
/** The main application window. */
|
||||||
|
protected Frame _frame;
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
//
|
||||||
|
// $Id: ViewerFrame.java,v 1.1 2001/07/25 17:38:15 shaper Exp $
|
||||||
|
|
||||||
|
package com.threerings.miso.viewer;
|
||||||
|
|
||||||
|
import com.samskivert.swing.*;
|
||||||
|
import com.samskivert.swing.util.MenuUtil;
|
||||||
|
import com.threerings.miso.Log;
|
||||||
|
import com.threerings.miso.viewer.util.ViewerContext;
|
||||||
|
import com.threerings.miso.scene.Scene;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import java.io.*;
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ViewerFrame is the main application window that constructs and
|
||||||
|
* contains the application menu bar and panels and responds to menu
|
||||||
|
* events.
|
||||||
|
*/
|
||||||
|
class ViewerFrame extends JFrame implements ActionListener
|
||||||
|
{
|
||||||
|
public ViewerFrame ()
|
||||||
|
{
|
||||||
|
super("Scene Viewer");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the frame with the context object.
|
||||||
|
*/
|
||||||
|
public void init (ViewerContext ctx)
|
||||||
|
{
|
||||||
|
_ctx = ctx;
|
||||||
|
|
||||||
|
// set up the menu bar
|
||||||
|
createMenuBar();
|
||||||
|
|
||||||
|
// create a top-level panel to manage everything
|
||||||
|
JPanel top = new JPanel();
|
||||||
|
GroupLayout gl = new HGroupLayout(GroupLayout.STRETCH);
|
||||||
|
gl.setOffAxisPolicy(GroupLayout.STRETCH);
|
||||||
|
top.setLayout(gl);
|
||||||
|
|
||||||
|
// set up the scene view panel with a default scene
|
||||||
|
SceneViewPanel svpanel = new SceneViewPanel(_ctx);
|
||||||
|
// setScene(new Scene(_tilemgr, Scene.SID_INVALID));
|
||||||
|
top.add(svpanel);
|
||||||
|
|
||||||
|
// now add our top-level panel
|
||||||
|
getContentPane().add(top, BorderLayout.CENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the menu bar and menu items and add them to the frame.
|
||||||
|
*/
|
||||||
|
public void createMenuBar ()
|
||||||
|
{
|
||||||
|
KeyStroke accel = null;
|
||||||
|
|
||||||
|
// create the "File" menu
|
||||||
|
JMenu menuFile = new JMenu("File");
|
||||||
|
accel = KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.ALT_MASK);
|
||||||
|
MenuUtil.addMenuItem(this, menuFile, "Quit", KeyEvent.VK_Q, accel);
|
||||||
|
|
||||||
|
// create the menu bar
|
||||||
|
JMenuBar bar = new JMenuBar();
|
||||||
|
bar.add(menuFile);
|
||||||
|
|
||||||
|
// add the menu bar to the frame
|
||||||
|
setJMenuBar(bar);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle menu item selections.
|
||||||
|
*/
|
||||||
|
public void actionPerformed (ActionEvent e)
|
||||||
|
{
|
||||||
|
String cmd = e.getActionCommand();
|
||||||
|
|
||||||
|
if (cmd.equals("Quit")) {
|
||||||
|
System.exit(0);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Log.warning("Unknown action command [cmd=" + cmd + "].");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The context object. */
|
||||||
|
protected ViewerContext _ctx;
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// $Id: ViewerContext.java,v 1.1 2001/07/25 17:38:15 shaper Exp $
|
||||||
|
|
||||||
|
package com.threerings.miso.viewer.util;
|
||||||
|
|
||||||
|
import com.samskivert.util.Context;
|
||||||
|
import com.threerings.miso.util.MisoContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A mix-in interface that combines the MisoContext and Context
|
||||||
|
* interfaces to provide an interface with the best of both worlds.
|
||||||
|
*/
|
||||||
|
public interface ViewerContext extends MisoContext, Context
|
||||||
|
{
|
||||||
|
// nothing for now.
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user