diff options
Diffstat (limited to 'core/src/ch/asynk/rustanddust')
-rw-r--r-- | core/src/ch/asynk/rustanddust/game/map/Map5Marshal.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/map/Map5Marshal.java b/core/src/ch/asynk/rustanddust/game/map/Map5Marshal.java index 60198a2..4bc0509 100644 --- a/core/src/ch/asynk/rustanddust/game/map/Map5Marshal.java +++ b/core/src/ch/asynk/rustanddust/game/map/Map5Marshal.java @@ -15,7 +15,9 @@ import ch.asynk.rustanddust.engine.Orientation; import ch.asynk.rustanddust.engine.SelectedTile; import ch.asynk.rustanddust.RustAndDust; +import ch.asynk.rustanddust.game.Map; import ch.asynk.rustanddust.game.Hex; +import ch.asynk.rustanddust.game.Zone; import ch.asynk.rustanddust.game.Player; import ch.asynk.rustanddust.game.Army; import ch.asynk.rustanddust.game.Unit; @@ -124,6 +126,38 @@ public abstract class Map5Marshal extends Map4Orders json.writeObjectEnd(); } json.writeArrayEnd(); + json.writeArrayStart("e"); + for (Zone z: entryZones) { + json.writeObjectStart(); + json.writeValue("a", z.allowedMoves); + json.writeValue("o", z.orientation.r()); + json.writeArrayStart("t"); + for (Tile t : z) { + json.writeArrayStart(); + json.writeValue(t.getCol()); + json.writeValue(t.getRow()); + json.writeArrayEnd(); + } + json.writeArrayEnd(); + json.writeObjectEnd(); + } + json.writeArrayEnd(); + json.writeArrayStart("x"); + for (Zone z: exitZones) { + json.writeObjectStart(); + json.writeValue("a", z.allowedMoves); + json.writeValue("o", z.orientation.r()); + json.writeArrayStart("t"); + for (Tile t : z) { + json.writeArrayStart(); + json.writeValue(t.getCol()); + json.writeValue(t.getRow()); + json.writeArrayEnd(); + } + json.writeArrayEnd(); + json.writeObjectEnd(); + } + json.writeArrayEnd(); } // orders @@ -294,6 +328,25 @@ public abstract class Map5Marshal extends Map4Orders h.claim(army); showObjective(h, army); } + a = v.get("e"); + for (int i = 0; i < a.size; i++) + entryZones.add(loadZone(a.get(i))); + a = v.get("x"); + for (int i = 0; i < a.size; i++) + exitZones.add(loadZone(a.get(i))); + } + + private Zone loadZone(JsonValue v) + { + JsonValue t = v.get("t"); + Zone z = new Zone((Map) this, t.size); + z.allowedMoves = v.getInt("a"); + z.orientation = Orientation.fromRotation(v.getInt("o")); + for (int j = 0; j < t.size; j++) { + JsonValue h = t.get(j); + z.add(getHex(h.getInt(0), h.getInt(1))); + } + return z; } private void loadOrders(JsonValue v) |