From f02b5119499d1d61050d94bfddaf59cdf75bbbb2 Mon Sep 17 00:00:00 2001 From: gered Date: Thu, 18 Jul 2013 19:18:35 -0400 Subject: [PATCH] add Tile/TileChunk serialization helpers --- src/com/blarg/gdx/tilemap3d/TileChunk.java | 4 +++ .../serialization/TileChunkSerializer.java | 36 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/com/blarg/gdx/tilemap3d/serialization/TileChunkSerializer.java diff --git a/src/com/blarg/gdx/tilemap3d/TileChunk.java b/src/com/blarg/gdx/tilemap3d/TileChunk.java index 9eb2a9b..80a67b2 100644 --- a/src/com/blarg/gdx/tilemap3d/TileChunk.java +++ b/src/com/blarg/gdx/tilemap3d/TileChunk.java @@ -23,6 +23,10 @@ public class TileChunk extends TileContainer implements Disposable { public TileChunkMesh alphaMesh; public final TileMap tileMap; + public Tile[] getData() { + return data; + } + @Override public int getWidth() { return width; diff --git a/src/com/blarg/gdx/tilemap3d/serialization/TileChunkSerializer.java b/src/com/blarg/gdx/tilemap3d/serialization/TileChunkSerializer.java new file mode 100644 index 0000000..37ca641 --- /dev/null +++ b/src/com/blarg/gdx/tilemap3d/serialization/TileChunkSerializer.java @@ -0,0 +1,36 @@ +package com.blarg.gdx.tilemap3d.serialization; + +import com.blarg.gdx.tilemap3d.Tile; +import com.blarg.gdx.tilemap3d.TileChunk; + +import java.nio.ByteBuffer; + +public class TileChunkSerializer { + public static void serialize(TileChunk chunk, ByteBuffer buffer) { + Tile[] tiles = chunk.getData(); + for (int i = 0; i < tiles.length; ++i) + serialize(tiles[i], buffer); + } + + public static void deserialize(ByteBuffer buffer, TileChunk out) { + Tile[] tiles = out.getData(); + for (int i = 0; i < tiles.length; ++i) + deserialize(buffer, tiles[i]); + } + + public static void serialize(Tile tile, ByteBuffer buffer) { + buffer.putShort(tile.tile); + buffer.putShort(tile.flags); + buffer.put(tile.tileLight); + buffer.put(tile.skyLight); + buffer.putInt(tile.color); + } + + public static void deserialize(ByteBuffer buffer, Tile out) { + out.tile = buffer.getShort(); + out.flags = buffer.getShort(); + out.tileLight = buffer.get(); + out.skyLight = buffer.get(); + out.color = buffer.getInt(); + } +}