20 Commits

Author SHA1 Message Date
Tim Claridge ffe2102207 Re-version to 1.7.2-android1 — never republish under an existing version
The streamer regen + narya 1.22 dep were mistakenly installed over the
already-published 1.7.1 coordinate (the 2026-07-06 poisoned-vilya incident,
bang-game task #76). New coordinates make the changed artifact distinct from
the clean 1.7.1 on GitHub Packages, matching the nenya 1.7.2-android1 scheme.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017SDW7vBNEjNxk8Qs6wTUYB
2026-07-09 21:30:05 +12:00
Claridtimo 86aa1cef69 Generated streamers for stats/parlor data + narya 1.22 (Epic A1 Phase 5)
vilya's wire-value classes streamed reflectively, which breaks on Android/ART
(nondeterministic Class.getDeclaredFields order): a Stat read on-device pulled
a Place object into Stat._type and desynced the game-object subscription.
Generated explicit declaration-ordered read/writeObject for stats/data (Stat
subclasses + StatModifier pass-through substitution), parlor/data (Table &
co.) and parlor/game/data via bang's genStreamableLibs task — byte-identical
on HotSpot, deterministic on ART.

narya 1.17 -> 1.22 (generated code references com.threerings.io.GenStreamUtil)
+ explicit jsr250 provided dep (@Generated no longer supplied transitively).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhfHCXYp2ctWi76Z91y9Ut
2026-07-06 22:55:46 +12:00
Michael Bayne d4a1665550 [maven-release-plugin] prepare release vilya-1.7.1 2025-10-21 13:22:31 -07:00
Michael Bayne 4b3598093c Fix serialization of Cluster.
We can no longer rely on the ability to reflectively access the private members
of java.awt.Rectangle. Modern JVMs are stricter about enforcing cross-module
private access. Prudes.
2025-08-23 18:17:52 -07:00
Michael Bayne b23d91cfd4 [maven-release-plugin] prepare for next development iteration 2025-07-04 15:12:48 -07:00
Michael Bayne 279206ce88 [maven-release-plugin] prepare release vilya-1.7 2025-07-04 15:12:46 -07:00
Michael Bayne 1f49dd6c40 Javadoc fixes. 2025-07-04 15:12:11 -07:00
Michael Bayne 44928f4084 Depend on shipped libraries. 2025-07-04 15:10:22 -07:00
Michael Bayne 865c06d916 Update to new Sonatype deployment bits.
Other plugin upgrades & modernizations.
2025-07-04 15:10:04 -07:00
Michael Bayne f6fd0d2cb5 Ignore Maven target directories. 2025-02-05 11:01:19 -08:00
Michael Bayne 702c2d697f Update dependencies, target Java 10. 2025-02-05 11:01:10 -08:00
Michael Bayne 8bbdabe5d6 Provide a method for calling playerReady.
The GameManager is set up to handle it, so let's not fuss too much about the
fact that we're using a dynamically typed mechanism to send a message from
client to server.
2025-02-03 13:46:00 -08:00
Michael Bayne 074ef440b8 Target JDK 1.6. 2018-03-27 14:22:05 -07:00
Michael Bayne 486d4c80b1 Move aslib module to profile. 2016-12-17 17:05:28 -08:00
Michael Bayne 5a6a960cd9 Inherit depends from nenyalib; added flexgroup repo. 2015-03-17 09:23:41 -07:00
Michael Bayne fe05edab42 Updated aslib build. 2015-03-17 09:08:13 -07:00
Michael Bayne a0e8a23b9d Cache Maven stuffs on Travis. 2015-03-17 08:54:38 -07:00
Michael Bayne 968fb80a7b Only build master. 2015-03-14 10:47:55 -07:00
Michael Bayne 84b4ef98b4 Wire up a Travis build. 2015-03-14 10:09:58 -07:00
Michael Bayne cbaaa514e1 [maven-release-plugin] prepare for next development iteration 2015-03-14 10:06:35 -07:00
27 changed files with 513 additions and 63 deletions
+1
View File
@@ -0,0 +1 @@
*/target/
+19
View File
@@ -0,0 +1,19 @@
sudo: false
language: java
jdk:
- openjdk7
- oraclejdk8
branches:
only:
- master
cache:
directories:
- '$HOME/.m2/repository'
script:
- mvn -B test
- rm -rf $HOME/.m2/repository/com/threerings/vilya*
+3 -29
View File
@@ -4,7 +4,7 @@
<parent>
<groupId>com.threerings</groupId>
<artifactId>vilya-parent</artifactId>
<version>1.6</version>
<version>1.7-SNAPSHOT</version>
</parent>
<artifactId>vilyalib</artifactId>
@@ -13,16 +13,8 @@
<repositories>
<repository>
<id>flexlib-repo</id>
<url>http://maven.ow2.org/maven2</url>
</repository>
<repository>
<id>ooo-ext-maven-repo</id>
<url>http://ooo-maven.googlecode.com/hg/repository</url>
</repository>
<repository>
<id>ooo-maven-repo</id>
<url>http://threerings.github.com/maven-repo</url>
<id>flex-mojos-repository</id>
<url>http://repository.sonatype.org/content/groups/flexgroup</url>
</repository>
</repositories>
@@ -31,24 +23,6 @@
</properties>
<dependencies>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>aspirin</artifactId>
<version>1.9</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>flexlib</groupId>
<artifactId>flexlib-bin</artifactId>
<version>2.4</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>as3isolib</groupId>
<artifactId>as3isolib-fp9</artifactId>
<version>r298</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>nenyalib</artifactId>
+16 -6
View File
@@ -4,7 +4,7 @@
<parent>
<groupId>com.threerings</groupId>
<artifactId>vilya-parent</artifactId>
<version>1.6</version>
<version>1.7.2-android1</version>
</parent>
<artifactId>vilya</artifactId>
@@ -16,24 +16,34 @@
<dependency>
<groupId>com.threerings</groupId>
<artifactId>ooo-util</artifactId>
<version>1.4.1</version>
<version>1.5</version>
</dependency>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>narya</artifactId>
<version>1.15</version>
<!-- 1.22: the Epic A1 Phase 5 generated streamers reference
com.threerings.io.GenStreamUtil (added in narya 1.21) -->
<version>1.22</version>
</dependency>
<dependency>
<!-- javax.annotation.Generated on the genservice-generated sources (SOURCE retention, so
compile-only); narya 1.17 supplied it transitively, 1.22 no longer does -->
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.threerings</groupId>
<artifactId>nenya</artifactId>
<version>1.6</version>
<version>1.7</version>
</dependency>
<!-- optional dependencies -->
<dependency>
<groupId>com.threerings</groupId>
<artifactId>nenya-tools</artifactId>
<version>1.6</version>
<version>1.7</version>
<optional>true</optional>
</dependency>
<dependency>
@@ -45,7 +55,7 @@
<dependency>
<groupId>com.samskivert</groupId>
<artifactId>depot</artifactId>
<version>1.7</version>
<version>1.8</version>
<optional>true</optional>
</dependency>
<dependency>
@@ -54,4 +54,26 @@ public class ChoiceParameter extends Parameter
{
return start;
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "ident", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "name", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "tip", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.ChoiceParameter.class, "choices", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.ChoiceParameter.class, "start", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "ident", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "name", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "tip", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.ChoiceParameter.class, "choices", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.ChoiceParameter.class, "start", this, out);
}
}
@@ -48,4 +48,28 @@ public class RangeParameter extends Parameter
{
return start;
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "ident", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "name", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "tip", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.RangeParameter.class, "minimum", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.RangeParameter.class, "maximum", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.RangeParameter.class, "start", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "ident", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "name", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "tip", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.RangeParameter.class, "minimum", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.RangeParameter.class, "maximum", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.RangeParameter.class, "start", this, out);
}
}
@@ -467,4 +467,30 @@ public class Table
/** On the server, the usernames that have been banned from this table. */
protected transient HashSet<Name> _bannedUsers;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "tableId", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "lobbyOid", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "gameOid", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "players", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "watchers", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "config", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Table.class, "tconfig", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "tableId", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "lobbyOid", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "gameOid", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "players", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "watchers", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "config", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Table.class, "tconfig", this, out);
}
}
@@ -43,4 +43,24 @@ public class TableConfig extends SimpleStreamableObject
/** Whether the table is "private". */
public boolean privateTable;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.TableConfig.class, "desiredPlayerCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.TableConfig.class, "minimumPlayerCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.TableConfig.class, "teamMemberIndices", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.TableConfig.class, "privateTable", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.TableConfig.class, "desiredPlayerCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.TableConfig.class, "minimumPlayerCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.TableConfig.class, "teamMemberIndices", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.TableConfig.class, "privateTable", this, out);
}
}
@@ -42,4 +42,24 @@ public class ToggleParameter extends Parameter
{
return start;
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "ident", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "name", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.Parameter.class, "tip", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.data.ToggleParameter.class, "start", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "ident", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "name", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.Parameter.class, "tip", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.data.ToggleParameter.class, "start", this, out);
}
}
@@ -47,4 +47,20 @@ public class GameAI extends SimpleStreamableObject
this.personality = personality;
this.skill = skill;
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameAI.class, "personality", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameAI.class, "skill", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameAI.class, "personality", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameAI.class, "skill", this, out);
}
}
@@ -238,6 +238,11 @@ public class GameObject extends PlaceObject
return -1;
}
@SuppressWarnings("deprecation")
public void sendPlayerReady () {
manager.invoke("playerReady");
}
/**
* Used by {@link #isActivePlayer} to determine if the supplied status is associated with an
* active player (one that has not resigned from the game and/or left the game room).
@@ -429,4 +434,32 @@ public class GameObject extends PlaceObject
this.playerStatus[index] = value;
}
// AUTO-GENERATED: METHODS END
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
super.readObject(ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "state", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "isRated", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "isPrivate", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "players", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "winners", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "sessionId", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.parlor.game.data.GameObject.class, "playerStatus", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
super.writeObject(out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "state", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "isRated", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "isPrivate", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "players", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "winners", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "sessionId", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.parlor.game.data.GameObject.class, "playerStatus", this, out);
}
}
@@ -59,4 +59,26 @@ public class ByteByteStringMapStat extends StringMapStat
{
return Byte.MAX_VALUE;
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.StringMapStat.class, "_keys", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.StringMapStat.class, "_values", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.StringMapStat.class, "_keys", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.StringMapStat.class, "_values", this, out);
}
}
@@ -50,4 +50,24 @@ public class ByteStringSetStat extends StringSetStat
_values[ii] = aux.getCodeString(_type, in.readByte());
}
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.StringSetStat.class, "_values", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.StringSetStat.class, "_values", this, out);
}
}
@@ -90,4 +90,24 @@ public class IntArrayStat extends Stat
/** Contains the integer list value of this statistic. */
protected int[] _value = new int[0];
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntArrayStat.class, "_value", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntArrayStat.class, "_value", this, out);
}
}
@@ -118,4 +118,26 @@ public class IntSetStat extends SetStat<Integer>
protected StreamableArrayIntSet _intSet = new StreamableArrayIntSet();
protected static final int MAX_MAX_SIZE = 255;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntSetStat.class, "_maxSize", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntSetStat.class, "_intSet", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntSetStat.class, "_maxSize", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntSetStat.class, "_intSet", this, out);
}
}
@@ -44,4 +44,20 @@ public class IntSetStatAdder extends StatModifier<IntSetStat>
}
protected int _value;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
super.readObject(ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntSetStatAdder.class, "_value", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
super.writeObject(out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntSetStatAdder.class, "_value", this, out);
}
}
@@ -86,4 +86,24 @@ public class IntStat extends Stat
/** Contains the integer value of this statistic. */
protected int _value;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntStat.class, "_value", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntStat.class, "_value", this, out);
}
}
@@ -44,4 +44,20 @@ public class IntStatIncrementer extends StatModifier<IntStat>
}
protected int _delta;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
super.readObject(ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntStatIncrementer.class, "_delta", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
super.writeObject(out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntStatIncrementer.class, "_delta", this, out);
}
}
@@ -47,4 +47,20 @@ public class IntStatMinimumer extends StatModifier<IntStat>
}
protected int _minimum;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
super.readObject(ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.IntStatMinimumer.class, "_minimum", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
super.writeObject(out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.IntStatMinimumer.class, "_minimum", this, out);
}
}
@@ -50,4 +50,24 @@ public class IntStringSetStat extends StringSetStat
_values[ii] = aux.getCodeString(_type, in.readInt());
}
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.StringSetStat.class, "_values", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.StringSetStat.class, "_values", this, out);
}
}
@@ -80,4 +80,20 @@ public class MaxIntStat extends IntStat
/** The largest value ever accumulated to this stat. */
protected int _maxValue;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
super.readObject(ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.MaxIntStat.class, "_maxValue", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
super.writeObject(out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.MaxIntStat.class, "_maxValue", this, out);
}
}
@@ -72,4 +72,20 @@ public class MaxValueIntStat extends IntStat
/** The largest value that this stat has been assigned. */
protected int _maxValue;
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
super.readObject(ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.MaxValueIntStat.class, "_maxValue", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
super.writeObject(out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.MaxValueIntStat.class, "_maxValue", this, out);
}
}
@@ -50,4 +50,24 @@ public class ShortStringSetStat extends StringSetStat
_values[ii] = aux.getCodeString(_type, in.readShort());
}
}
// from interface Streamable
public void readObject (com.threerings.io.ObjectInputStream ins)
throws java.io.IOException, java.lang.ClassNotFoundException
{
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_type", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modified", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.Stat.class, "_modCount", this, ins);
com.threerings.io.GenStreamUtil.readField(com.threerings.stats.data.StringSetStat.class, "_values", this, ins);
}
// from interface Streamable
public void writeObject (com.threerings.io.ObjectOutputStream out)
throws java.io.IOException
{
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_type", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modified", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.Stat.class, "_modCount", this, out);
com.threerings.io.GenStreamUtil.writeField(com.threerings.stats.data.StringSetStat.class, "_values", this, out);
}
}
@@ -61,7 +61,7 @@ public abstract class StatModifier<T extends Stat>
throws IOException
{
out.writeInt(_type.code());
out.defaultWriteObject();
}
/** Reads our custom streamable fields. */
@@ -69,7 +69,7 @@ public abstract class StatModifier<T extends Stat>
throws IOException, ClassNotFoundException
{
_type = Stat.getType(in.readInt());
in.defaultReadObject();
}
/**
@@ -22,9 +22,12 @@
package com.threerings.whirled.spot.data;
import java.awt.Rectangle;
import java.io.IOException;
import com.samskivert.util.StringUtil;
import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.util.ActionScript;
import com.threerings.presents.dobj.DSet;
@@ -48,6 +51,31 @@ public class Cluster extends Rectangle
return _key;
}
/**
* Writes our streamable fields. This is needed because we can no longer reflectively access the
* internals of java.awt.Rectangle.
*/
public void writeObject (ObjectOutputStream out)
throws IOException
{
out.writeInt(this.x);
out.writeInt(this.y);
out.writeInt(this.width);
out.writeInt(this.height);
out.writeInt(this.clusterOid);
}
/**
* Reads our streamable fields. This is needed because we can no longer reflectively access the
* internals of java.awt.Rectangle.
*/
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
this.setBounds(in.readInt(), in.readInt(), in.readInt(), in.readInt());
this.clusterOid = in.readInt();
}
@Override
@ActionScript(omit=true)
public boolean equals (Object other)
@@ -95,9 +95,9 @@
providing top-down 2D display of its scenes. <br>
</p>
<center>
<img align="center" src="images/scene.png" alt="Example scene image">
</center>
<p>
<img src="images/scene.png" alt="Example scene image">
</p>
<p> The arrows would, of course, not be rendered but are shown to
indicate the presence of locations (and portals) and their
+56 -23
View File
@@ -1,28 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<groupId>com.threerings</groupId>
<artifactId>vilya-parent</artifactId>
<packaging>pom</packaging>
<version>1.6</version>
<version>1.7.2-android1</version>
<name>Vilya</name>
<description>Facilities for making networked multiplayer games.</description>
<url>http://github.com/threerings/vilya/</url>
<url>https://github.com/threerings/vilya/</url>
<issueManagement>
<url>http://github.com/threerings/vilya/issues</url>
<url>https://github.com/threerings/vilya/issues</url>
</issueManagement>
<licenses>
<license>
<name>GNU Lesser General Public License (LGPL), Version 2.1</name>
<url>http://www.fsf.org/licensing/licenses/lgpl.txt</url>
<url>https://www.fsf.org/licensing/licenses/lgpl.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
@@ -38,13 +33,15 @@
<scm>
<connection>scm:git:git://github.com/threerings/vilya.git</connection>
<developerConnection>scm:git:git@github.com:threerings/vilya.git</developerConnection>
<url>http://github.com/threerings/vilya/</url>
<url>https://github.com/threerings/vilya/</url>
<!-- fork release: built from claridtimo/vilya branch epicA1-streamers (regenerated
flatten streamers + narya 1.22). New coordinates per the 2026-07-06 incident rule:
never republish a fork lib under an existing version. -->
<tag>vilya-1.7.2-android1</tag>
</scm>
<modules>
<module>core</module>
<!--<module>tools</module>-->
<module>aslib</module>
</modules>
<build>
@@ -52,10 +49,9 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<version>3.13.0</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<release>10</release>
<fork>true</fork>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
@@ -87,12 +83,6 @@
<quiet>true</quiet>
<show>public</show>
<additionalparam>-Xdoclint:all -Xdoclint:-missing</additionalparam>
<links>
<link>http://samskivert.github.com/samskivert/apidocs/</link>
<link>http://threerings.github.com/depot/apidocs/</link>
<link>http://docs.guava-libraries.googlecode.com/git/javadoc/</link>
<link>http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/</link>
</links>
</configuration>
</plugin>
<plugin>
@@ -105,10 +95,27 @@
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!-- build with mvn -Paslib to build the ActionScript code; the Maven ActionScript plugins
are old and broken, so I've disabled this by default -->
<profile>
<id>aslib</id>
<modules><module>aslib</module></modules>
</profile>
<profile>
<id>eclipse</id>
<activation>
@@ -151,16 +158,42 @@
</profile>
<profile>
<id>release-sign-artifacts</id>
<id>release-extras</id>
<activation>
<property><name>performRelease</name><value>true</value></property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.1</version>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>