Le metric crapload of changes to bring things up to date with the latest
Narya libraries and to finish the name change from Venison to Atlantissonne. git-svn-id: https://samskivert.googlecode.com/svn/trunk@969 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
(jde-set-variables
|
||||
'(jde-db-source-directories (quote ("/export/local/jdk1.4/src" "/home/mdb/projects/samskivert/src/java" "/home/mdb/work/narya/src/java" "/home/mdb/projects/atlanti/src/java")))
|
||||
'(jde-global-classpath (quote ("/home/mdb/projects/samskivert/dist/classes" "/home/mdb/work/narya/dist/classes" "/home/mdb/projects/atlanti/dist/classes")))
|
||||
)
|
||||
@@ -1,10 +1,10 @@
|
||||
<!-- build configuration -->
|
||||
<project name="venison" default="compile" basedir=".">
|
||||
<project name="atlanti" default="compile" basedir=".">
|
||||
|
||||
<!-- things you may want to change -->
|
||||
<property name="app.name" value="venison"/>
|
||||
<property name="doc.packages" value="com.threerings.venison.*"/>
|
||||
<property name="doc.overview" value="com/threerings/venison/overview.html"/>
|
||||
<property name="app.name" value="atlanti"/>
|
||||
<property name="doc.packages" value="com.threerings.atlanti.*"/>
|
||||
<property name="doc.overview" value="com/threerings/atlanti/overview.html"/>
|
||||
<property name="copyright.holder" value="Michael Bayne"/>
|
||||
<property name="build.compiler" value="jikes"/>
|
||||
<property name="java.libraries" value="/usr/share/java"/>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Required external libraries
|
||||
---------------------------
|
||||
|
||||
The Venison code requires the following external Java libraries (JAR
|
||||
The Atlantissonne code requires the following external Java libraries (JAR
|
||||
files) to be placed (or symlinked) here in the lib/ directory or in the
|
||||
shared library directory specified in the build.xml file
|
||||
(${java.libraries}).
|
||||
@@ -12,17 +12,9 @@ shared library directory specified in the build.xml file
|
||||
* The samskivert package:
|
||||
http://www.waywardgeeks.org/code/samskivert/
|
||||
|
||||
* MM MySQL driver:
|
||||
* A MySQL driver:
|
||||
http://mmmysql.sourceforge.net/
|
||||
|
||||
* Matt Welsh's Non-blocking IO library:
|
||||
http://www.cs.berkeley.edu/~mdw/proj/java-nbio/
|
||||
|
||||
(The native code shared library should be built and placed into
|
||||
lib/i686-Linux where it will be automatically added to LD_LIBRARY_PATH
|
||||
by the runjava script. Alternatively you can put it into your
|
||||
LD_LIBRARY_PATH by hand.)
|
||||
|
||||
* The Java API for XML Processing (JAXP) 1.1 Reference Implementation:
|
||||
http://java.sun.com/xml/download.html
|
||||
|
||||
@@ -32,15 +24,12 @@ shared library directory specified in the build.xml file
|
||||
* Megginson Technologies' XMLWriter 0.2 library:
|
||||
http://www.megginson.com/Software/xml-writer-0.2.zip
|
||||
|
||||
* The ? game development platform
|
||||
http://www.threerings.net/code/?/
|
||||
|
||||
* The MiCasa game hosting service
|
||||
http://www.threerings.net/code/micasa/
|
||||
* The Narya game development libraries
|
||||
http://www.threerings.net/code/narya/
|
||||
|
||||
Once the jar files are in place (regardless of what they are named), the
|
||||
build system will automatically include them in the compile-time
|
||||
classpath.
|
||||
|
||||
--
|
||||
$Id: README,v 1.1 2001/10/09 20:27:35 mdb Exp $
|
||||
$Id: README,v 1.2 2002/12/12 05:51:53 mdb Exp $
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#
|
||||
# $Id: dbmap.properties,v 1.1 2001/10/09 20:27:35 mdb Exp $
|
||||
# $Id: dbmap.properties,v 1.2 2002/12/12 05:51:53 mdb Exp $
|
||||
#
|
||||
# This provides information on the JDBC connections that are used by
|
||||
# Venison server services.
|
||||
# Atlantisonne server services.
|
||||
|
||||
#
|
||||
# The database mapping for the user database.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#
|
||||
# $Id: server.properties,v 1.1 2001/10/09 20:27:35 mdb Exp $
|
||||
# $Id: server.properties,v 1.2 2002/12/12 05:51:53 mdb Exp $
|
||||
#
|
||||
# Configuration for the Venison server
|
||||
# Configuration for the Atlantissonne server
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
#
|
||||
# $Id: server.properties,v 1.2 2001/10/24 03:25:11 mdb Exp $
|
||||
# $Id: server.properties,v 1.3 2002/12/12 05:51:53 mdb Exp $
|
||||
#
|
||||
# Configuration for the MiCasa server
|
||||
|
||||
_package = atlanti.server
|
||||
_overrides = micasa.server
|
||||
|
||||
#
|
||||
# The list of lobby identifiers to be loaded into this server.
|
||||
#
|
||||
lobby_ids = venison
|
||||
lobby_ids = atlanti
|
||||
|
||||
#
|
||||
# The cofiguration for the test lobby.
|
||||
#
|
||||
venison.config = com.threerings.micasa.lobby.table.TableLobbyConfig
|
||||
venison.ugi = venison,board,tile,strategy
|
||||
venison.name = Venison Lobby
|
||||
venison.game_config = com.threerings.venison.VenisonConfig
|
||||
atlanti.config = com.threerings.micasa.lobby.table.TableLobbyConfig
|
||||
atlanti.ugi = atlanti,board,tile,strategy
|
||||
atlanti.name = Atlanti Lobby
|
||||
atlanti.game_config = com.samskivert.atlanti.data.AtlantiConfig
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
//
|
||||
// $Id: Log.java,v 1.2 2001/10/09 20:27:35 mdb Exp $
|
||||
// $Id: Log.java,v 1.3 2002/12/12 05:51:53 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti;
|
||||
|
||||
/**
|
||||
* A placeholder class that contains a reference to the log object used by
|
||||
* the Venison package. This is a useful pattern to use when using the
|
||||
* samskivert logging facilities. One creates a top-level class like this
|
||||
* one that instantiates a log object with an name that identifies log
|
||||
* messages from that package and then provides static methods that
|
||||
* generate log messages using that instance. Then, classes in that
|
||||
* package need only import the log wrapper class and can easily use it to
|
||||
* generate log messages. For example:
|
||||
* this package. This is a useful pattern to use when using the samskivert
|
||||
* logging facilities. One creates a top-level class like this one that
|
||||
* instantiates a log object with an name that identifies log messages
|
||||
* from that package and then provides static methods that generate log
|
||||
* messages using that instance. Then, classes in that package need only
|
||||
* import the log wrapper class and can easily use it to generate log
|
||||
* messages. For example:
|
||||
*
|
||||
* <pre>
|
||||
* import com.threerings.venison.Log;
|
||||
* import com.samskivert.atlanti.Log;
|
||||
* // ...
|
||||
* Log.warning("All hell is breaking loose!");
|
||||
* // ...
|
||||
@@ -26,7 +26,7 @@ public class Log
|
||||
{
|
||||
/** The static log instance configured for use by this package. */
|
||||
public static com.samskivert.util.Log log =
|
||||
new com.samskivert.util.Log("venison");
|
||||
new com.samskivert.util.Log("atlanti");
|
||||
|
||||
/** Convenience function. */
|
||||
public static void debug (String message)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: TileGeometryTest.java,v 1.5 2002/01/29 23:45:56 mdb Exp $
|
||||
// $Id: TileGeometryTest.java,v 1.6 2002/12/12 05:51:53 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
@@ -16,17 +16,21 @@ import com.threerings.resource.ResourceManager;
|
||||
import com.threerings.media.ImageManager;
|
||||
import com.threerings.media.tile.TileManager;
|
||||
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.data.TileCodes;
|
||||
import com.samskivert.atlanti.util.PiecenUtil;
|
||||
|
||||
/**
|
||||
* A simple class for testing the tile geometry specifications by drawing
|
||||
* them.
|
||||
*/
|
||||
public class TileGeometryTest
|
||||
extends JPanel implements TileCodes
|
||||
public class TileGeometryTest extends JPanel
|
||||
implements TileCodes
|
||||
{
|
||||
public TileGeometryTest ()
|
||||
{
|
||||
for (int i = 0; i < TILE_TYPES; i++) {
|
||||
_tiles[i] = new VenisonTile(i+1, true, NORTH, i % 5, i / 5);
|
||||
_tiles[i] = new AtlantiTile(i+1, true, NORTH, i % 5, i / 5);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,12 +54,12 @@ public class TileGeometryTest
|
||||
{
|
||||
JFrame frame = new JFrame("Tile geometry test");
|
||||
|
||||
ResourceManager rmgr = new ResourceManager("rsrc", null, null);
|
||||
ResourceManager rmgr = new ResourceManager("rsrc");
|
||||
ImageManager imgr = new ImageManager(rmgr, frame);
|
||||
TileManager tmgr = new TileManager(imgr);
|
||||
|
||||
VenisonTile.setTileManager(tmgr);
|
||||
VenisonTile.piecenDebug = true;
|
||||
AtlantiTile.setManagers(imgr, tmgr);
|
||||
AtlantiTile.piecenDebug = true;
|
||||
PiecenUtil.init(tmgr);
|
||||
|
||||
// quit if we're closed
|
||||
@@ -67,5 +71,5 @@ public class TileGeometryTest
|
||||
frame.show();
|
||||
}
|
||||
|
||||
protected VenisonTile[] _tiles = new VenisonTile[TILE_TYPES];
|
||||
protected AtlantiTile[] _tiles = new AtlantiTile[TILE_TYPES];
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: AtlantiBoard.java,v 1.17 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiBoard.java,v 1.18 2002/12/12 05:51:53 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
@@ -18,27 +18,34 @@ import com.samskivert.util.CollectionUtil;
|
||||
|
||||
import com.threerings.presents.dobj.DSet;
|
||||
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.data.AtlantiCodes;
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.data.Piecen;
|
||||
import com.samskivert.atlanti.data.TileCodes;
|
||||
import com.samskivert.atlanti.util.TileUtil;
|
||||
|
||||
/**
|
||||
* Displays the tiles that make up the Venison board.
|
||||
* Displays the tiles that make up the board.
|
||||
*/
|
||||
public class VenisonBoard
|
||||
extends JPanel implements TileCodes, VenisonCodes
|
||||
public class AtlantiBoard extends JPanel
|
||||
implements TileCodes, AtlantiCodes
|
||||
{
|
||||
/**
|
||||
* Constructs a Venison board.
|
||||
* Constructs a board.
|
||||
*/
|
||||
public VenisonBoard ()
|
||||
public AtlantiBoard ()
|
||||
{
|
||||
// create mouse adapters that will let us know when interesting
|
||||
// mouse events happen
|
||||
addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked (MouseEvent evt) {
|
||||
VenisonBoard.this.mouseClicked(evt);
|
||||
AtlantiBoard.this.mouseClicked(evt);
|
||||
}
|
||||
});
|
||||
addMouseMotionListener(new MouseMotionAdapter() {
|
||||
public void mouseMoved (MouseEvent evt) {
|
||||
VenisonBoard.this.mouseMoved(evt);
|
||||
AtlantiBoard.this.mouseMoved(evt);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -56,7 +63,7 @@ public class VenisonBoard
|
||||
* are forgotten and the new tiles are initialized according to their
|
||||
* geometry to set up initial claim groups.
|
||||
*
|
||||
* @param tset the set of {@link VenisonTile} objects to be displayed
|
||||
* @param tset the set of {@link AtlantiTile} objects to be displayed
|
||||
* by this board.
|
||||
*/
|
||||
public void setTiles (DSet tset)
|
||||
@@ -94,7 +101,7 @@ public class VenisonBoard
|
||||
* Instructs the board to add the specified tile to the display. The
|
||||
* tile will have its claims inherited accordingly.
|
||||
*/
|
||||
public void addTile (VenisonTile tile)
|
||||
public void addTile (AtlantiTile tile)
|
||||
{
|
||||
Log.info("Adding tile to board " + tile + ".");
|
||||
|
||||
@@ -135,7 +142,7 @@ public class VenisonBoard
|
||||
// locate the tile associated with this piecen
|
||||
int tidx = _tiles.indexOf(piecen);
|
||||
if (tidx != -1) {
|
||||
VenisonTile tile = (VenisonTile)_tiles.get(tidx);
|
||||
AtlantiTile tile = (AtlantiTile)_tiles.get(tidx);
|
||||
// set the piecen on the tile (supplying our tile list so that
|
||||
// the necessary claim group adjustments can be made)
|
||||
tile.setPiecen(piecen, _tiles);
|
||||
@@ -157,7 +164,7 @@ public class VenisonBoard
|
||||
// locate the tile associated with this piecen key
|
||||
int tsize = _tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)_tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)_tiles.get(i);
|
||||
if (tile.getKey().equals(key)) {
|
||||
// clear the piecen out of the tile
|
||||
tile.clearPiecen();
|
||||
@@ -208,12 +215,12 @@ public class VenisonBoard
|
||||
* @param tile the new tile to be placed or null if no tile is to
|
||||
* currently be placed.
|
||||
*/
|
||||
public void setTileToBePlaced (VenisonTile tile)
|
||||
public void setTileToBePlaced (AtlantiTile tile)
|
||||
{
|
||||
Log.info("Setting tile to be placed [tile=" + tile + "].");
|
||||
|
||||
// make a copy of this tile so that we can play with it
|
||||
_placingTile = (VenisonTile)tile.clone();;
|
||||
_placingTile = (AtlantiTile)tile.clone();;
|
||||
|
||||
// update our internal state based on this new placing tile
|
||||
if (_placingTile != null) {
|
||||
@@ -224,7 +231,7 @@ public class VenisonBoard
|
||||
/**
|
||||
* Returns the last tile placed by the user.
|
||||
*/
|
||||
public VenisonTile getPlacedTile ()
|
||||
public AtlantiTile getPlacedTile ()
|
||||
{
|
||||
return _placedTile;
|
||||
}
|
||||
@@ -242,7 +249,7 @@ public class VenisonBoard
|
||||
/**
|
||||
* Causes the supplied tile to be repainted.
|
||||
*/
|
||||
public void repaintTile (VenisonTile tile)
|
||||
public void repaintTile (AtlantiTile tile)
|
||||
{
|
||||
int offx = _tx + (tile.x + _origX) * TILE_WIDTH;
|
||||
int offy = _ty + (tile.y + _origY) * TILE_HEIGHT;
|
||||
@@ -262,7 +269,7 @@ public class VenisonBoard
|
||||
// iterate over our tiles, painting each of them
|
||||
int tsize = _tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)_tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)_tiles.get(i);
|
||||
tile.paint(g2, _origX, _origY);
|
||||
}
|
||||
|
||||
@@ -551,7 +558,7 @@ public class VenisonBoard
|
||||
// figure out what our boundaries are
|
||||
int tsize = _tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)_tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)_tiles.get(i);
|
||||
if (tile.x > maxX) {
|
||||
maxX = tile.x;
|
||||
} else if (tile.x < minX) {
|
||||
@@ -594,24 +601,24 @@ public class VenisonBoard
|
||||
{
|
||||
JFrame frame = new JFrame("Board test");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
VenisonBoard board = new VenisonBoard();
|
||||
AtlantiBoard board = new AtlantiBoard();
|
||||
|
||||
TestDSet set = new TestDSet();
|
||||
set.addTile(new VenisonTile(CITY_TWO, true, WEST, 0, 0));
|
||||
set.addTile(new VenisonTile(CITY_TWO, false, WEST, -1, 1));
|
||||
set.addTile(new VenisonTile(CITY_ONE, false, SOUTH, -1, -1));
|
||||
VenisonTile zero = new VenisonTile(CURVED_ROAD, false, WEST, 0, 2);
|
||||
set.addTile(new AtlantiTile(CITY_TWO, true, WEST, 0, 0));
|
||||
set.addTile(new AtlantiTile(CITY_TWO, false, WEST, -1, 1));
|
||||
set.addTile(new AtlantiTile(CITY_ONE, false, SOUTH, -1, -1));
|
||||
AtlantiTile zero = new AtlantiTile(CURVED_ROAD, false, WEST, 0, 2);
|
||||
set.addTile(zero);
|
||||
VenisonTile one = new VenisonTile(TWO_CITY_TWO, false, NORTH, 0, 1);
|
||||
AtlantiTile one = new AtlantiTile(TWO_CITY_TWO, false, NORTH, 0, 1);
|
||||
set.addTile(one);
|
||||
set.addTile(new VenisonTile(CITY_THREE, false, WEST, 1, 1));
|
||||
set.addTile(new VenisonTile(CITY_THREE_ROAD, false, EAST, 1, 2));
|
||||
set.addTile(new VenisonTile(CITY_THREE, false, NORTH, -1, 0));
|
||||
VenisonTile two = new VenisonTile(CITY_ONE, false, EAST, -2, 0);
|
||||
set.addTile(new AtlantiTile(CITY_THREE, false, WEST, 1, 1));
|
||||
set.addTile(new AtlantiTile(CITY_THREE_ROAD, false, EAST, 1, 2));
|
||||
set.addTile(new AtlantiTile(CITY_THREE, false, NORTH, -1, 0));
|
||||
AtlantiTile two = new AtlantiTile(CITY_ONE, false, EAST, -2, 0);
|
||||
set.addTile(two);
|
||||
board.setTiles(set);
|
||||
|
||||
VenisonTile placing = new VenisonTile(CITY_TWO, false, NORTH, 0, 0);
|
||||
AtlantiTile placing = new AtlantiTile(CITY_TWO, false, NORTH, 0, 0);
|
||||
board.setTileToBePlaced(placing);
|
||||
|
||||
// set a feature group to test propagation
|
||||
@@ -640,12 +647,7 @@ public class VenisonBoard
|
||||
|
||||
protected static class TestDSet extends DSet
|
||||
{
|
||||
public TestDSet ()
|
||||
{
|
||||
super(VenisonTile.class);
|
||||
}
|
||||
|
||||
public void addTile (VenisonTile tile)
|
||||
public void addTile (AtlantiTile tile)
|
||||
{
|
||||
add(tile);
|
||||
}
|
||||
@@ -655,13 +657,13 @@ public class VenisonBoard
|
||||
protected ArrayList _tiles = new ArrayList();
|
||||
|
||||
/** The tile currently being placed by the user. */
|
||||
protected VenisonTile _placingTile;
|
||||
protected AtlantiTile _placingTile;
|
||||
|
||||
/** The last tile being placed by the user. */
|
||||
protected VenisonTile _placedTile;
|
||||
protected AtlantiTile _placedTile;
|
||||
|
||||
/** The last tile placed on the board via {@link #addTile}. */
|
||||
protected VenisonTile _lastPlacedTile;
|
||||
protected AtlantiTile _lastPlacedTile;
|
||||
|
||||
/** A flag indicating whether or not we're placing a piecen. */
|
||||
protected boolean _placingPiecen = false;
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
//
|
||||
// $Id: AtlantiConfigurator.java,v 1.1 2002/12/12 05:51:53 mdb Exp $
|
||||
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import com.samskivert.swing.SimpleSlider;
|
||||
import com.samskivert.swing.VGroupLayout;
|
||||
|
||||
import com.threerings.micasa.lobby.table.TableGameConfigurator;
|
||||
|
||||
import com.samskivert.atlanti.data.AtlantiConfig;
|
||||
|
||||
/**
|
||||
* Provides a user interface for configuring a game.
|
||||
*/
|
||||
public class AtlantiConfigurator extends TableGameConfigurator
|
||||
{
|
||||
// documentation inherited
|
||||
protected void createConfigInterface ()
|
||||
{
|
||||
super.createConfigInterface();
|
||||
|
||||
// _boardSize = new SimpleSlider("Board size:", 16, 48, 32);
|
||||
// add(_boardSize, VGroupLayout.FIXED);
|
||||
// _handSize = new SimpleSlider("Hand size:", 2, 5, 5);
|
||||
// add(_handSize, VGroupLayout.FIXED);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
protected void gotGameConfig ()
|
||||
{
|
||||
super.gotGameConfig();
|
||||
_vconfig = (AtlantiConfig)_config;
|
||||
|
||||
// // configure our elements
|
||||
// _boardSize.setValue(_vconfig.boardWidth);
|
||||
// _handSize.setValue(_vconfig.handSize);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
protected void flushGameConfig ()
|
||||
{
|
||||
super.flushGameConfig();
|
||||
|
||||
// // configure our elements
|
||||
// _vconfig.boardWidth = _boardSize.getValue();
|
||||
// _vconfig.boardHeight = _boardSize.getValue();
|
||||
// _vconfig.handSize = _handSize.getValue();
|
||||
}
|
||||
|
||||
protected AtlantiConfig _vconfig;
|
||||
// protected SimpleSlider _boardSize;
|
||||
// protected SimpleSlider _handSize;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import com.samskivert.util.ListUtil;
|
||||
@@ -25,19 +25,24 @@ import com.threerings.parlor.util.ParlorContext;
|
||||
|
||||
import com.threerings.micasa.util.MiCasaContext;
|
||||
|
||||
import com.threerings.venison.Log;
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.data.AtlantiCodes;
|
||||
import com.samskivert.atlanti.data.AtlantiObject;
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.data.Piecen;
|
||||
import com.samskivert.atlanti.util.TileUtil;
|
||||
|
||||
/**
|
||||
* The main coordinator of user interface activities on the client-side of
|
||||
* the Venison game.
|
||||
* the game.
|
||||
*/
|
||||
public class VenisonController extends GameController
|
||||
implements TurnGameController, VenisonCodes, SetListener
|
||||
public class AtlantiController extends GameController
|
||||
implements TurnGameController, AtlantiCodes, SetListener
|
||||
{
|
||||
/**
|
||||
* Creates our controller and prepares it for operation.
|
||||
*/
|
||||
public VenisonController ()
|
||||
public AtlantiController ()
|
||||
{
|
||||
addDelegate(_delegate = new TurnGameControllerDelegate(this));
|
||||
}
|
||||
@@ -54,7 +59,7 @@ public class VenisonController extends GameController
|
||||
// documentation inherited
|
||||
protected PlaceView createPlaceView ()
|
||||
{
|
||||
_panel = new VenisonPanel((MiCasaContext)_ctx, this);
|
||||
_panel = new AtlantiPanel((MiCasaContext)_ctx, this);
|
||||
return _panel;
|
||||
}
|
||||
|
||||
@@ -64,7 +69,7 @@ public class VenisonController extends GameController
|
||||
super.willEnterPlace(plobj);
|
||||
|
||||
// get a casted reference to our game object
|
||||
_venobj = (VenisonObject)plobj;
|
||||
_venobj = (AtlantiObject)plobj;
|
||||
|
||||
// find out what our index is and use that as our piecen color
|
||||
_selfIndex = ListUtil.indexOfEqual(_venobj.players, _self.username);
|
||||
@@ -99,10 +104,10 @@ public class VenisonController extends GameController
|
||||
super.attributeChanged(event);
|
||||
|
||||
// handle the setting of the board state
|
||||
if (event.getName().equals(VenisonObject.TILES)) {
|
||||
if (event.getName().equals(AtlantiObject.TILES)) {
|
||||
_panel.board.setTiles(_venobj.tiles);
|
||||
|
||||
} else if (event.getName().equals(VenisonObject.PIECENS)) {
|
||||
} else if (event.getName().equals(AtlantiObject.PIECENS)) {
|
||||
_panel.board.setPiecens(_venobj.piecens);
|
||||
}
|
||||
}
|
||||
@@ -111,12 +116,12 @@ public class VenisonController extends GameController
|
||||
public void entryAdded (EntryAddedEvent event)
|
||||
{
|
||||
// we care about additions to TILES and PIECENS
|
||||
if (event.getName().equals(VenisonObject.TILES)) {
|
||||
if (event.getName().equals(AtlantiObject.TILES)) {
|
||||
// a tile was added, add it to the board
|
||||
VenisonTile tile = (VenisonTile)event.getEntry();
|
||||
AtlantiTile tile = (AtlantiTile)event.getEntry();
|
||||
_panel.board.addTile(tile);
|
||||
|
||||
} else if (event.getName().equals(VenisonObject.PIECENS)) {
|
||||
} else if (event.getName().equals(AtlantiObject.PIECENS)) {
|
||||
// a piecen was added, place it on the board
|
||||
Piecen piecen = (Piecen)event.getEntry();
|
||||
_panel.board.placePiecen(piecen);
|
||||
@@ -131,7 +136,7 @@ public class VenisonController extends GameController
|
||||
// documentation inherited
|
||||
public void entryRemoved (EntryRemovedEvent event)
|
||||
{
|
||||
if (event.getName().equals(VenisonObject.PIECENS)) {
|
||||
if (event.getName().equals(AtlantiObject.PIECENS)) {
|
||||
// a piecen was removed, update the board
|
||||
_panel.board.clearPiecen(event.getKey());
|
||||
}
|
||||
@@ -141,7 +146,7 @@ public class VenisonController extends GameController
|
||||
public boolean handleAction (ActionEvent action)
|
||||
{
|
||||
if (action.getActionCommand().equals(TILE_PLACED)) {
|
||||
VenisonTile tile = _panel.board.getPlacedTile();
|
||||
AtlantiTile tile = _panel.board.getPlacedTile();
|
||||
|
||||
// the user placed the tile into a valid location. grab the
|
||||
// placed tile from the board and submit it to the server
|
||||
@@ -204,10 +209,10 @@ public class VenisonController extends GameController
|
||||
protected TurnGameControllerDelegate _delegate;
|
||||
|
||||
/** A reference to our game panel. */
|
||||
protected VenisonPanel _panel;
|
||||
protected AtlantiPanel _panel;
|
||||
|
||||
/** A reference to our game panel. */
|
||||
protected VenisonObject _venobj;
|
||||
protected AtlantiObject _venobj;
|
||||
|
||||
/** A reference to our body object. */
|
||||
protected BodyObject _self;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
@@ -27,22 +27,27 @@ import com.threerings.crowd.client.PlaceView;
|
||||
import com.threerings.micasa.client.ChatPanel;
|
||||
import com.threerings.micasa.util.MiCasaContext;
|
||||
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.data.AtlantiCodes;
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.util.PiecenUtil;
|
||||
|
||||
/**
|
||||
* The top-level user interface component for the Venison game display.
|
||||
* The top-level user interface component for the game display.
|
||||
*/
|
||||
public class VenisonPanel
|
||||
extends JPanel implements PlaceView, ControllerProvider, VenisonCodes
|
||||
public class AtlantiPanel extends JPanel
|
||||
implements PlaceView, ControllerProvider, AtlantiCodes
|
||||
{
|
||||
/** A reference to the board that is accessible to the controller. */
|
||||
public VenisonBoard board;
|
||||
public AtlantiBoard board;
|
||||
|
||||
/** A reference to our _noplace button. */
|
||||
public JButton noplace;
|
||||
|
||||
/**
|
||||
* Constructs a new Venison game display.
|
||||
* Constructs a new game display.
|
||||
*/
|
||||
public VenisonPanel (MiCasaContext ctx, VenisonController controller)
|
||||
public AtlantiPanel (MiCasaContext ctx, AtlantiController controller)
|
||||
{
|
||||
// give ourselves a wee bit of a border
|
||||
setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
||||
@@ -52,7 +57,7 @@ public class VenisonPanel
|
||||
setLayout(gl);
|
||||
|
||||
// create the board
|
||||
board = new VenisonBoard();
|
||||
board = new AtlantiBoard();
|
||||
|
||||
// create a scroll area to contain the board
|
||||
JScrollPane scrolly = new JScrollPane(board);
|
||||
@@ -101,23 +106,20 @@ public class VenisonPanel
|
||||
|
||||
// we'll need this later to provide it
|
||||
_controller = controller;
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void addNotify ()
|
||||
{
|
||||
super.addNotify();
|
||||
|
||||
// we can't create our image manager until we have access to our
|
||||
// containing frame
|
||||
addAncestorListener(new AncestorListener() {
|
||||
public void ancestorAdded (AncestorEvent event) {
|
||||
// create our image manager
|
||||
JRootPane rpane = getRootPane();
|
||||
ImageManager imgr = new ImageManager(_rmgr, rpane);
|
||||
TileManager tmgr = new TileManager(imgr);
|
||||
VenisonTile.setTileManager(tmgr);
|
||||
PiecenUtil.init(tmgr);
|
||||
}
|
||||
public void ancestorMoved (AncestorEvent event) {
|
||||
}
|
||||
public void ancestorRemoved (AncestorEvent event) {
|
||||
}
|
||||
});
|
||||
JRootPane rpane = getRootPane();
|
||||
ImageManager imgr = new ImageManager(_rmgr, rpane);
|
||||
TileManager tmgr = new TileManager(imgr);
|
||||
AtlantiTile.setManagers(imgr, tmgr);
|
||||
PiecenUtil.init(tmgr);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
@@ -140,15 +142,15 @@ public class VenisonPanel
|
||||
|
||||
/** A reference to our controller that we need to implement the {@link
|
||||
* ControllerProvider} interface. */
|
||||
protected VenisonController _controller;
|
||||
protected AtlantiController _controller;
|
||||
|
||||
// this stuff is all a bit of a hack right now. by all rights, the
|
||||
// venison app should set up the resource manager, because it knows
|
||||
// about that sort of stuff, and make it available via the venison
|
||||
// context and we may have some better place for the tile manager to
|
||||
// live. but it's late and i want to get this working, so fooey.
|
||||
// MiCasa game app should set up the resource manager, because it
|
||||
// knows about that sort of stuff, and make it available via the
|
||||
// MiCasa context and we may have some better place for the tile
|
||||
// manager to live. but it's late and i want to get this working, so
|
||||
// fooey.
|
||||
|
||||
/** Our resource manager. */
|
||||
protected static ResourceManager _rmgr =
|
||||
new ResourceManager("rsrc", null, null);
|
||||
protected static ResourceManager _rmgr = new ResourceManager("rsrc");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: PlayerInfoView.java,v 1.4 2002/05/21 04:45:09 mdb Exp $
|
||||
// $Id: PlayerInfoView.java,v 1.5 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.GridBagLayout;
|
||||
@@ -20,6 +20,11 @@ import com.threerings.presents.dobj.EntryRemovedEvent;
|
||||
import com.threerings.crowd.client.PlaceView;
|
||||
import com.threerings.crowd.data.PlaceObject;
|
||||
|
||||
import com.samskivert.atlanti.data.AtlantiCodes;
|
||||
import com.samskivert.atlanti.data.AtlantiObject;
|
||||
import com.samskivert.atlanti.data.Feature;
|
||||
import com.samskivert.atlanti.util.TileUtil;
|
||||
|
||||
/**
|
||||
* Displays each of the players in the game, their piece color and their
|
||||
* score.
|
||||
@@ -29,8 +34,8 @@ public class PlayerInfoView
|
||||
implements PlaceView, AttributeChangeListener, SetListener
|
||||
{
|
||||
/**
|
||||
* Constructs a new player info panel, ready for insertion into a
|
||||
* Venison game panel.
|
||||
* Constructs a new player info panel, ready for insertion into the
|
||||
* game panel.
|
||||
*/
|
||||
public PlayerInfoView ()
|
||||
{
|
||||
@@ -45,26 +50,25 @@ public class PlayerInfoView
|
||||
{
|
||||
// we want to grab a reference to the game object and add
|
||||
// ourselves as an attribute change listener
|
||||
_venobj = (VenisonObject)plobj;
|
||||
_venobj.addListener(this);
|
||||
_atlobj = (AtlantiObject)plobj;
|
||||
_atlobj.addListener(this);
|
||||
|
||||
// we need score and piecen labels arrays so that we can keep
|
||||
// track of per player information
|
||||
_scoreLabels = new JLabel[_venobj.players.length];
|
||||
_piecenLabels = new JLabel[_venobj.players.length];
|
||||
_scoreLabels = new JLabel[_atlobj.players.length];
|
||||
_piecenLabels = new JLabel[_atlobj.players.length];
|
||||
|
||||
// now that we're here, we can add an entry for every player
|
||||
for (int i = 0; i < _venobj.players.length; i++) {
|
||||
addPlayer(i, _venobj.players[i]);
|
||||
for (int i = 0; i < _atlobj.players.length; i++) {
|
||||
addPlayer(i, _atlobj.players[i]);
|
||||
}
|
||||
|
||||
// if we have scores, update them
|
||||
if (_venobj.scores.length == _venobj.players.length) {
|
||||
if (_atlobj.scores != null) {
|
||||
updateScores();
|
||||
// and the piecen count
|
||||
updatePiecenCount();
|
||||
}
|
||||
|
||||
// update the piecen count
|
||||
updatePiecenCount();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,15 +105,15 @@ public class PlayerInfoView
|
||||
public void didLeavePlace (PlaceObject plobj)
|
||||
{
|
||||
// remove our listening self
|
||||
_venobj.removeListener(this);
|
||||
_venobj = null;
|
||||
_atlobj.removeListener(this);
|
||||
_atlobj = null;
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void attributeChanged (AttributeChangedEvent event)
|
||||
{
|
||||
// we care about the scores (which change)
|
||||
if (event.getName().equals(VenisonObject.SCORES)) {
|
||||
if (event.getName().equals(AtlantiObject.SCORES)) {
|
||||
updateScores();
|
||||
}
|
||||
}
|
||||
@@ -136,8 +140,8 @@ public class PlayerInfoView
|
||||
*/
|
||||
protected void updateScores ()
|
||||
{
|
||||
for (int i = 0; i < _venobj.scores.length; i++) {
|
||||
_scoreLabels[i].setText(Integer.toString(_venobj.scores[i]));
|
||||
for (int i = 0; i < _atlobj.scores.length; i++) {
|
||||
_scoreLabels[i].setText(Integer.toString(_atlobj.scores[i]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,15 +150,15 @@ public class PlayerInfoView
|
||||
*/
|
||||
protected void updatePiecenCount ()
|
||||
{
|
||||
for (int i = 0; i < _venobj.scores.length; i++) {
|
||||
int pcount = TileUtil.countPiecens(_venobj.piecens, i);
|
||||
int pleft = VenisonCodes.PIECENS_PER_PLAYER - pcount;
|
||||
for (int i = 0; i < _atlobj.scores.length; i++) {
|
||||
int pcount = TileUtil.countPiecens(_atlobj.piecens, i);
|
||||
int pleft = AtlantiCodes.PIECENS_PER_PLAYER - pcount;
|
||||
_piecenLabels[i].setText("(" + pleft + ")");
|
||||
}
|
||||
}
|
||||
|
||||
/** A reference to the game object. */
|
||||
protected VenisonObject _venobj;
|
||||
protected AtlantiObject _atlobj;
|
||||
|
||||
/** References to our score label components. */
|
||||
protected JLabel[] _scoreLabels;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: TileLabel.java,v 1.1 2001/10/16 01:41:55 mdb Exp $
|
||||
// $Id: TileLabel.java,v 1.2 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
@@ -10,11 +10,14 @@ import java.awt.Graphics2D;
|
||||
|
||||
import javax.swing.JComponent;
|
||||
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.data.TileCodes;
|
||||
|
||||
/**
|
||||
* Displays a single tile in a Swing component.
|
||||
*/
|
||||
public class TileLabel
|
||||
extends JComponent implements TileCodes
|
||||
public class TileLabel extends JComponent
|
||||
implements TileCodes
|
||||
{
|
||||
/**
|
||||
* Configures the component to display the specified tile.
|
||||
@@ -22,7 +25,7 @@ public class TileLabel
|
||||
* @param tile a reference to the tile to display or null if no tile
|
||||
* should be displayed.
|
||||
*/
|
||||
public void setTile (VenisonTile tile)
|
||||
public void setTile (AtlantiTile tile)
|
||||
{
|
||||
_tile = tile;
|
||||
repaint();
|
||||
@@ -46,5 +49,5 @@ public class TileLabel
|
||||
}
|
||||
|
||||
/** The tile we are displaying. */
|
||||
protected VenisonTile _tile;
|
||||
protected AtlantiTile _tile;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: TurnIndicatorView.java,v 1.3 2002/01/29 23:47:03 mdb Exp $
|
||||
// $Id: TurnIndicatorView.java,v 1.4 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.client;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
@@ -14,12 +14,14 @@ import com.threerings.presents.dobj.AttributeChangedEvent;
|
||||
import com.threerings.crowd.data.PlaceObject;
|
||||
import com.threerings.crowd.client.PlaceView;
|
||||
|
||||
import com.samskivert.atlanti.data.AtlantiObject;
|
||||
|
||||
/**
|
||||
* Displays who the current turn holder is as well as the tile they are
|
||||
* currently placing.
|
||||
*/
|
||||
public class TurnIndicatorView
|
||||
extends JPanel implements PlaceView, AttributeChangeListener
|
||||
public class TurnIndicatorView extends JPanel
|
||||
implements PlaceView, AttributeChangeListener
|
||||
{
|
||||
/**
|
||||
* Creates a new turn indicator view which in turn creates its
|
||||
@@ -47,8 +49,8 @@ public class TurnIndicatorView
|
||||
{
|
||||
// we want to grab a reference to the game object and add
|
||||
// ourselves as an attribute change listener
|
||||
_venobj = (VenisonObject)plobj;
|
||||
_venobj.addListener(this);
|
||||
_atlobj = (AtlantiObject)plobj;
|
||||
_atlobj.addListener(this);
|
||||
|
||||
// update our displays
|
||||
updateCurrentTile();
|
||||
@@ -61,24 +63,24 @@ public class TurnIndicatorView
|
||||
public void didLeavePlace (PlaceObject plobj)
|
||||
{
|
||||
// remove our listening self
|
||||
_venobj.removeListener(this);
|
||||
_venobj = null;
|
||||
_atlobj.removeListener(this);
|
||||
_atlobj = null;
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void attributeChanged (AttributeChangedEvent event)
|
||||
{
|
||||
if (event.getName().equals(VenisonObject.CURRENT_TILE)) {
|
||||
if (event.getName().equals(AtlantiObject.CURRENT_TILE)) {
|
||||
// update the current tile display
|
||||
updateCurrentTile();
|
||||
|
||||
} else if (event.getName().equals(VenisonObject.STATE)) {
|
||||
} else if (event.getName().equals(AtlantiObject.STATE)) {
|
||||
// update the game state display
|
||||
updateGameState();
|
||||
// update the tiles remaining
|
||||
updateRemainingTiles();
|
||||
|
||||
} else if (event.getName().equals(VenisonObject.TURN_HOLDER)) {
|
||||
} else if (event.getName().equals(AtlantiObject.TURN_HOLDER)) {
|
||||
// update the turn holder
|
||||
updateTurnHolder();
|
||||
|
||||
@@ -89,16 +91,16 @@ public class TurnIndicatorView
|
||||
|
||||
protected void updateGameState ()
|
||||
{
|
||||
switch (_venobj.state) {
|
||||
case VenisonObject.AWAITING_PLAYERS:
|
||||
switch (_atlobj.state) {
|
||||
case AtlantiObject.AWAITING_PLAYERS:
|
||||
_whoLabel.setText("Awaiting players...");
|
||||
_tileLabel.setTile(null);
|
||||
break;
|
||||
case VenisonObject.GAME_OVER:
|
||||
case AtlantiObject.GAME_OVER:
|
||||
_whoLabel.setText("Game over.");
|
||||
_tileLabel.setTile(null);
|
||||
break;
|
||||
case VenisonObject.CANCELLED:
|
||||
case AtlantiObject.CANCELLED:
|
||||
_whoLabel.setText("Cancelled.");
|
||||
_tileLabel.setTile(null);
|
||||
break;
|
||||
@@ -107,20 +109,20 @@ public class TurnIndicatorView
|
||||
|
||||
protected void updateTurnHolder ()
|
||||
{
|
||||
if (_venobj.state == VenisonObject.IN_PLAY) {
|
||||
_whoLabel.setText(_venobj.turnHolder);
|
||||
if (_atlobj.state == AtlantiObject.IN_PLAY) {
|
||||
_whoLabel.setText(_atlobj.turnHolder);
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateCurrentTile ()
|
||||
{
|
||||
// display the tile to be placed
|
||||
_tileLabel.setTile(_venobj.currentTile);
|
||||
_tileLabel.setTile(_atlobj.currentTile);
|
||||
}
|
||||
|
||||
protected void updateRemainingTiles ()
|
||||
{
|
||||
_countLabel.setText("Tiles remaining: " + (71-_venobj.tiles.size()));
|
||||
_countLabel.setText("Tiles remaining: " + (71-_atlobj.tiles.size()));
|
||||
}
|
||||
|
||||
/** The label displaying whose turn it is. */
|
||||
@@ -133,5 +135,5 @@ public class TurnIndicatorView
|
||||
protected JLabel _countLabel;
|
||||
|
||||
/** A reference to the game object. */
|
||||
protected VenisonObject _venobj;
|
||||
protected AtlantiObject _atlobj;
|
||||
}
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
//
|
||||
// $Id: AtlantiCodes.java,v 1.5 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiCodes.java,v 1.6 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
/**
|
||||
* Constants used by the Venison game code.
|
||||
* Constants used by the Atlanti game code.
|
||||
*/
|
||||
public interface VenisonCodes
|
||||
public interface AtlantiCodes
|
||||
{
|
||||
/** The message bundle identifier for translation messages. */
|
||||
public static final String VENISON_MESSAGE_BUNDLE = "venison";
|
||||
public static final String ATLANTI_MESSAGE_BUNDLE = "atlanti";
|
||||
|
||||
/** The number of piecens provided to each player. */
|
||||
public static final int PIECENS_PER_PLAYER = 7;
|
||||
|
||||
/** The name of the command posted by the {@link VenisonBoard} when
|
||||
/** The name of the command posted by the {@link AtlantiBoard} when
|
||||
* the user places a tile into a valid position. */
|
||||
public static final String TILE_PLACED = "tile_placed";
|
||||
|
||||
/** The name of the command posted by the {@link VenisonBoard} when
|
||||
/** The name of the command posted by the {@link AtlantiBoard} when
|
||||
* the user places a piecen onto an unclaimed feature. */
|
||||
public static final String PIECEN_PLACED = "piecen_placed";
|
||||
|
||||
|
||||
@@ -1,31 +1,41 @@
|
||||
//
|
||||
// $Id: AtlantiConfig.java,v 1.3 2001/10/24 03:24:53 mdb Exp $
|
||||
// $Id: AtlantiConfig.java,v 1.4 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
|
||||
import com.threerings.parlor.game.GameConfig;
|
||||
import com.threerings.io.ObjectInputStream;
|
||||
import com.threerings.io.ObjectOutputStream;
|
||||
|
||||
import com.threerings.parlor.data.TableConfig;
|
||||
import com.threerings.parlor.game.GameConfig;
|
||||
|
||||
import com.samskivert.atlanti.client.AtlantiConfigurator;
|
||||
import com.samskivert.atlanti.client.AtlantiController;
|
||||
|
||||
/**
|
||||
* Describes the configuration parameters for a game of Venison.
|
||||
* Describes the configuration parameters for the game.
|
||||
*/
|
||||
public class VenisonConfig
|
||||
extends GameConfig implements TableConfig
|
||||
public class AtlantiConfig extends GameConfig
|
||||
implements TableConfig
|
||||
{
|
||||
// documentation inherited
|
||||
public Class getControllerClass ()
|
||||
{
|
||||
return VenisonController.class;
|
||||
return AtlantiController.class;
|
||||
}
|
||||
|
||||
// documentation inherited from interface
|
||||
public Class getConfiguratorClass ()
|
||||
{
|
||||
return AtlantiConfigurator.class;
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public String getManagerClassName ()
|
||||
{
|
||||
return "com.threerings.venison.VenisonManager";
|
||||
return "com.samskivert.atlanti.server.AtlantiManager";
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
@@ -53,18 +63,18 @@ public class VenisonConfig
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void writeTo (DataOutputStream out)
|
||||
public void writeObject (ObjectOutputStream out)
|
||||
throws IOException
|
||||
{
|
||||
super.writeTo(out);
|
||||
out.defaultWriteObject();
|
||||
out.writeInt(_desiredPlayers);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void readFrom (DataInputStream in)
|
||||
throws IOException
|
||||
public void readObject (ObjectInputStream in)
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
super.readFrom(in);
|
||||
in.defaultReadObject();
|
||||
_desiredPlayers = in.readInt();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
//
|
||||
// $Id: AtlantiObject.dobj,v 1.1 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiObject.dobj,v 1.2 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
import com.samskivert.util.StringUtil;
|
||||
import com.threerings.presents.dobj.DSet;
|
||||
|
||||
import com.threerings.parlor.game.GameObject;
|
||||
import com.threerings.parlor.turn.TurnGameObject;
|
||||
|
||||
/**
|
||||
* The distributed object used to maintain state for the Venison game.
|
||||
* The distributed object used to maintain state for the game.
|
||||
*/
|
||||
public class VenisonObject extends GameObject
|
||||
public class AtlantiObject extends GameObject
|
||||
implements TurnGameObject
|
||||
{
|
||||
/** The username of the current turn holder. */
|
||||
@@ -19,19 +19,25 @@ public class VenisonObject extends GameObject
|
||||
|
||||
/** A set containing all of the tiles that are in play in this
|
||||
* game. */
|
||||
public DSet tiles = new DSet(VenisonTile.class);
|
||||
public DSet tiles = new DSet();
|
||||
|
||||
/** The tile being placed by the current turn holder. This value is
|
||||
* only valid while it is someone's turn. */
|
||||
public VenisonTile currentTile = VenisonTile.STARTING_TILE;
|
||||
public AtlantiTile currentTile = AtlantiTile.STARTING_TILE;
|
||||
|
||||
/** A set containing all of the piecens that are placed on the
|
||||
* board. */
|
||||
public DSet piecens = new DSet(Piecen.class);
|
||||
public DSet piecens = new DSet();
|
||||
|
||||
/** The scores for each player. */
|
||||
public int[] scores;
|
||||
|
||||
// documentation inherited from interface
|
||||
public String[] getPlayers ()
|
||||
{
|
||||
return players;
|
||||
}
|
||||
|
||||
// documentation inherited from interface
|
||||
public String getTurnHolderFieldName ()
|
||||
{
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
//
|
||||
// $Id: AtlantiObject.java,v 1.8 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiObject.java,v 1.9 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
import com.samskivert.util.StringUtil;
|
||||
import com.threerings.presents.dobj.DSet;
|
||||
|
||||
import com.threerings.parlor.game.GameObject;
|
||||
import com.threerings.parlor.turn.TurnGameObject;
|
||||
|
||||
/**
|
||||
* The distributed object used to maintain state for the Venison game.
|
||||
* The distributed object used to maintain state for the game.
|
||||
*/
|
||||
public class VenisonObject extends GameObject
|
||||
public class AtlantiObject extends GameObject
|
||||
implements TurnGameObject
|
||||
{
|
||||
/** The field name of the <code>turnHolder</code> field. */
|
||||
@@ -34,19 +34,25 @@ public class VenisonObject extends GameObject
|
||||
|
||||
/** A set containing all of the tiles that are in play in this
|
||||
* game. */
|
||||
public DSet tiles = new DSet(VenisonTile.class);
|
||||
public DSet tiles = new DSet();
|
||||
|
||||
/** The tile being placed by the current turn holder. This value is
|
||||
* only valid while it is someone's turn. */
|
||||
public VenisonTile currentTile = VenisonTile.STARTING_TILE;
|
||||
public AtlantiTile currentTile = AtlantiTile.STARTING_TILE;
|
||||
|
||||
/** A set containing all of the piecens that are placed on the
|
||||
* board. */
|
||||
public DSet piecens = new DSet(Piecen.class);
|
||||
public DSet piecens = new DSet();
|
||||
|
||||
/** The scores for each player. */
|
||||
public int[] scores;
|
||||
|
||||
// documentation inherited from interface
|
||||
public String[] getPlayers ()
|
||||
{
|
||||
return players;
|
||||
}
|
||||
|
||||
// documentation inherited from interface
|
||||
public String getTurnHolderFieldName ()
|
||||
{
|
||||
@@ -127,7 +133,7 @@ public class VenisonObject extends GameObject
|
||||
* clients) will apply the value change when they received the
|
||||
* attribute changed notification.
|
||||
*/
|
||||
public void setCurrentTile (VenisonTile currentTile)
|
||||
public void setCurrentTile (AtlantiTile currentTile)
|
||||
{
|
||||
this.currentTile = currentTile;
|
||||
requestAttributeChange(CURRENT_TILE, currentTile);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: AtlantiTile.java,v 1.14 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiTile.java,v 1.15 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.Color;
|
||||
@@ -14,28 +14,38 @@ import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.Point2D;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
|
||||
import java.util.List;
|
||||
import com.samskivert.util.IntTuple;
|
||||
import com.samskivert.util.StringUtil;
|
||||
|
||||
import com.threerings.media.ImageManager;
|
||||
import com.threerings.media.tile.ImageProvider;
|
||||
import com.threerings.media.tile.Tile;
|
||||
import com.threerings.media.tile.TileManager;
|
||||
import com.threerings.media.tile.UniformTileSet;
|
||||
|
||||
import com.threerings.io.ObjectInputStream;
|
||||
import com.threerings.presents.dobj.DSet;
|
||||
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.util.FeatureUtil;
|
||||
import com.samskivert.atlanti.util.PiecenUtil;
|
||||
import com.samskivert.atlanti.util.TileUtil;
|
||||
|
||||
/**
|
||||
* Represents a single tile in play on the Venison game board.
|
||||
* Represents a single tile in play on the game board.
|
||||
*
|
||||
* <p><em>Note:</em> this should really be split into a pure data class
|
||||
* and an associated visualization class in the
|
||||
* <code>altanti.client</code> package.
|
||||
*/
|
||||
public class VenisonTile
|
||||
public class AtlantiTile
|
||||
implements DSet.Entry, TileCodes, Cloneable, Comparable
|
||||
{
|
||||
/** The starting tile. */
|
||||
public static final VenisonTile STARTING_TILE =
|
||||
new VenisonTile(CITY_ONE_ROAD_STRAIGHT, false, NORTH, 0, 0);
|
||||
public static final AtlantiTile STARTING_TILE =
|
||||
new AtlantiTile(CITY_ONE_ROAD_STRAIGHT, false, NORTH, 0, 0);
|
||||
|
||||
/** Activate this to render a piecen on every feature (useful for the
|
||||
* tile geometry test). */
|
||||
@@ -58,19 +68,19 @@ public class VenisonTile
|
||||
* connects to this tile, it will be represented here by a non-zero
|
||||
* claim group in the array slot that corresponds to the claimed
|
||||
* feature. */
|
||||
public int[] claims;
|
||||
public transient int[] claims;
|
||||
|
||||
/** A reference to our static feature descriptions. */
|
||||
public Feature[] features;
|
||||
public transient Feature[] features;
|
||||
|
||||
/** A reference to the piecen on this tile or null if no piecen has
|
||||
* been placed on this tile. */
|
||||
public Piecen piecen;
|
||||
public transient Piecen piecen;
|
||||
|
||||
/**
|
||||
* Constructs a tile with all of the supplied tile information.
|
||||
*/
|
||||
public VenisonTile (int type, boolean hasShield, int orientation,
|
||||
public AtlantiTile (int type, boolean hasShield, int orientation,
|
||||
int x, int y)
|
||||
{
|
||||
this.type = type;
|
||||
@@ -87,7 +97,7 @@ public class VenisonTile
|
||||
* Constructs a tile with the type information set, but in the default
|
||||
* <code>NORTH</code> orientation and with no position.
|
||||
*/
|
||||
public VenisonTile (int type, boolean hasShield)
|
||||
public AtlantiTile (int type, boolean hasShield)
|
||||
{
|
||||
this(type, hasShield, NORTH, 0, 0);
|
||||
}
|
||||
@@ -95,7 +105,7 @@ public class VenisonTile
|
||||
/**
|
||||
* Constructs a blank tile, suitable for unserialization.
|
||||
*/
|
||||
public VenisonTile ()
|
||||
public AtlantiTile ()
|
||||
{
|
||||
// nothing doing
|
||||
}
|
||||
@@ -348,11 +358,11 @@ public class VenisonTile
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a copy of this Venison tile object.
|
||||
* Returns a copy of this tile object.
|
||||
*/
|
||||
public Object clone ()
|
||||
{
|
||||
return new VenisonTile(type, hasShield, orientation, x, y);
|
||||
return new AtlantiTile(type, hasShield, orientation, x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -365,8 +375,8 @@ public class VenisonTile
|
||||
if (other == null) {
|
||||
return -1;
|
||||
|
||||
} else if (other instanceof VenisonTile) {
|
||||
VenisonTile tile = (VenisonTile)other;
|
||||
} else if (other instanceof AtlantiTile) {
|
||||
AtlantiTile tile = (AtlantiTile)other;
|
||||
return (tile.x == x) ? y - tile.y : x - tile.x;
|
||||
|
||||
} else if (other instanceof IntTuple) {
|
||||
@@ -390,32 +400,20 @@ public class VenisonTile
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public Object getKey ()
|
||||
public Comparable getKey ()
|
||||
{
|
||||
// our key is our coordinates conflated into one integer
|
||||
return new Integer((x + 128) * 256 + y + 128);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void writeTo (DataOutputStream out)
|
||||
throws IOException
|
||||
/**
|
||||
* After we've been unserialized we have to initialize some derived
|
||||
* fields.
|
||||
*/
|
||||
public void readObject (ObjectInputStream in)
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
out.writeInt(type);
|
||||
out.writeBoolean(hasShield);
|
||||
out.writeInt(orientation);
|
||||
out.writeInt(x);
|
||||
out.writeInt(y);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void readFrom (DataInputStream in)
|
||||
throws IOException
|
||||
{
|
||||
type = in.readInt();
|
||||
hasShield = in.readBoolean();
|
||||
orientation = in.readInt();
|
||||
x = in.readInt();
|
||||
y = in.readInt();
|
||||
in.defaultReadObject();
|
||||
initFeatures();
|
||||
}
|
||||
|
||||
@@ -454,8 +452,9 @@ public class VenisonTile
|
||||
* Someone needs to configure this so that we can display tiles on
|
||||
* screen.
|
||||
*/
|
||||
public static void setTileManager (TileManager tmgr)
|
||||
public static void setManagers (ImageManager imgr, TileManager tmgr)
|
||||
{
|
||||
_imgr = imgr;
|
||||
_tmgr = tmgr;
|
||||
}
|
||||
|
||||
@@ -466,12 +465,9 @@ public class VenisonTile
|
||||
{
|
||||
// load up the tile set if we haven't already
|
||||
if (_tset == null) {
|
||||
_tset = new UniformTileSet();
|
||||
_tset.setTileCount(TILE_TYPES);
|
||||
_tset.setWidth(TILE_WIDTH);
|
||||
_tset.setHeight(TILE_HEIGHT);
|
||||
_tset.setImagePath(TILES_IMG_PATH);
|
||||
_tset.setImageProvider(_tmgr);
|
||||
_tset = _tmgr.loadTileSet(TILES_IMG_PATH, TILE_TYPES,
|
||||
TILE_WIDTH, TILE_HEIGHT);
|
||||
_tset.setImageProvider(_imgprov);
|
||||
}
|
||||
|
||||
// fetch the tile
|
||||
@@ -485,12 +481,9 @@ public class VenisonTile
|
||||
{
|
||||
// load up the tile set if we haven't already
|
||||
if (_stset == null) {
|
||||
_stset = new UniformTileSet();
|
||||
_stset.setTileCount(1);
|
||||
_stset.setWidth(SHIELD_SIZE);
|
||||
_stset.setHeight(SHIELD_SIZE);
|
||||
_stset.setImagePath(SHIELD_IMG_PATH);
|
||||
_stset.setImageProvider(_tmgr);
|
||||
_stset = _tmgr.loadTileSet(SHIELD_IMG_PATH, 1,
|
||||
SHIELD_SIZE, SHIELD_SIZE);
|
||||
_stset.setImageProvider(_imgprov);
|
||||
}
|
||||
|
||||
// fetch the tile
|
||||
@@ -498,11 +491,25 @@ public class VenisonTile
|
||||
}
|
||||
|
||||
/** The tile image that we use to render this tile. */
|
||||
protected Image _tileImage;
|
||||
protected transient Image _tileImage;
|
||||
|
||||
/** Our image manager. */
|
||||
protected static ImageManager _imgr;
|
||||
|
||||
/** Our tile manager. */
|
||||
protected static TileManager _tmgr;
|
||||
|
||||
/** Used to load tile images. The default image provider (the tile
|
||||
* manager) optimizes the images for display on the screen which seems
|
||||
* to fuck Java's ability to apply rotational transforms to the image
|
||||
* prior to rendering. Yay! */
|
||||
protected static ImageProvider _imgprov = new ImageProvider() {
|
||||
public Image loadImage (String path)
|
||||
throws IOException {
|
||||
return _imgr.loadImage(path);
|
||||
}
|
||||
};
|
||||
|
||||
/** Our tile image tileset. */
|
||||
protected static UniformTileSet _tset;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: Feature.java,v 1.5 2001/12/18 13:14:58 mdb Exp $
|
||||
// $Id: Feature.java,v 1.6 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.Color;
|
||||
@@ -17,6 +17,10 @@ import java.awt.geom.RoundRectangle2D;
|
||||
|
||||
import com.samskivert.util.StringUtil;
|
||||
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.util.FeatureUtil;
|
||||
import com.samskivert.atlanti.util.TileUtil;
|
||||
|
||||
/**
|
||||
* Represents all of the necessary information for a particular feature of
|
||||
* a particular tile.
|
||||
@@ -24,6 +28,16 @@ import com.samskivert.util.StringUtil;
|
||||
public class Feature
|
||||
implements TileCodes
|
||||
{
|
||||
/** Maps piecen color codes to colors. */
|
||||
public static Color[] PIECEN_COLOR_MAP = {
|
||||
new Color(0x0246B7), // BLUE
|
||||
new Color(0x028A12), // GREEN
|
||||
new Color(0xF47A02), // ORANGE
|
||||
new Color(0xC20292), // MAGENTA
|
||||
new Color(0xB90202), // RED
|
||||
new Color(0xFECA11), // YELLOW
|
||||
};
|
||||
|
||||
/** The type of this feature. */
|
||||
public int type;
|
||||
|
||||
@@ -355,16 +369,6 @@ public class Feature
|
||||
Color.yellow.darker(), // CLOISTER
|
||||
};
|
||||
|
||||
/** Maps piecen color codes to colors. */
|
||||
protected static Color[] PIECEN_COLOR_MAP = {
|
||||
new Color(0x0246B7), // BLUE
|
||||
new Color(0x028A12), // GREEN
|
||||
new Color(0xF47A02), // ORANGE
|
||||
new Color(0xC20292), // MAGENTA
|
||||
new Color(0xB90202), // RED
|
||||
new Color(0xFECA11), // YELLOW
|
||||
};
|
||||
|
||||
/** For rendering piecens with alpha. */
|
||||
protected static final Composite ALPHA_PLACING =
|
||||
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.7f);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: Piecen.java,v 1.3 2002/05/21 04:45:09 mdb Exp $
|
||||
// $Id: Piecen.java,v 1.4 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.DataInputStream;
|
||||
@@ -75,7 +75,7 @@ public class Piecen
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public Object getKey ()
|
||||
public Comparable getKey ()
|
||||
{
|
||||
// our key is our coordinates conflated into one integer
|
||||
return new Integer((x + 128) * 256 + y + 128);
|
||||
@@ -108,8 +108,8 @@ public class Piecen
|
||||
if (other == null) {
|
||||
return false;
|
||||
|
||||
} else if (other instanceof VenisonTile) {
|
||||
VenisonTile tile = (VenisonTile)other;
|
||||
} else if (other instanceof AtlantiTile) {
|
||||
AtlantiTile tile = (AtlantiTile)other;
|
||||
return (tile.x == x) ? (y == tile.y) : false;
|
||||
|
||||
} else if (other instanceof Piecen) {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
//
|
||||
// $Id: TileCodes.java,v 1.9 2001/12/18 11:58:53 mdb Exp $
|
||||
// $Id: TileCodes.java,v 1.10 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.data;
|
||||
|
||||
/**
|
||||
* A repository for constants related to the tiles that are used in the
|
||||
* game of Venison.
|
||||
* game of Atlantissonne.
|
||||
*/
|
||||
public interface TileCodes
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: AtlantiManager.java,v 1.23 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiManager.java,v 1.24 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.server;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
@@ -22,31 +22,40 @@ import com.threerings.presents.dobj.MessageEvent;
|
||||
import com.threerings.presents.dobj.MessageEvent;
|
||||
|
||||
import com.threerings.crowd.chat.ChatProvider;
|
||||
import com.threerings.crowd.chat.SpeakProvider;
|
||||
import com.threerings.crowd.data.PlaceObject;
|
||||
|
||||
import com.threerings.crowd.chat.ChatMessageHandler;
|
||||
import com.threerings.crowd.chat.ChatService;
|
||||
import com.threerings.crowd.data.PlaceConfig;
|
||||
import com.threerings.crowd.server.PlaceManager;
|
||||
|
||||
import com.threerings.parlor.game.GameManager;
|
||||
import com.threerings.parlor.turn.TurnGameManager;
|
||||
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.data.AtlantiCodes;
|
||||
import com.samskivert.atlanti.data.AtlantiObject;
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.data.Feature;
|
||||
import com.samskivert.atlanti.data.Piecen;
|
||||
import com.samskivert.atlanti.data.TileCodes;
|
||||
import com.samskivert.atlanti.util.FeatureUtil;
|
||||
import com.samskivert.atlanti.util.TileUtil;
|
||||
|
||||
/**
|
||||
* The main coordinator of the Venison game on the server side.
|
||||
* The main coordinator of the Atlantissonne game on the server side.
|
||||
*/
|
||||
public class VenisonManager extends GameManager
|
||||
implements TurnGameManager, VenisonCodes, SetListener
|
||||
public class AtlantiManager extends GameManager
|
||||
implements TurnGameManager, AtlantiCodes, SetListener
|
||||
{
|
||||
public VenisonManager ()
|
||||
public AtlantiManager ()
|
||||
{
|
||||
addDelegate(_delegate = new VenisonManagerDelegate(this));
|
||||
addDelegate(_delegate = new AtlantiManagerDelegate(this));
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
protected Class getPlaceObjectClass ()
|
||||
{
|
||||
return VenisonObject.class;
|
||||
return AtlantiObject.class;
|
||||
}
|
||||
|
||||
public int getTilesInBox ()
|
||||
@@ -60,8 +69,6 @@ public class VenisonManager extends GameManager
|
||||
super.didInit();
|
||||
|
||||
// register our message handlers
|
||||
registerMessageHandler(
|
||||
ChatService.SPEAK_REQUEST, new ChatMessageHandler());
|
||||
registerMessageHandler(PLACE_TILE_REQUEST, new PlaceTileHandler());
|
||||
registerMessageHandler(
|
||||
PLACE_PIECEN_REQUEST, new PlacePiecenHandler());
|
||||
@@ -75,7 +82,7 @@ public class VenisonManager extends GameManager
|
||||
super.didStartup();
|
||||
|
||||
// grab our own casted game object reference
|
||||
_venobj = (VenisonObject)_gameobj;
|
||||
_atlobj = (AtlantiObject)_gameobj;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,18 +106,18 @@ public class VenisonManager extends GameManager
|
||||
_tiles.clear();
|
||||
|
||||
// create a claim group vector
|
||||
_claimGroupVector = new int[_players.length];
|
||||
_claimGroupVector = new int[getPlayerCount()];
|
||||
|
||||
// clear out the scores
|
||||
_venobj.setScores(new int[_players.length]);
|
||||
_atlobj.setScores(new int[getPlayerCount()]);
|
||||
|
||||
// clear out the tile and piecen set
|
||||
_venobj.setTiles(new DSet(VenisonTile.class));
|
||||
_venobj.setPiecens(new DSet(Piecen.class));
|
||||
_atlobj.setTiles(new DSet());
|
||||
_atlobj.setPiecens(new DSet());
|
||||
|
||||
// and add the starting tile
|
||||
VenisonTile start = TileUtil.getStartingTile();
|
||||
_venobj.addToTiles(start);
|
||||
AtlantiTile start = TileUtil.getStartingTile();
|
||||
_atlobj.addToTiles(start);
|
||||
_tiles.add(start);
|
||||
}
|
||||
|
||||
@@ -119,8 +126,14 @@ public class VenisonManager extends GameManager
|
||||
{
|
||||
// let the players know what the next tile is that should be
|
||||
// played
|
||||
VenisonTile tile = (VenisonTile)_tilesInBox.remove(0);
|
||||
_venobj.setCurrentTile(tile);
|
||||
AtlantiTile tile = (AtlantiTile)_tilesInBox.remove(0);
|
||||
_atlobj.setCurrentTile(tile);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public void turnDidStart ()
|
||||
{
|
||||
// nothing doing
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
@@ -142,9 +155,9 @@ public class VenisonManager extends GameManager
|
||||
// compute the final scores by iterating over each tile and
|
||||
// scoring its features
|
||||
Piecen[] piecens = getPiecens();
|
||||
Iterator iter = _venobj.tiles.entries();
|
||||
Iterator iter = _atlobj.tiles.entries();
|
||||
while (iter.hasNext()) {
|
||||
VenisonTile tile = (VenisonTile)iter.next();
|
||||
AtlantiTile tile = (AtlantiTile)iter.next();
|
||||
scoreFeatures(tile, piecens, true);
|
||||
}
|
||||
|
||||
@@ -152,7 +165,7 @@ public class VenisonManager extends GameManager
|
||||
scoreFarms();
|
||||
|
||||
// update the final scores
|
||||
_venobj.setScores(_venobj.scores);
|
||||
_atlobj.setScores(_atlobj.scores);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -163,8 +176,8 @@ public class VenisonManager extends GameManager
|
||||
protected Piecen[] getPiecens ()
|
||||
{
|
||||
// create a piecen array that we can manipulate while scoring
|
||||
Piecen[] piecens = new Piecen[_venobj.piecens.size()];
|
||||
Iterator iter = _venobj.piecens.entries();
|
||||
Piecen[] piecens = new Piecen[_atlobj.piecens.size()];
|
||||
Iterator iter = _atlobj.piecens.entries();
|
||||
for (int i = 0; iter.hasNext(); i++) {
|
||||
piecens[i] = (Piecen)iter.next();
|
||||
}
|
||||
@@ -182,7 +195,7 @@ public class VenisonManager extends GameManager
|
||||
* we don't remove piecens from the board as we score them.
|
||||
*/
|
||||
protected void scoreFeatures (
|
||||
VenisonTile tile, Piecen[] piecens, boolean finalTally)
|
||||
AtlantiTile tile, Piecen[] piecens, boolean finalTally)
|
||||
{
|
||||
// potentially score all features on the tile
|
||||
for (int i = 0; i < tile.features.length; i++) {
|
||||
@@ -222,27 +235,27 @@ public class VenisonManager extends GameManager
|
||||
StringBuffer names = new StringBuffer();
|
||||
for (int p = 0; p < cgv.length; p++) {
|
||||
// adjust the score
|
||||
_venobj.scores[p] += (score * cgv[p]);
|
||||
_atlobj.scores[p] += (score * cgv[p]);
|
||||
|
||||
// append the scorers name to the list
|
||||
if (cgv[p] > 0) {
|
||||
if (names.length() > 0) {
|
||||
names.append(", ");
|
||||
}
|
||||
names.append(_players[p]);
|
||||
names.append(getPlayerName(p));
|
||||
}
|
||||
}
|
||||
|
||||
String message = qual + " " + TileCodes.FEATURE_NAMES[f.type] +
|
||||
" scored " + score + " points for " + names + ".";
|
||||
ChatProvider.sendSystemMessage(
|
||||
_venobj.getOid(), VENISON_MESSAGE_BUNDLE, message);
|
||||
SpeakProvider.sendSystemSpeak(
|
||||
_atlobj, ATLANTI_MESSAGE_BUNDLE, message);
|
||||
|
||||
Log.info("New scores: " + StringUtil.toString(_venobj.scores));
|
||||
Log.info("New scores: " + StringUtil.toString(_atlobj.scores));
|
||||
|
||||
// broadcast the new scores if this isn't the final tally
|
||||
if (!finalTally) {
|
||||
_venobj.setScores(_venobj.scores);
|
||||
_atlobj.setScores(_atlobj.scores);
|
||||
}
|
||||
|
||||
// and free up the scored piecens
|
||||
@@ -259,7 +272,7 @@ public class VenisonManager extends GameManager
|
||||
for (int dx = -1; dx < 2; dx++) {
|
||||
for (int dy = -1; dy < 2; dy++) {
|
||||
// find our neighbor and make sure they exist
|
||||
VenisonTile neighbor =
|
||||
AtlantiTile neighbor =
|
||||
TileUtil.findTile(_tiles, tile.x + dx, tile.y + dy);
|
||||
if (neighbor == null) {
|
||||
continue;
|
||||
@@ -306,18 +319,18 @@ public class VenisonManager extends GameManager
|
||||
|
||||
// deliver a chat notification to tell the
|
||||
// players about the score
|
||||
String message = _players[p.owner] + " scored " +
|
||||
String message = getPlayerName(p.owner) + " scored " +
|
||||
score + " points for " + qual + " temple.";
|
||||
ChatProvider.sendSystemMessage(
|
||||
_venobj.getOid(), VENISON_MESSAGE_BUNDLE, message);
|
||||
SpeakProvider.sendSystemSpeak(
|
||||
_atlobj, ATLANTI_MESSAGE_BUNDLE, message);
|
||||
|
||||
// add the score to the owning player
|
||||
_venobj.scores[p.owner] += score;
|
||||
_atlobj.scores[p.owner] += score;
|
||||
|
||||
// only broadcast the updated scores if this isn't
|
||||
// the final tally
|
||||
if (!finalTally) {
|
||||
_venobj.setScores(_venobj.scores);
|
||||
_atlobj.setScores(_atlobj.scores);
|
||||
}
|
||||
|
||||
// and clear out the piecen (only removing it from
|
||||
@@ -335,7 +348,7 @@ public class VenisonManager extends GameManager
|
||||
protected void scoreFarms ()
|
||||
{
|
||||
HashIntMap cities = new HashIntMap();
|
||||
int[] cityScores = new int[_players.length];
|
||||
int[] cityScores = new int[getPlayerCount()];
|
||||
|
||||
// clear out the claims for incompleted cities and claim unclaimed
|
||||
// completed cities
|
||||
@@ -344,7 +357,7 @@ public class VenisonManager extends GameManager
|
||||
// do the big process-ola
|
||||
int tsize = _tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)_tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)_tiles.get(i);
|
||||
|
||||
// iterate over all of the city features in this tile
|
||||
for (int f = 0; f < tile.features.length; f++) {
|
||||
@@ -410,10 +423,10 @@ public class VenisonManager extends GameManager
|
||||
while (iter.hasNext()) {
|
||||
int cityClaim = ((Integer)iter.next()).intValue();
|
||||
int[] farmClaims = (int[])cities.get(cityClaim);
|
||||
int[] pcount = new int[_players.length];
|
||||
int[] pcount = new int[getPlayerCount()];
|
||||
int max = 0;
|
||||
|
||||
Iterator piter = _venobj.piecens.entries();
|
||||
Iterator piter = _atlobj.piecens.entries();
|
||||
while (piter.hasNext()) {
|
||||
Piecen p = (Piecen)piter.next();
|
||||
// see if the piecen is on any of the farms
|
||||
@@ -442,7 +455,7 @@ public class VenisonManager extends GameManager
|
||||
for (int i = 0; i < pcount.length; i++) {
|
||||
if (pcount[i] == max) {
|
||||
Log.info("Scoring city for player [cgroup=" + cityClaim +
|
||||
", player=" + _players[i] +
|
||||
", player=" + getPlayerName(i) +
|
||||
", pcount=" + pcount[i] + "].");
|
||||
cityScores[i] += 4;
|
||||
}
|
||||
@@ -451,13 +464,13 @@ public class VenisonManager extends GameManager
|
||||
|
||||
// now report the scoring and transfer the counts to the score
|
||||
// array
|
||||
for (int i = 0; i < _players.length; i++) {
|
||||
for (int i = 0; i < getPlayerCount(); i++) {
|
||||
if (cityScores[i] > 0) {
|
||||
_venobj.scores[i] += cityScores[i];
|
||||
String message = _players[i] + " scores " + cityScores[i] +
|
||||
" points for fisheries.";
|
||||
ChatProvider.sendSystemMessage(
|
||||
_venobj.getOid(), VENISON_MESSAGE_BUNDLE, message);
|
||||
_atlobj.scores[i] += cityScores[i];
|
||||
String message = getPlayerName(i) + " scores " +
|
||||
cityScores[i] + " points for fisheries.";
|
||||
SpeakProvider.sendSystemSpeak(
|
||||
_atlobj, ATLANTI_MESSAGE_BUNDLE, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -524,7 +537,7 @@ public class VenisonManager extends GameManager
|
||||
|
||||
// if this isn't the final tally, we also clear 'em from the board
|
||||
if (!finalTally) {
|
||||
Iterator iter = _venobj.piecens.entries();
|
||||
Iterator iter = _atlobj.piecens.entries();
|
||||
while (iter.hasNext()) {
|
||||
Piecen p = (Piecen)iter.next();
|
||||
if (p.claimGroup == claimGroup) {
|
||||
@@ -550,14 +563,14 @@ public class VenisonManager extends GameManager
|
||||
Log.warning("Requested to remove piecen that is not " +
|
||||
"associated with any tile [piecen=" + piecen + "].");
|
||||
} else {
|
||||
VenisonTile tile = (VenisonTile)_tiles.get(tidx);
|
||||
AtlantiTile tile = (AtlantiTile)_tiles.get(tidx);
|
||||
// and clear the piecen
|
||||
tile.clearPiecen();
|
||||
}
|
||||
|
||||
// also remove from the piecens dset if requested
|
||||
if (removeFromPiecens) {
|
||||
_venobj.removeFromPiecens(piecen.getKey());
|
||||
_atlobj.removeFromPiecens(piecen.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,11 +582,11 @@ public class VenisonManager extends GameManager
|
||||
// before scoring so that the players can see the piecen pop up on
|
||||
// their screen and then disappear with a scoring notice rather
|
||||
// than never show up at all; plus it simplifies our code
|
||||
if (event.getName().equals(VenisonObject.PIECENS)) {
|
||||
if (event.getName().equals(AtlantiObject.PIECENS)) {
|
||||
Piecen piecen = (Piecen)event.getEntry();
|
||||
|
||||
// make sure this is a valid placement
|
||||
VenisonTile tile = (VenisonTile)_venobj.tiles.get(piecen.getKey());
|
||||
AtlantiTile tile = (AtlantiTile)_atlobj.tiles.get(piecen.getKey());
|
||||
if (tile == null) {
|
||||
Log.warning("Can't find tile for piecen scoring " +
|
||||
piecen + ".");
|
||||
@@ -604,14 +617,14 @@ public class VenisonManager extends GameManager
|
||||
*/
|
||||
protected void handlePlaceTileRequest (MessageEvent event)
|
||||
{
|
||||
VenisonTile tile = (VenisonTile)event.getArgs()[0];
|
||||
AtlantiTile tile = (AtlantiTile)event.getArgs()[0];
|
||||
int pidx = _delegate.getTurnHolderIndex();
|
||||
|
||||
// make sure it's this player's turn
|
||||
if (_playerOids[pidx] != event.getSourceOid()) {
|
||||
Log.warning("Requested to place tile by non-turn holder " +
|
||||
"[event=" + event +
|
||||
", turnHolder=" + _venobj.turnHolder + "].");
|
||||
", turnHolder=" + _atlobj.turnHolder + "].");
|
||||
|
||||
// make sure this is a valid placement
|
||||
} else if (TileUtil.isValidPlacement(_tiles, tile)) {
|
||||
@@ -623,7 +636,7 @@ public class VenisonManager extends GameManager
|
||||
TileUtil.inheritClaims(_tiles, tile);
|
||||
|
||||
// add the tile to the tiles set
|
||||
_venobj.addToTiles(tile);
|
||||
_atlobj.addToTiles(tile);
|
||||
|
||||
// placing a piece may have completed road or city
|
||||
// features. if it did, we score them now
|
||||
@@ -634,7 +647,7 @@ public class VenisonManager extends GameManager
|
||||
// if the player has no free piecens or if there are no
|
||||
// unclaimed features on this tile, we end their turn
|
||||
// straight away
|
||||
int pcount = TileUtil.countPiecens(_venobj.piecens, pidx);
|
||||
int pcount = TileUtil.countPiecens(_atlobj.piecens, pidx);
|
||||
if (pcount >= PIECENS_PER_PLAYER ||
|
||||
!tile.hasUnclaimedFeature()) {
|
||||
_delegate.endTurn();
|
||||
@@ -651,15 +664,15 @@ public class VenisonManager extends GameManager
|
||||
protected void handlePlacePiecenRequest (MessageEvent event)
|
||||
{
|
||||
Piecen piecen = (Piecen)event.getArgs()[0];
|
||||
VenisonTile tile = (VenisonTile)_venobj.tiles.get(piecen.getKey());
|
||||
AtlantiTile tile = (AtlantiTile)_atlobj.tiles.get(piecen.getKey());
|
||||
int pidx = _delegate.getTurnHolderIndex();
|
||||
int pcount = TileUtil.countPiecens(_venobj.piecens, pidx);
|
||||
int pcount = TileUtil.countPiecens(_atlobj.piecens, pidx);
|
||||
|
||||
// make sure it's this player's turn
|
||||
if (_playerOids[pidx] != event.getSourceOid()) {
|
||||
Log.warning("Requested to place piecen by non-turn holder " +
|
||||
"[event=" + event +
|
||||
", turnHolder=" + _venobj.turnHolder + "].");
|
||||
", turnHolder=" + _atlobj.turnHolder + "].");
|
||||
|
||||
// do some checking before we place the piecen
|
||||
} else if (pcount >= PIECENS_PER_PLAYER) {
|
||||
@@ -683,7 +696,7 @@ public class VenisonManager extends GameManager
|
||||
// and add the piecen to the game object. when we receive
|
||||
// the piecen added event, we'll score it and then end the
|
||||
// turn
|
||||
_venobj.addToPiecens(piecen);
|
||||
_atlobj.addToPiecens(piecen);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -697,7 +710,7 @@ public class VenisonManager extends GameManager
|
||||
if (_playerOids[pidx] != event.getSourceOid()) {
|
||||
Log.warning("Requested to place nothing by non-turn holder " +
|
||||
"[event=" + event +
|
||||
", turnHolder=" + _venobj.turnHolder + "].");
|
||||
", turnHolder=" + _atlobj.turnHolder + "].");
|
||||
|
||||
} else {
|
||||
// player doesn't want to place anything, so we just end
|
||||
@@ -734,10 +747,10 @@ public class VenisonManager extends GameManager
|
||||
}
|
||||
|
||||
/** Our turn game delegate. */
|
||||
protected VenisonManagerDelegate _delegate;
|
||||
protected AtlantiManagerDelegate _delegate;
|
||||
|
||||
/** A casted reference to our Venison game object. */
|
||||
protected VenisonObject _venobj;
|
||||
/** A casted reference to our Atlanti game object. */
|
||||
protected AtlantiObject _atlobj;
|
||||
|
||||
/** The (shuffled) list of tiles remaining to be played in this
|
||||
* game. */
|
||||
|
||||
+10
-8
@@ -1,23 +1,25 @@
|
||||
//
|
||||
// $Id: AtlantiManagerDelegate.java,v 1.1 2002/05/21 04:45:10 mdb Exp $
|
||||
// $Id: AtlantiManagerDelegate.java,v 1.2 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.server;
|
||||
|
||||
import com.threerings.parlor.turn.TurnGameManagerDelegate;
|
||||
|
||||
import com.samskivert.atlanti.data.AtlantiCodes;
|
||||
|
||||
/**
|
||||
* Handles the turn-based gameplay.
|
||||
*/
|
||||
public class VenisonManagerDelegate extends TurnGameManagerDelegate
|
||||
implements VenisonCodes
|
||||
public class AtlantiManagerDelegate extends TurnGameManagerDelegate
|
||||
implements AtlantiCodes
|
||||
{
|
||||
/**
|
||||
* Constructs the delegate and prepares it for operation.
|
||||
*/
|
||||
public VenisonManagerDelegate (VenisonManager vmgr)
|
||||
public AtlantiManagerDelegate (AtlantiManager vmgr)
|
||||
{
|
||||
super(vmgr);
|
||||
_vmgr = vmgr;
|
||||
_amgr = vmgr;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -26,7 +28,7 @@ public class VenisonManagerDelegate extends TurnGameManagerDelegate
|
||||
protected void setNextTurnHolder ()
|
||||
{
|
||||
// if we have tiles left, we move to the next player as normal
|
||||
if (_vmgr.getTilesInBox() > 0) {
|
||||
if (_amgr.getTilesInBox() > 0) {
|
||||
super.setNextTurnHolder();
|
||||
} else {
|
||||
// if we don't, we ensure that a new turn isn't started by
|
||||
@@ -36,5 +38,5 @@ public class VenisonManagerDelegate extends TurnGameManagerDelegate
|
||||
}
|
||||
|
||||
/** The manager for whom we're delegating. */
|
||||
protected VenisonManager _vmgr;
|
||||
protected AtlantiManager _amgr;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
//
|
||||
// $Id: FeatureUtil.java,v 1.5 2001/12/18 11:58:53 mdb Exp $
|
||||
// $Id: FeatureUtil.java,v 1.6 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.util;
|
||||
|
||||
import java.awt.geom.Point2D;
|
||||
|
||||
import com.samskivert.atlanti.data.Feature;
|
||||
import com.samskivert.atlanti.data.TileCodes;
|
||||
|
||||
/**
|
||||
* Feature related constants and utility functions.
|
||||
*/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: PiecenUtil.java,v 1.2 2002/05/21 04:45:09 mdb Exp $
|
||||
// $Id: PiecenUtil.java,v 1.3 2002/12/12 05:51:54 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.util;
|
||||
|
||||
import java.awt.Image;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// $Id: TileUtil.java,v 1.16 2002/05/21 04:45:09 mdb Exp $
|
||||
// $Id: TileUtil.java,v 1.17 2002/12/12 05:51:55 mdb Exp $
|
||||
|
||||
package com.threerings.venison;
|
||||
package com.samskivert.atlanti.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -12,8 +12,14 @@ import com.samskivert.util.IntTuple;
|
||||
|
||||
import com.threerings.presents.dobj.DSet;
|
||||
|
||||
import com.samskivert.atlanti.Log;
|
||||
import com.samskivert.atlanti.data.AtlantiTile;
|
||||
import com.samskivert.atlanti.data.Feature;
|
||||
import com.samskivert.atlanti.data.Piecen;
|
||||
import com.samskivert.atlanti.data.TileCodes;
|
||||
|
||||
/**
|
||||
* Utility functions relating to the Venison tiles.
|
||||
* Utility functions relating to the Atlantissonne tiles.
|
||||
*/
|
||||
public class TileUtil implements TileCodes
|
||||
{
|
||||
@@ -21,15 +27,15 @@ public class TileUtil implements TileCodes
|
||||
* Returns an instance of the starting tile (properly cloned so that
|
||||
* it can be messed with by the server).
|
||||
*/
|
||||
public static VenisonTile getStartingTile ()
|
||||
public static AtlantiTile getStartingTile ()
|
||||
{
|
||||
return (VenisonTile)VenisonTile.STARTING_TILE.clone();
|
||||
return (AtlantiTile)AtlantiTile.STARTING_TILE.clone();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list containing the standard tile set for the Venison
|
||||
* game. The list is a clone, so it can be bent, folded and modified
|
||||
* by the caller.
|
||||
* Returns a list containing the standard tile set for the
|
||||
* Atlantissonne game. The list is a clone, so it can be bent, folded
|
||||
* and modified by the caller.
|
||||
*/
|
||||
public static List getStandardTileSet ()
|
||||
{
|
||||
@@ -38,7 +44,7 @@ public class TileUtil implements TileCodes
|
||||
List tiles = new ArrayList();
|
||||
int tsize = TILE_SET.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
tiles.add(((VenisonTile)TILE_SET.get(i)).clone());
|
||||
tiles.add(((AtlantiTile)TILE_SET.get(i)).clone());
|
||||
}
|
||||
return tiles;
|
||||
}
|
||||
@@ -60,7 +66,7 @@ public class TileUtil implements TileCodes
|
||||
* up with the direction constants specified in {@link TileCodes}.
|
||||
*/
|
||||
public static boolean[] computeValidOrients (
|
||||
List tiles, VenisonTile target)
|
||||
List tiles, AtlantiTile target)
|
||||
{
|
||||
// this contains a count of tiles that match up with the candidate
|
||||
// tile in each of its four orientations
|
||||
@@ -68,7 +74,7 @@ public class TileUtil implements TileCodes
|
||||
|
||||
int tsize = tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)tiles.get(i);
|
||||
|
||||
// figure out where this tile is in relation to the candidate
|
||||
int xdiff = tile.x - target.x;
|
||||
@@ -132,13 +138,13 @@ public class TileUtil implements TileCodes
|
||||
* @return true if the target tile is configured with a valid position
|
||||
* and orientation, false if it is not.
|
||||
*/
|
||||
public static boolean isValidPlacement (List tiles, VenisonTile target)
|
||||
public static boolean isValidPlacement (List tiles, AtlantiTile target)
|
||||
{
|
||||
boolean matchedAnEdge = false;
|
||||
|
||||
int tsize = tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)tiles.get(i);
|
||||
|
||||
// figure out where this tile is in relation to the candidate
|
||||
int xdiff = tile.x - target.x;
|
||||
@@ -203,7 +209,7 @@ public class TileUtil implements TileCodes
|
||||
* not include the tile whose features are being configured).
|
||||
* @param tile the tile whose features should be configured.
|
||||
*/
|
||||
public static void inheritClaims (List tiles, VenisonTile tile)
|
||||
public static void inheritClaims (List tiles, AtlantiTile tile)
|
||||
{
|
||||
List flist = new ArrayList();
|
||||
|
||||
@@ -263,7 +269,7 @@ public class TileUtil implements TileCodes
|
||||
* @param claimGroup the claim group value to set.
|
||||
*/
|
||||
public static void setClaimGroup (
|
||||
List tiles, VenisonTile tile, int featureIndex, int claimGroup)
|
||||
List tiles, AtlantiTile tile, int featureIndex, int claimGroup)
|
||||
{
|
||||
// load up this feature group
|
||||
List flist = new ArrayList();
|
||||
@@ -291,7 +297,7 @@ public class TileUtil implements TileCodes
|
||||
* score for a partial feature group.
|
||||
*/
|
||||
public static int computeFeatureScore (
|
||||
List tiles, VenisonTile tile, int featureIndex)
|
||||
List tiles, AtlantiTile tile, int featureIndex)
|
||||
{
|
||||
Feature feature = tile.features[featureIndex];
|
||||
|
||||
@@ -316,7 +322,7 @@ public class TileUtil implements TileCodes
|
||||
|
||||
// now iterate over the list, counting only unique tiles
|
||||
int score = 0;
|
||||
VenisonTile lastTile = null;
|
||||
AtlantiTile lastTile = null;
|
||||
int fsize = flist.size();
|
||||
for (int i = 0; i < fsize; i++) {
|
||||
TileFeature feat = (TileFeature)flist.get(i);
|
||||
@@ -347,9 +353,9 @@ public class TileUtil implements TileCodes
|
||||
|
||||
/**
|
||||
* A helper function for {@link
|
||||
* #computeFeatureScore(List,VenisonTile,int)}.
|
||||
* #computeFeatureScore(List,AtlantiTile,int)}.
|
||||
*/
|
||||
protected static int computeCloisterScore (List tiles, VenisonTile tile)
|
||||
protected static int computeCloisterScore (List tiles, AtlantiTile tile)
|
||||
{
|
||||
int score = 0;
|
||||
|
||||
@@ -381,7 +387,7 @@ public class TileUtil implements TileCodes
|
||||
// iterate over the tiles, marking every city completed or not
|
||||
int tsize = tiles.size();
|
||||
for (int i = 0; i < tsize; i++) {
|
||||
VenisonTile tile = (VenisonTile)tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)tiles.get(i);
|
||||
|
||||
// iterate over each feature on this tile
|
||||
for (int f = 0; f < tile.features.length; f++) {
|
||||
@@ -448,7 +454,7 @@ public class TileUtil implements TileCodes
|
||||
* features), false if it is not.
|
||||
*/
|
||||
protected static boolean enumerateGroup (
|
||||
List tiles, VenisonTile tile, int featureIndex, List group)
|
||||
List tiles, AtlantiTile tile, int featureIndex, List group)
|
||||
{
|
||||
// create a tilefeature for this feature
|
||||
TileFeature feat = new TileFeature(tile, featureIndex);
|
||||
@@ -477,7 +483,7 @@ public class TileUtil implements TileCodes
|
||||
}
|
||||
|
||||
// look up our neighbor
|
||||
VenisonTile neighbor = null;
|
||||
AtlantiTile neighbor = null;
|
||||
int dir = FeatureUtil.ADJACENCY_MAP[c+1];
|
||||
dir = (dir + tile.orientation) % 4;
|
||||
switch (dir) {
|
||||
@@ -530,11 +536,11 @@ public class TileUtil implements TileCodes
|
||||
* @return the tile with the requested coordinates or null if no tile
|
||||
* exists at those coordinates.
|
||||
*/
|
||||
protected static VenisonTile findTile (List tiles, int x, int y)
|
||||
public static AtlantiTile findTile (List tiles, int x, int y)
|
||||
{
|
||||
IntTuple coord = new IntTuple(x, y);
|
||||
int tidx = Collections.binarySearch(tiles, coord);
|
||||
return (tidx >= 0) ? (VenisonTile)tiles.get(tidx) : null;
|
||||
return (tidx >= 0) ? (AtlantiTile)tiles.get(tidx) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -551,7 +557,7 @@ public class TileUtil implements TileCodes
|
||||
{
|
||||
int count = 0;
|
||||
for (int i = 0; i < tiles.size(); i++) {
|
||||
VenisonTile tile = (VenisonTile)tiles.get(i);
|
||||
AtlantiTile tile = (AtlantiTile)tiles.get(i);
|
||||
if (tile.piecen != null &&
|
||||
tile.piecen.owner == playerIndex) {
|
||||
count++;
|
||||
@@ -604,7 +610,7 @@ public class TileUtil implements TileCodes
|
||||
}
|
||||
|
||||
/** Used to generate our standard tile set. */
|
||||
protected static void addTiles (int count, List list, VenisonTile tile)
|
||||
protected static void addTiles (int count, List list, AtlantiTile tile)
|
||||
{
|
||||
for (int i = 0; i < count; i++) {
|
||||
list.add(tile);
|
||||
@@ -615,13 +621,13 @@ public class TileUtil implements TileCodes
|
||||
protected static final class TileFeature implements Comparable
|
||||
{
|
||||
/** The tile that contains the feature. */
|
||||
public VenisonTile tile;
|
||||
public AtlantiTile tile;
|
||||
|
||||
/** The index of the feature in the tile. */
|
||||
public int featureIndex;
|
||||
|
||||
/** Constructs a new tile feature. */
|
||||
public TileFeature (VenisonTile tile, int featureIndex)
|
||||
public TileFeature (AtlantiTile tile, int featureIndex)
|
||||
{
|
||||
this.tile = tile;
|
||||
this.featureIndex = featureIndex;
|
||||
@@ -689,40 +695,40 @@ public class TileUtil implements TileCodes
|
||||
GRASS, GRASS, ROAD, ROAD, // CURVED_ROAD
|
||||
};
|
||||
|
||||
/** The standard tile set for a game of Venison. */
|
||||
/** The standard tile set for a game of Atlantissonne. */
|
||||
protected static ArrayList TILE_SET = new ArrayList();
|
||||
|
||||
// create our standard tile set
|
||||
static {
|
||||
addTiles(1, TILE_SET, new VenisonTile(CITY_FOUR, true));
|
||||
addTiles(1, TILE_SET, new AtlantiTile(CITY_FOUR, true));
|
||||
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_THREE, false));
|
||||
addTiles(1, TILE_SET, new VenisonTile(CITY_THREE, true));
|
||||
addTiles(1, TILE_SET, new VenisonTile(CITY_THREE_ROAD, false));
|
||||
addTiles(2, TILE_SET, new VenisonTile(CITY_THREE_ROAD, true));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_THREE, false));
|
||||
addTiles(1, TILE_SET, new AtlantiTile(CITY_THREE, true));
|
||||
addTiles(1, TILE_SET, new AtlantiTile(CITY_THREE_ROAD, false));
|
||||
addTiles(2, TILE_SET, new AtlantiTile(CITY_THREE_ROAD, true));
|
||||
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_TWO, false));
|
||||
addTiles(2, TILE_SET, new VenisonTile(CITY_TWO, true));
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_TWO_ROAD, false));
|
||||
addTiles(2, TILE_SET, new VenisonTile(CITY_TWO_ROAD, true));
|
||||
addTiles(1, TILE_SET, new VenisonTile(CITY_TWO_ACROSS, false));
|
||||
addTiles(2, TILE_SET, new VenisonTile(CITY_TWO_ACROSS, true));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_TWO, false));
|
||||
addTiles(2, TILE_SET, new AtlantiTile(CITY_TWO, true));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_TWO_ROAD, false));
|
||||
addTiles(2, TILE_SET, new AtlantiTile(CITY_TWO_ROAD, true));
|
||||
addTiles(1, TILE_SET, new AtlantiTile(CITY_TWO_ACROSS, false));
|
||||
addTiles(2, TILE_SET, new AtlantiTile(CITY_TWO_ACROSS, true));
|
||||
|
||||
addTiles(2, TILE_SET, new VenisonTile(TWO_CITY_TWO, false));
|
||||
addTiles(3, TILE_SET, new VenisonTile(TWO_CITY_TWO_ACROSS, false));
|
||||
addTiles(2, TILE_SET, new AtlantiTile(TWO_CITY_TWO, false));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(TWO_CITY_TWO_ACROSS, false));
|
||||
|
||||
addTiles(5, TILE_SET, new VenisonTile(CITY_ONE, false));
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_ONE_ROAD_RIGHT, false));
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_ONE_ROAD_LEFT, false));
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_ONE_ROAD_TEE, false));
|
||||
addTiles(3, TILE_SET, new VenisonTile(CITY_ONE_ROAD_STRAIGHT, false));
|
||||
addTiles(5, TILE_SET, new AtlantiTile(CITY_ONE, false));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_ONE_ROAD_RIGHT, false));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_ONE_ROAD_LEFT, false));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_ONE_ROAD_TEE, false));
|
||||
addTiles(3, TILE_SET, new AtlantiTile(CITY_ONE_ROAD_STRAIGHT, false));
|
||||
|
||||
addTiles(4, TILE_SET, new VenisonTile(CLOISTER_PLAIN, false));
|
||||
addTiles(2, TILE_SET, new VenisonTile(CLOISTER_ROAD, false));
|
||||
addTiles(4, TILE_SET, new AtlantiTile(CLOISTER_PLAIN, false));
|
||||
addTiles(2, TILE_SET, new AtlantiTile(CLOISTER_ROAD, false));
|
||||
|
||||
addTiles(1, TILE_SET, new VenisonTile(FOUR_WAY_ROAD, false));
|
||||
addTiles(4, TILE_SET, new VenisonTile(THREE_WAY_ROAD, false));
|
||||
addTiles(8, TILE_SET, new VenisonTile(STRAIGHT_ROAD, false));
|
||||
addTiles(9, TILE_SET, new VenisonTile(CURVED_ROAD, false));
|
||||
addTiles(1, TILE_SET, new AtlantiTile(FOUR_WAY_ROAD, false));
|
||||
addTiles(4, TILE_SET, new AtlantiTile(THREE_WAY_ROAD, false));
|
||||
addTiles(8, TILE_SET, new AtlantiTile(STRAIGHT_ROAD, false));
|
||||
addTiles(9, TILE_SET, new AtlantiTile(CURVED_ROAD, false));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user