Brought things into line with new streaming world order.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1607 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2002-07-23 05:54:53 +00:00
parent c3191b9170
commit eb0f92fcef
16 changed files with 149 additions and 348 deletions
@@ -1,10 +1,10 @@
// //
// $Id: OccupantInfo.java,v 1.7 2002/04/17 22:19:40 mdb Exp $ // $Id: OccupantInfo.java,v 1.8 2002/07/23 05:54:52 mdb Exp $
package com.threerings.crowd.data; package com.threerings.crowd.data;
import com.threerings.io.SimpleStreamableObject;
import com.threerings.presents.dobj.DSet; import com.threerings.presents.dobj.DSet;
import com.threerings.presents.io.SimpleStreamableObject;
/** /**
* The occupant info object contains all of the information about an * The occupant info object contains all of the information about an
@@ -23,11 +23,6 @@ import com.threerings.presents.io.SimpleStreamableObject;
* that if derived classes add non-primitive attributes, they are * that if derived classes add non-primitive attributes, they are
* responsible for adding the code to clone those attributes when a clone * responsible for adding the code to clone those attributes when a clone
* is requested. * is requested.
*
* <p> Note also that this class extends {@link SimpleStreamableObject}
* which means that public data members will automatically be serialized,
* but if any non-public or data members are added, code must be added to
* serialize them when this object is streamed.
*/ */
public class OccupantInfo extends SimpleStreamableObject public class OccupantInfo extends SimpleStreamableObject
implements DSet.Entry, Cloneable implements DSet.Entry, Cloneable
@@ -1,10 +1,10 @@
// //
// $Id: PlaceConfig.java,v 1.3 2002/03/26 22:57:52 mdb Exp $ // $Id: PlaceConfig.java,v 1.4 2002/07/23 05:54:52 mdb Exp $
package com.threerings.crowd.data; package com.threerings.crowd.data;
import com.threerings.presents.io.Streamable; import com.threerings.io.SimpleStreamableObject;
import com.threerings.presents.io.SimpleStreamableObject; import com.threerings.crowd.client.PlaceController;
/** /**
* The place config class encapsulates the configuration information for a * The place config class encapsulates the configuration information for a
@@ -18,30 +18,25 @@ import com.threerings.presents.io.SimpleStreamableObject;
* associated place config derived class that overrides {@link * associated place config derived class that overrides {@link
* #getControllerClass} and {@link #getManagerClassName}, returning the * #getControllerClass} and {@link #getManagerClassName}, returning the
* appropriate place controller and manager class for that place. * appropriate place controller and manager class for that place.
*
* <p> A place that has specific configuration needs would extend this
* class (or an appropriate subclass) adding it's configuration
* information and overriding {@link #writeTo} and {@link #readFrom} to
* provide code to serialize and unserialize the additional fields.
*/ */
public abstract class PlaceConfig extends SimpleStreamableObject public abstract class PlaceConfig extends SimpleStreamableObject
{ {
/** /**
* Returns the class that should be used to create a controller for * Returns the class that should be used to create a controller for
* this place. The controller class must derive from {@link * this place. The controller class must derive from {@link
* com.threerings.crowd.client.PlaceController}. * PlaceController}.
*/ */
public abstract Class getControllerClass (); public abstract Class getControllerClass ();
/** /**
* Returns the name of the class that should be used to create a * Returns the name of the class that should be used to create a
* manager for this place. The manager class must derive from {@link * manager for this place. The manager class must derive from {@link
* com.threerings.crowd.server.PlaceManager}. <em>Note:</em> * com.threerings.crowd.server.PlaceManager}. <em>Note:</em> this
* this method differs from {@link #getControllerClass} because we * method differs from {@link #getControllerClass} because we want to
* want to avoid compile time linkage of the place config object * avoid compile time linkage of the place config object (which is
* (which is used on the client) to server code. This allows a code * used on the client) to server code. This allows a code optimizer
* optimizer (DashO Pro, for example) to remove the server code from * (DashO Pro, for example) to remove the server code from the client,
* the client, knowing that it is never used. * knowing that it is never used.
*/ */
public abstract String getManagerClassName (); public abstract String getManagerClassName ();
} }
@@ -1,20 +1,15 @@
// //
// $Id: Lobby.java,v 1.3 2002/02/01 23:43:45 mdb Exp $ // $Id: Lobby.java,v 1.4 2002/07/23 05:54:52 mdb Exp $
package com.threerings.micasa.lobby; package com.threerings.micasa.lobby;
import java.io.IOException; import com.threerings.io.SimpleStreamableObject;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.threerings.presents.io.Marshaller;
import com.threerings.presents.io.Streamable;
/** /**
* A simple class for keeping track of information for each lobby in * A simple class for keeping track of information for each lobby in
* operation on the server. * operation on the server.
*/ */
public class Lobby implements Streamable public class Lobby extends SimpleStreamableObject
{ {
/** The object id of the lobby place object. */ /** The object id of the lobby place object. */
public int placeOid; public int placeOid;
@@ -43,24 +38,4 @@ public class Lobby implements Streamable
public Lobby () public Lobby ()
{ {
} }
// documentation inherited
public void writeTo (DataOutputStream out)
throws IOException
{
Marshaller.writeObject(out, this);
}
// documentation inherited
public void readFrom (DataInputStream in)
throws IOException
{
Marshaller.readObject(in, this);
}
public String toString ()
{
return "[oid=" + placeOid + ", ident=" + gameIdent +
", name=" + name + "]";
}
} }
@@ -1,11 +1,9 @@
// //
// $Id: LobbyConfig.java,v 1.5 2001/10/23 20:24:10 mdb Exp $ // $Id: LobbyConfig.java,v 1.6 2002/07/23 05:54:52 mdb Exp $
package com.threerings.micasa.lobby; package com.threerings.micasa.lobby;
import java.io.IOException; import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JLabel; import javax.swing.JLabel;
@@ -13,6 +11,9 @@ import javax.swing.JLabel;
import java.util.Properties; import java.util.Properties;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.crowd.data.PlaceConfig; import com.threerings.crowd.data.PlaceConfig;
import com.threerings.parlor.game.GameConfig; import com.threerings.parlor.game.GameConfig;
import com.threerings.micasa.util.MiCasaContext; import com.threerings.micasa.util.MiCasaContext;
@@ -64,19 +65,23 @@ public class LobbyConfig extends PlaceConfig
_gameConfigClass = getConfigValue(config, "game_config"); _gameConfigClass = getConfigValue(config, "game_config");
} }
// documentation inherited /**
public void writeTo (DataOutputStream out) * Writes our custom streamable fields.
*/
public void writeObject (ObjectOutputStream out)
throws IOException throws IOException
{ {
super.writeTo(out); out.defaultWriteObject();
out.writeUTF(_gameConfigClass); out.writeUTF(_gameConfigClass);
} }
// documentation inherited /**
public void readFrom (DataInputStream in) * Reads our custom streamable fields.
throws IOException */
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{ {
super.readFrom(in); in.defaultReadObject();
_gameConfigClass = in.readUTF(); _gameConfigClass = in.readUTF();
} }
@@ -84,7 +89,10 @@ public class LobbyConfig extends PlaceConfig
protected void toString (StringBuffer buf) protected void toString (StringBuffer buf)
{ {
super.toString(buf); super.toString(buf);
buf.append(", game_config=").append(_gameConfigClass); if (buf.length() > 1) {
buf.append(", ");
}
buf.append("game_config=").append(_gameConfigClass);
} }
/** Looks up a configuration property in the supplied properties /** Looks up a configuration property in the supplied properties
@@ -1,11 +1,11 @@
// //
// $Id: LobbyProvider.java,v 1.3 2001/10/11 04:13:33 mdb Exp $ // $Id: LobbyProvider.java,v 1.4 2002/07/23 05:54:52 mdb Exp $
package com.threerings.micasa.lobby; package com.threerings.micasa.lobby;
import com.threerings.presents.server.InvocationProvider;
import com.threerings.presents.util.StreamableArrayList;
import com.threerings.crowd.data.BodyObject; import com.threerings.crowd.data.BodyObject;
import com.threerings.presents.server.InvocationProvider;
import com.threerings.util.StreamableArrayList;
/** /**
* Handles server side of lobby-related invocation services. * Handles server side of lobby-related invocation services.
@@ -1,5 +1,5 @@
// //
// $Id: TableLobbyObject.dobj,v 1.2 2002/02/08 23:55:24 mdb Exp $ // $Id: TableLobbyObject.dobj,v 1.3 2002/07/23 05:54:52 mdb Exp $
package com.threerings.micasa.lobby.table; package com.threerings.micasa.lobby.table;
@@ -12,7 +12,7 @@ public class TableLobbyObject
implements com.threerings.parlor.data.TableLobbyObject implements com.threerings.parlor.data.TableLobbyObject
{ {
/** A set containing all of the tables being managed by this lobby. */ /** A set containing all of the tables being managed by this lobby. */
public DSet tableSet = new DSet(Table.class); public DSet tableSet = new DSet();
// documentation inherited // documentation inherited
public DSet getTables () public DSet getTables ()
@@ -1,5 +1,5 @@
// //
// $Id: TableLobbyObject.java,v 1.4 2002/03/18 23:21:26 mdb Exp $ // $Id: TableLobbyObject.java,v 1.5 2002/07/23 05:54:52 mdb Exp $
package com.threerings.micasa.lobby.table; package com.threerings.micasa.lobby.table;
@@ -15,7 +15,7 @@ public class TableLobbyObject
public static final String TABLE_SET = "tableSet"; public static final String TABLE_SET = "tableSet";
/** A set containing all of the tables being managed by this lobby. */ /** A set containing all of the tables being managed by this lobby. */
public DSet tableSet = new DSet(Table.class); public DSet tableSet = new DSet();
// documentation inherited // documentation inherited
public DSet getTables () public DSet getTables ()
@@ -1,17 +1,12 @@
// //
// $Id: MisoSceneModel.java,v 1.8 2002/05/17 19:06:23 ray Exp $ // $Id: MisoSceneModel.java,v 1.9 2002/07/23 05:54:52 mdb Exp $
package com.threerings.miso.scene; package com.threerings.miso.scene;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.threerings.io.SimpleStreamableObject;
import com.threerings.miso.Log; import com.threerings.miso.Log;
/** /**
@@ -19,7 +14,7 @@ import com.threerings.miso.Log;
* scene in the Miso system. From the scene model, one would create an * scene in the Miso system. From the scene model, one would create an
* instance of {@link DisplayMisoScene}. * instance of {@link DisplayMisoScene}.
*/ */
public class MisoSceneModel public class MisoSceneModel extends SimpleStreamableObject
implements Cloneable implements Cloneable
{ {
/** The width of the scene in tile units. */ /** The width of the scene in tile units. */
@@ -124,72 +119,6 @@ public class MisoSceneModel
} }
} }
// documentation inherited
public void writeTo (DataOutputStream out)
throws IOException
{
int otc = objectTileIds.length;
int btc = baseTileIds.length;
// write everything into a ByteBuffer, viewed as an IntBuffer and
// then write the bytes from those operations out to the output
// stream
ByteBuffer bbuf = ByteBuffer.allocate(4*(btc + otc + 5));
IntBuffer ibuf = bbuf.asIntBuffer();
// insert the dimensions
ibuf.put(width);
ibuf.put(height);
ibuf.put(vwidth);
ibuf.put(vheight);
ibuf.put(otc);
// insert the layer data
ibuf.put(baseTileIds);
ibuf.put(objectTileIds);
// now write the binary data out to the output stream
out.write(bbuf.array());
// next write out the object action strings
int acount = otc/3;
for (int i = 0; i < acount; i++) {
out.writeUTF((objectActions[i] == null) ? "" : objectActions[i]);
}
}
// documentation inherited
public void readFrom (DataInputStream in)
throws IOException
{
// we can read these directly because the byte order of the byte
// buffer we created to write out the data is big endian which is
// what the data input stream expects
width = in.readInt();
height = in.readInt();
vwidth = in.readInt();
vheight = in.readInt();
int otc = in.readInt();
// read in the base layer
allocateBaseTileArray();
for (int i = 0; i < baseTileIds.length; i++) {
baseTileIds[i] = in.readInt();
}
// read in the object layer
objectTileIds = new int[otc];
for (int i = 0; i < otc; i++) {
objectTileIds[i] = in.readInt();
}
// read in the object action strings
objectActions = new String[otc/3];
for (int i = 0; i < otc/3; i++) {
objectActions[i] = in.readUTF();
}
}
/** /**
* Convert an old school model to the new-style, baby. * Convert an old school model to the new-style, baby.
* TODO: Remove this method someday after we've converted all * TODO: Remove this method someday after we've converted all
@@ -226,18 +155,6 @@ public class MisoSceneModel
baseTileIds = new int[vwidth + vheight + ((vwidth * vheight) << 1)]; baseTileIds = new int[vwidth + vheight + ((vwidth * vheight) << 1)];
} }
/**
* Generates a string representation of this scene model.
*/
public String toString ()
{
return "[width=" + width + ", height=" + height +
", vwidth=" + vwidth + ", vheight=" + vheight +
", baseTileIds=" + StringUtil.toString(baseTileIds) +
", objectTileIds=" + StringUtil.toString(objectTileIds) +
", objectActions=" + StringUtil.toString(objectActions) + "]";
}
/** /**
* Creates a copy of this Miso scene model. * Creates a copy of this Miso scene model.
*/ */
+26 -30
View File
@@ -1,16 +1,16 @@
// //
// $Id: Table.java,v 1.9 2002/04/15 16:28:02 shaper Exp $ // $Id: Table.java,v 1.10 2002/07/23 05:54:52 mdb Exp $
package com.threerings.parlor.data; package com.threerings.parlor.data;
import java.io.IOException; import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.presents.dobj.DSet; import com.threerings.presents.dobj.DSet;
import com.threerings.presents.io.ValueMarshaller;
import com.threerings.parlor.data.ParlorCodes; import com.threerings.parlor.data.ParlorCodes;
import com.threerings.parlor.game.GameConfig; import com.threerings.parlor.game.GameConfig;
@@ -34,12 +34,12 @@ public class Table
public int gameOid = -1; public int gameOid = -1;
/** An array of the usernames of the occupants of this table (some /** An array of the usernames of the occupants of this table (some
* slots may not be filled. */ * slots may not be filled). */
public String[] occupants; public String[] occupants;
/** The body oids of the occupants of this table. (This is not /** The body oids of the occupants of this table. (This is not
* propagated to remote instances.) */ * propagated to remote instances.) */
public int[] bodyOids; public transient int[] bodyOids;
/** The game config for the game that is being matchmade. This config /** The game config for the game that is being matchmade. This config
* instance will also implement {@link TableConfig}. */ * instance will also implement {@link TableConfig}. */
@@ -242,30 +242,6 @@ public class Table
return tableId; return tableId;
} }
// documentation inherited
public void writeTo (DataOutputStream out)
throws IOException
{
out.writeInt(getTableId());
out.writeInt(lobbyOid);
out.writeInt(gameOid);
ValueMarshaller.writeTo(out, occupants);
ValueMarshaller.writeTo(out, config);
}
// documentation inherited
public void readFrom (DataInputStream in)
throws IOException
{
tableId = new Integer(in.readInt());
lobbyOid = in.readInt();
gameOid = in.readInt();
occupants = (String[])ValueMarshaller.readFrom(in);
// bodyOids = new int[occupants.length]; // not used
config = (GameConfig)ValueMarshaller.readFrom(in);
_tconfig = (TableConfig)config;
}
/** /**
* Returns true if this table is equal to the supplied object (which * Returns true if this table is equal to the supplied object (which
* must be a table with the same table id). * must be a table with the same table id).
@@ -279,6 +255,26 @@ public class Table
} }
} }
/**
* Writes our custom streamable fields.
*/
public void writeObject (ObjectOutputStream out)
throws IOException
{
out.defaultWriteObject();
out.writeObject(_tconfig);
}
/**
* Reads our custom streamable fields.
*/
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
in.defaultReadObject();
_tconfig = (TableConfig)in.readObject();
}
/** /**
* Generates a string representation of this table instance. * Generates a string representation of this table instance.
*/ */
@@ -1,5 +1,5 @@
// //
// $Id: GameConfig.java,v 1.9 2002/06/05 00:47:13 ray Exp $ // $Id: GameConfig.java,v 1.10 2002/07/23 05:54:52 mdb Exp $
package com.threerings.parlor.game; package com.threerings.parlor.game;
@@ -21,11 +21,6 @@ import com.threerings.crowd.data.PlaceConfig;
* the construction of the appropriate game config instance which is * the construction of the appropriate game config instance which is
* provided to the server as part of an invitation or via some other * provided to the server as part of an invitation or via some other
* matchmaking mechanism. * matchmaking mechanism.
*
* <p> A game that has specific configuration needs would extend this
* class (or an appropriate subclass) adding it's configuration
* information and overriding {@link #writeTo} and {@link #readFrom} to
* provide code to serialize and unserialize the additional fields.
*/ */
public abstract class GameConfig extends PlaceConfig public abstract class GameConfig extends PlaceConfig
{ {
@@ -1,5 +1,5 @@
// //
// $Id: TableManager.java,v 1.5 2002/04/15 16:28:02 shaper Exp $ // $Id: TableManager.java,v 1.6 2002/07/23 05:54:52 mdb Exp $
package com.threerings.parlor.server; package com.threerings.parlor.server;
@@ -102,8 +102,8 @@ public class TableManager
table.setOccupant(0, creator.username, creator.getOid()); table.setOccupant(0, creator.username, creator.getOid());
if (error != null) { if (error != null) {
Log.warning("Unable to add creator to position zero of " + Log.warning("Unable to add creator to position zero of " +
"table!? [table=" + table + "table!? [table=" + table + ", creator=" + creator +
", creator=" + creator + "]."); ", error=" + error + "].");
// bail out now and abort the table creation process // bail out now and abort the table creation process
throw new ServiceFailedException(error); throw new ServiceFailedException(error);
} }
@@ -0,0 +1,46 @@
//
// $Id: StreamableArrayList.java,v 1.1 2002/07/23 05:54:52 mdb Exp $
package com.threerings.util;
import java.io.IOException;
import java.util.ArrayList;
import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.io.Streamable;
/**
* An {@link ArrayList} extension that can be streamed. The contents of
* the list must also be of streamable types.
*
* @see Streamable
*/
public class StreamableArrayList extends ArrayList
implements Streamable
{
/**
* Writes our custom streamable fields.
*/
public void writeObject (ObjectOutputStream out)
throws IOException
{
int ecount = size();
out.writeInt(ecount);
for (int ii = 0; ii < ecount; ii++) {
out.writeObject(get(ii));
}
}
/**
* Reads our custom streamable fields.
*/
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
int ecount = in.readInt();
for (int ii = 0; ii < ecount; ii++) {
add(in.readObject());
}
}
}
@@ -1,15 +1,11 @@
// //
// $Id: SceneModel.java,v 1.7 2002/02/01 23:43:45 mdb Exp $ // $Id: SceneModel.java,v 1.8 2002/07/23 05:54:52 mdb Exp $
package com.threerings.whirled.data; package com.threerings.whirled.data;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.threerings.presents.io.Streamable;
import com.threerings.presents.io.StreamableUtil; import com.threerings.io.SimpleStreamableObject;
/** /**
* The scene model is the bare bones representation of the data for a * The scene model is the bare bones representation of the data for a
@@ -22,8 +18,8 @@ import com.threerings.presents.io.StreamableUtil;
* what is transmitted over the wire when communicating scenes from the * what is transmitted over the wire when communicating scenes from the
* server to the client. * server to the client.
*/ */
public class SceneModel public class SceneModel extends SimpleStreamableObject
implements Streamable, Cloneable implements Cloneable
{ {
/** This scene's unique identifier. */ /** This scene's unique identifier. */
public int sceneId; public int sceneId;
@@ -41,26 +37,6 @@ public class SceneModel
* is a scene that can be entered from this scene. */ * is a scene that can be entered from this scene. */
public int[] neighborIds; public int[] neighborIds;
// documentation inherited
public void writeTo (DataOutputStream out)
throws IOException
{
out.writeInt(sceneId);
out.writeUTF(sceneName);
out.writeInt(version);
StreamableUtil.writeInts(out, neighborIds);
}
// documentation inherited
public void readFrom (DataInputStream in)
throws IOException
{
sceneId = in.readInt();
sceneName = in.readUTF();
version = in.readInt();
neighborIds = StreamableUtil.readInts(in);
}
/** /**
* Generates a string representation of this scene model. * Generates a string representation of this scene model.
*/ */
@@ -1,12 +1,8 @@
// //
// $Id: SpotSceneModel.java,v 1.7 2002/05/02 19:34:51 mdb Exp $ // $Id: SpotSceneModel.java,v 1.8 2002/07/23 05:54:52 mdb Exp $
package com.threerings.whirled.spot.data; package com.threerings.whirled.spot.data;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.threerings.whirled.data.SceneModel; import com.threerings.whirled.data.SceneModel;
@@ -61,72 +57,6 @@ public class SpotSceneModel extends SceneModel
* values. */ * values. */
public int[] targetLocIds; public int[] targetLocIds;
// documentation inherited
public void writeTo (DataOutputStream out)
throws IOException
{
super.writeTo(out);
// write out our location info
int lcount = locationIds.length;
out.writeInt(lcount);
for (int i = 0; i < lcount; i++) {
out.writeInt(locationIds[i]);
out.writeInt(locationX[i]);
out.writeInt(locationY[i]);
out.writeInt(locationOrients[i]);
out.writeInt(locationClusters[i]);
}
// write out our default entrance id
out.writeInt(defaultEntranceId);
// write out our portal info; we need not serialize the portal
// count because our based class already did when writing out the
// neighborIds array
int pcount = portalIds.length;
for (int i = 0; i < pcount; i++) {
out.writeInt(portalIds[i]);
out.writeInt(targetLocIds[i]);
}
}
// documentation inherited
public void readFrom (DataInputStream in)
throws IOException
{
super.readFrom(in);
// read in our location info
int lcount = in.readInt();
locationIds = new int[lcount];
locationX = new int[lcount];
locationY = new int[lcount];
locationOrients = new int[lcount];
locationClusters = new int[lcount];
for (int i = 0; i < lcount;i++) {
locationIds[i] = in.readInt();
locationX[i] = in.readInt();
locationY[i] = in.readInt();
locationOrients[i] = in.readInt();
locationClusters[i] = in.readInt();
}
// read in our default entrance id
defaultEntranceId = in.readInt();
// and read in our portal info
int pcount = neighborIds.length;
portalIds = new int[pcount];
targetLocIds = new int[pcount];
for (int i = 0; i < pcount; i++) {
portalIds[i] = in.readInt();
targetLocIds[i] = in.readInt();
}
}
// documentation inherited // documentation inherited
public Object clone () public Object clone ()
throws CloneNotSupportedException throws CloneNotSupportedException
@@ -1,10 +1,8 @@
// //
// $Id: SceneSummary.java,v 1.3 2001/12/17 03:38:50 mdb Exp $ // $Id: SceneSummary.java,v 1.4 2002/07/23 05:54:53 mdb Exp $
package com.threerings.whirled.zone.data; package com.threerings.whirled.zone.data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
@@ -12,8 +10,9 @@ import com.samskivert.util.StringUtil;
import com.threerings.util.DirectionCodes; import com.threerings.util.DirectionCodes;
import com.threerings.util.DirectionUtil; import com.threerings.util.DirectionUtil;
import com.threerings.presents.io.Streamable; import com.threerings.io.ObjectInputStream;
import com.threerings.presents.io.StreamableUtil; import com.threerings.io.ObjectOutputStream;
import com.threerings.io.Streamable;
/** /**
* The scene summary class is used to provide info about the connected * The scene summary class is used to provide info about the connected
@@ -55,25 +54,23 @@ public class SceneSummary implements Streamable
_population = population; _population = population;
} }
// documentation inherited /**
public void writeTo (DataOutputStream out) * Writes our custom streamable fields.
*/
public void writeObject (ObjectOutputStream out)
throws IOException throws IOException
{ {
out.writeInt(sceneId); out.defaultWriteObject();
out.writeUTF(name); out.writeInt(getPopulation());
StreamableUtil.writeInts(out, neighbors);
StreamableUtil.writeInts(out, neighborDirs);
out.writeInt(_population);
} }
// documentation inherited /**
public void readFrom (DataInputStream in) * Reads our custom streamable fields.
throws IOException */
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{ {
sceneId = in.readInt(); in.defaultReadObject();
name = in.readUTF();
neighbors = StreamableUtil.readInts(in);
neighborDirs = StreamableUtil.readInts(in);
_population = in.readInt(); _population = in.readInt();
} }
@@ -84,7 +81,8 @@ public class SceneSummary implements Streamable
{ {
return "[sceneId=" + sceneId + ", name=" + name + return "[sceneId=" + sceneId + ", name=" + name +
", neighbors=" + StringUtil.toString(neighbors) + ", neighbors=" + StringUtil.toString(neighbors) +
", neighborDirs=" + DirectionUtil.toString(neighborDirs) + "]"; ", neighborDirs=" + DirectionUtil.toString(neighborDirs) +
", pop=" + _population + "]";
} }
/** The number of people currently occupying this scene. */ /** The number of people currently occupying this scene. */
@@ -1,21 +1,18 @@
// //
// $Id: ZoneSummary.java,v 1.3 2001/12/17 00:58:04 mdb Exp $ // $Id: ZoneSummary.java,v 1.4 2002/07/23 05:54:53 mdb Exp $
package com.threerings.whirled.zone.data; package com.threerings.whirled.zone.data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import com.samskivert.util.StringUtil; import com.samskivert.util.StringUtil;
import com.threerings.presents.io.Streamable;
import com.threerings.io.SimpleStreamableObject;
/** /**
* The zone summary contains information on a zone, including its name and * The zone summary contains information on a zone, including its name and
* summary info on all of the scenes in this zone (which can be used to * summary info on all of the scenes in this zone (which can be used to
* generate a map of the zone on the client). * generate a map of the zone on the client).
*/ */
public class ZoneSummary implements Streamable public class ZoneSummary extends SimpleStreamableObject
{ {
/** The zone's fully qualified unique identifier. */ /** The zone's fully qualified unique identifier. */
public int zoneId; public int zoneId;
@@ -26,33 +23,6 @@ public class ZoneSummary implements Streamable
/** The summary information for all of the scenes in the zone. */ /** The summary information for all of the scenes in the zone. */
public SceneSummary[] scenes; public SceneSummary[] scenes;
// documentation inherited
public void writeTo (DataOutputStream out)
throws IOException
{
out.writeInt(zoneId);
out.writeUTF(name);
int scount = scenes.length;
out.writeInt(scount);
for (int i = 0; i < scount; i++) {
scenes[i].writeTo(out);
}
}
// documentation inherited
public void readFrom (DataInputStream in)
throws IOException
{
zoneId = in.readInt();
name = in.readUTF();
int scount = in.readInt();
scenes = new SceneSummary[scount];
for (int i = 0; i < scount; i++) {
scenes[i] = new SceneSummary();
scenes[i].readFrom(in);
}
}
/** /**
* Generates a string representation of this instance. * Generates a string representation of this instance.
*/ */