Example #1
0
        public static void Save(BinaryWriter writer, BlockStore store)
        {
            writer.Write((byte)Version);
            writer.Write((Int32)store.TileSize);
            writer.Write((Int32)store.Tiles.Count);
            foreach (var tile in store.Tiles)
            {
                BinSpriteSerializer.Save(writer, tile);
            }
            writer.Write((Int32)store.Materials.Count);
            foreach (var kvp in store.Materials)
            {
                writer.Write((Int32)kvp.Key);
                writer.Write((Int32)kvp.Value.Count);
                foreach (var item in kvp.Value)
                {
                    writer.Write((Int32)item);
                }
            }
            var flags = store.Flags.ToList();

            writer.Write((Int32)flags.Count);
            foreach (var kvp in flags)
            {
                writer.Write((Int32)kvp.Key);
                writer.Write((Int32)kvp.Value);
            }
        }
Example #2
0
        public static BlockStore Load(BinaryReader reader)
        {
            var version = reader.ReadByte();

            if (version != Version)
            {
                throw new InvalidOperationException("Invalid blockstore version");
            }
            var tilesize = reader.ReadInt32();
            var result   = new BlockStore(tilesize);
            var numTiles = reader.ReadInt32();

            while (numTiles-- > 0)
            {
                var sprite = BinSpriteSerializer.Load(reader);
                result.Tiles.Add(sprite);
            }
            var numMaterials = reader.ReadInt32();

            while (numMaterials-- > 0)
            {
                var material         = (MaterialType)reader.ReadInt32();
                var numMaterialTiles = reader.ReadInt32();
                while (numMaterialTiles-- > 0)
                {
                    var id = reader.ReadInt32();
                    result.Materials[material].Add(id);
                }
            }
            var numFlags = reader.ReadInt32();

            while (numFlags-- > 0)
            {
                var id    = reader.ReadInt32();
                var flags = (TileFlags)reader.ReadInt32();
                result[id] = flags;
            }
            return(result);
        }