From 1ce70d6c5a5d8d79f74f5018ea5ff379c2eaf9ec Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 23 Apr 2002 01:19:04 +0000 Subject: [PATCH] Changes to jive with new rendering deal. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1288 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/cast/builder/TestApp.java | 9 ++-- .../threerings/cast/builder/TestFrame.java | 9 ++-- .../miso/client/ScrollingFrame.java | 23 ++++++++++- .../miso/client/ScrollingScene.java | 41 +++++++++++++++---- .../miso/client/ScrollingTestApp.java | 22 ++++++---- .../com/threerings/miso/viewer/ViewerApp.java | 10 ++++- .../miso/viewer/ViewerSceneViewPanel.java | 14 +++---- 7 files changed, 93 insertions(+), 35 deletions(-) diff --git a/tests/src/java/com/threerings/cast/builder/TestApp.java b/tests/src/java/com/threerings/cast/builder/TestApp.java index 8cc3bc646..5b7c32800 100644 --- a/tests/src/java/com/threerings/cast/builder/TestApp.java +++ b/tests/src/java/com/threerings/cast/builder/TestApp.java @@ -1,5 +1,5 @@ // -// $Id: TestApp.java,v 1.12 2002/03/28 22:32:33 mdb Exp $ +// $Id: TestApp.java,v 1.13 2002/04/23 01:19:04 mdb Exp $ package com.threerings.cast.builder; @@ -8,8 +8,9 @@ import javax.swing.JFrame; import com.samskivert.swing.util.SwingUtil; -import com.threerings.resource.ResourceManager; +import com.threerings.media.FrameManager; import com.threerings.media.ImageManager; +import com.threerings.resource.ResourceManager; import com.threerings.cast.Log; import com.threerings.cast.CharacterManager; @@ -27,6 +28,8 @@ public class TestApp _frame.setSize(800, 600); SwingUtil.centerWindow(_frame); + FrameManager framemgr = new FrameManager(_frame); + ResourceManager rmgr = new ResourceManager( "rsrc", null, "config/resource/manager.properties"); ImageManager imgr = new ImageManager(rmgr, _frame); @@ -37,7 +40,7 @@ public class TestApp charmgr.setCharacterClass(MisoCharacterSprite.class); // initialize the frame - ((TestFrame)_frame).init(charmgr, crepo); + ((TestFrame)_frame).init(framemgr, charmgr, crepo); } public void run () diff --git a/tests/src/java/com/threerings/cast/builder/TestFrame.java b/tests/src/java/com/threerings/cast/builder/TestFrame.java index 19d792646..9daaa7a7f 100644 --- a/tests/src/java/com/threerings/cast/builder/TestFrame.java +++ b/tests/src/java/com/threerings/cast/builder/TestFrame.java @@ -1,10 +1,12 @@ // -// $Id: TestFrame.java,v 1.4 2001/11/27 08:41:49 mdb Exp $ +// $Id: TestFrame.java,v 1.5 2002/04/23 01:19:04 mdb Exp $ package com.threerings.cast.builder; import javax.swing.JFrame; +import com.threerings.media.FrameManager; + import com.threerings.cast.CharacterManager; import com.threerings.cast.ComponentRepository; @@ -18,8 +20,9 @@ public class TestFrame extends JFrame setDefaultCloseOperation(EXIT_ON_CLOSE); } - public void init (CharacterManager charmgr, ComponentRepository crepo) + public void init (FrameManager framemgr, CharacterManager charmgr, + ComponentRepository crepo) { - getContentPane().add(new BuilderPanel(charmgr, crepo)); + getContentPane().add(new BuilderPanel(framemgr, charmgr, crepo)); } } diff --git a/tests/src/java/com/threerings/miso/client/ScrollingFrame.java b/tests/src/java/com/threerings/miso/client/ScrollingFrame.java index e2bc3d235..4a263d24d 100644 --- a/tests/src/java/com/threerings/miso/client/ScrollingFrame.java +++ b/tests/src/java/com/threerings/miso/client/ScrollingFrame.java @@ -1,5 +1,5 @@ // -// $Id: ScrollingFrame.java,v 1.2 2002/02/19 07:21:33 mdb Exp $ +// $Id: ScrollingFrame.java,v 1.3 2002/04/23 01:19:04 mdb Exp $ package com.threerings.miso.scene; @@ -8,7 +8,13 @@ import java.awt.Color; import java.awt.Component; import java.awt.GraphicsConfiguration; +import javax.swing.JButton; import javax.swing.JFrame; +import javax.swing.JPanel; + +import com.samskivert.swing.VGroupLayout; + +import com.threerings.media.SafeScrollPane; /** * The main application window. @@ -32,6 +38,19 @@ public class ScrollingFrame extends JFrame // set the frame and content panel background to black setBackground(Color.black); getContentPane().setBackground(Color.black); + + // create some interface elements to go with our scrolling panel + VGroupLayout vgl = new VGroupLayout(VGroupLayout.STRETCH); + vgl.setOffAxisPolicy(VGroupLayout.STRETCH); + getContentPane().setLayout(vgl); + + vgl = new VGroupLayout(VGroupLayout.NONE); + vgl.setOffAxisPolicy(VGroupLayout.STRETCH); + JPanel stuff = new JPanel(vgl); + for (int i = 0; i < 10; i++) { + stuff.add(new JButton("Button " + i)); + } + getContentPane().add(new SafeScrollPane(stuff)); } /** @@ -46,7 +65,7 @@ public class ScrollingFrame extends JFrame // now add the new one _panel = panel; - getContentPane().add(_panel, BorderLayout.CENTER); + getContentPane().add(_panel, 0); } protected Component _panel; diff --git a/tests/src/java/com/threerings/miso/client/ScrollingScene.java b/tests/src/java/com/threerings/miso/client/ScrollingScene.java index 3cb713a4d..b4b2f4ecd 100644 --- a/tests/src/java/com/threerings/miso/client/ScrollingScene.java +++ b/tests/src/java/com/threerings/miso/client/ScrollingScene.java @@ -1,14 +1,19 @@ // -// $Id: ScrollingScene.java,v 1.4 2002/04/15 17:47:05 mdb Exp $ +// $Id: ScrollingScene.java,v 1.5 2002/04/23 01:19:04 mdb Exp $ package com.threerings.miso.scene; +import java.util.Iterator; import java.util.Random; +import com.samskivert.io.PersistenceException; + import com.threerings.media.tile.NoSuchTileException; import com.threerings.media.tile.NoSuchTileSetException; import com.threerings.media.tile.ObjectTile; import com.threerings.media.tile.Tile; +import com.threerings.media.tile.TileSet; +import com.threerings.media.tile.TileSetRepository; import com.threerings.miso.tile.BaseTile; import com.threerings.miso.util.MisoContext; @@ -19,14 +24,30 @@ import com.threerings.miso.util.MisoContext; public class ScrollingScene implements DisplayMisoScene { public ScrollingScene (MisoContext ctx) - throws NoSuchTileSetException, NoSuchTileException + throws NoSuchTileSetException, NoSuchTileException, PersistenceException { + // locate the water tileset + TileSetRepository tsrepo = ctx.getTileManager().getTileSetRepository(); + Iterator iter = tsrepo.enumerateTileSets(); + TileSet wtset = null; + while (iter.hasNext()) { + TileSet tset = (TileSet)iter.next(); + // yay for built-in regex support! + if (tset.getName().matches(".*[Ww]ater.*")) { + wtset = tset; + break; + } + } + + if (wtset == null) { + throw new RuntimeException("Unable to locate water tileset."); + } + // grab our four repeating tiles - _tiles[0] = (BaseTile)ctx.getTileManager().getTile(5, 0); - _tiles[1] = (BaseTile)ctx.getTileManager().getTile(5, 1); - _tiles[2] = (BaseTile)ctx.getTileManager().getTile(5, 2); - _tiles[3] = (BaseTile)ctx.getTileManager().getTile(5, 3); - _tiles[4] = (BaseTile)ctx.getTileManager().getTile(5, 4); + _tiles = new BaseTile[wtset.getTileCount()]; + for (int ii = 0; ii < wtset.getTileCount(); ii++) { + _tiles[ii] = (BaseTile)wtset.getTile(ii); + } } // documentation inherited from interface @@ -34,7 +55,7 @@ public class ScrollingScene implements DisplayMisoScene { long seed = ((x^y) ^ multiplier) & mask; long hash = (seed * multiplier + addend) & mask; - int tidx = (int)((hash >> 10) % 5); + int tidx = (int)((hash >> 10) % _tiles.length); return _tiles[tidx]; } @@ -56,10 +77,12 @@ public class ScrollingScene implements DisplayMisoScene return null; } - protected BaseTile[] _tiles = new BaseTile[5]; + protected BaseTile[] _tiles; protected Random _rand = new Random(); protected final static long multiplier = 0x5DEECE66DL; protected final static long addend = 0xBL; protected final static long mask = (1L << 48) - 1; + + protected static final int WATER_TILESET_ID = 8; } diff --git a/tests/src/java/com/threerings/miso/client/ScrollingTestApp.java b/tests/src/java/com/threerings/miso/client/ScrollingTestApp.java index 6eaf8c181..90628d87a 100644 --- a/tests/src/java/com/threerings/miso/client/ScrollingTestApp.java +++ b/tests/src/java/com/threerings/miso/client/ScrollingTestApp.java @@ -1,5 +1,5 @@ // -// $Id: ScrollingTestApp.java,v 1.10 2002/04/15 17:47:05 mdb Exp $ +// $Id: ScrollingTestApp.java,v 1.11 2002/04/23 01:19:04 mdb Exp $ package com.threerings.miso.scene; @@ -16,6 +16,7 @@ import com.samskivert.swing.util.SwingUtil; import com.samskivert.util.Config; import com.threerings.resource.ResourceManager; +import com.threerings.media.FrameManager; import com.threerings.media.ImageManager; import com.threerings.media.sprite.Sprite; @@ -67,6 +68,9 @@ public class ScrollingTestApp // create the window _frame = new ScrollingFrame(gc); + // set up our frame manager + _framemgr = new FrameManager(_frame); + // we don't need to configure anything ResourceManager rmgr = new ResourceManager( "rsrc", null, "config/resource/manager.properties"); @@ -88,12 +92,7 @@ public class ScrollingTestApp charmgr.setCharacterClass(MisoCharacterSprite.class); // create our scene view panel - _panel = new SceneViewPanel(new IsoSceneViewModel()) { - public void start () { - super.start(); - // kick things off - viewFinishedScrolling(); - } + _panel = new SceneViewPanel(_framemgr, new IsoSceneViewModel()) { protected void viewFinishedScrolling () { // keep scrolling for a spell if (++_sidx < DX.length) { @@ -104,6 +103,7 @@ public class ScrollingTestApp protected final int[] DX = { 0, 1000, -1000, 1000, 2000 }; protected final int[] DY = { 1000, 0, 1000, -1000, 1000 }; }; + _panel.setScrolling(0, 1000, 10000l); _frame.setPanel(_panel); // create our "ship" sprite @@ -131,7 +131,6 @@ public class ScrollingTestApp // set the scene to our scrolling scene try { _panel.setScene(new ScrollingScene(ctx)); - _panel.start(); } catch (Exception e) { Log.warning("Error creating scene: " + e); @@ -147,7 +146,8 @@ public class ScrollingTestApp } else { Log.warning("Full-screen exclusive mode not available."); - _frame.pack(); + // _frame.pack(); + _frame.setSize(200, 300); SwingUtil.centerWindow(_frame); } } @@ -171,6 +171,7 @@ public class ScrollingTestApp { // show the window _frame.show(); + _framemgr.start(); } /** @@ -190,6 +191,9 @@ public class ScrollingTestApp /** The tile manager object. */ protected MisoTileManager _tilemgr; + /** The frame manager. */ + protected FrameManager _framemgr; + /** The main application window. */ protected ScrollingFrame _frame; diff --git a/tests/src/java/com/threerings/miso/viewer/ViewerApp.java b/tests/src/java/com/threerings/miso/viewer/ViewerApp.java index 9d4cf31a4..6582dc972 100644 --- a/tests/src/java/com/threerings/miso/viewer/ViewerApp.java +++ b/tests/src/java/com/threerings/miso/viewer/ViewerApp.java @@ -1,5 +1,5 @@ // -// $Id: ViewerApp.java,v 1.29 2002/04/06 02:03:54 mdb Exp $ +// $Id: ViewerApp.java,v 1.30 2002/04/23 01:19:04 mdb Exp $ package com.threerings.miso.viewer; @@ -12,6 +12,7 @@ import java.io.IOException; import com.samskivert.swing.util.SwingUtil; import com.threerings.resource.ResourceManager; +import com.threerings.media.FrameManager; import com.threerings.media.ImageManager; import com.threerings.media.tile.bundle.BundledTileSetRepository; @@ -64,6 +65,7 @@ public class ViewerApp // create the window _frame = new ViewerFrame(gc); + _framemgr = new FrameManager(_frame); // we don't need to configure anything ResourceManager rmgr = new ResourceManager( @@ -83,7 +85,7 @@ public class ViewerApp charmgr.setCharacterClass(MisoCharacterSprite.class); // create our scene view panel - _panel = new ViewerSceneViewPanel(ctx, charmgr, crepo); + _panel = new ViewerSceneViewPanel(ctx, _framemgr, charmgr, crepo); _frame.setPanel(_panel); // load up the scene specified by the user @@ -136,6 +138,7 @@ public class ViewerApp { // show the window _frame.show(); + _framemgr.start(); } /** @@ -155,6 +158,9 @@ public class ViewerApp /** The tile manager object. */ protected MisoTileManager _tilemgr; + /** The frame manager. */ + protected FrameManager _framemgr; + /** The main application window. */ protected ViewerFrame _frame; diff --git a/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java b/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java index 8737c999b..17c10c4a6 100644 --- a/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java +++ b/tests/src/java/com/threerings/miso/viewer/ViewerSceneViewPanel.java @@ -1,23 +1,22 @@ // -// $Id: ViewerSceneViewPanel.java,v 1.47 2002/04/15 18:18:20 mdb Exp $ +// $Id: ViewerSceneViewPanel.java,v 1.48 2002/04/23 01:19:04 mdb Exp $ package com.threerings.miso.viewer; import java.awt.Dimension; import java.awt.Graphics2D; +import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.List; - import com.threerings.util.RandomUtil; +import com.threerings.media.FrameManager; import com.threerings.cast.CharacterDescriptor; import com.threerings.cast.CharacterManager; import com.threerings.cast.ComponentRepository; import com.threerings.cast.util.CastUtil; -import com.threerings.media.animation.AnimationManager; import com.threerings.media.sprite.LineSegmentPath; import com.threerings.media.sprite.PathCompletedEvent; import com.threerings.media.sprite.SpriteEvent; @@ -42,10 +41,11 @@ public class ViewerSceneViewPanel extends SceneViewPanel * Construct the panel and initialize it with a context. */ public ViewerSceneViewPanel (MisoContext ctx, + FrameManager framemgr, CharacterManager charmgr, ComponentRepository crepo) { - super(new IsoSceneViewModel()); + super(framemgr, new IsoSceneViewModel()); // create the character descriptors _descUser = CastUtil.getRandomDescriptor("female", crepo); @@ -123,9 +123,9 @@ public class ViewerSceneViewPanel extends SceneViewPanel } // documentation inherited - public void render (Graphics2D g, List invalidRects) + public void paintBetween (Graphics2D g, Rectangle[] dirty) { - super.render(g, invalidRects); + super.paintBetween(g, dirty); PerformanceMonitor.tick(this, "paint"); }