public Tileset2Layer() { TilerName = "gnd"; TilerAttributes = new object[0]; Tags = new string[0]; FlavorObjects = new FlavorObjectData[0]; }
protected override TilesetLayer Deserialize(BinaryDataReader reader) { var tileset = new TilesetLayer(); tileset.HasTransitions = reader.ReadBoolean(); var flavorCount = reader.ReadUInt16(); tileset.FlavorDensity = reader.ReadUInt16(); tileset.FlavorObjects = new FlavorObjectData[flavorCount]; for (int i = 0; i < flavorCount; i++) { var fob = new FlavorObjectData(); fob.Resource = new ResourceRef(reader.ReadCString(), reader.ReadUInt16()); fob.Weight = reader.ReadByte(); tileset.FlavorObjects[i] = fob; } return(tileset); }
protected override Tileset2Layer Deserialize(BinaryDataReader reader) { var data = new Tileset2Layer(); while (reader.HasRemaining) { var part = reader.ReadByte(); switch (part) { case Tiler: data.TilerName = reader.ReadCString(); data.TilerAttributes = reader.ReadList(); break; case Flavor: var flavorCount = reader.ReadUInt16(); data.FlavorDensity = reader.ReadUInt16(); data.FlavorObjects = new FlavorObjectData[flavorCount]; for (int i = 0; i < flavorCount; i++) { var fob = new FlavorObjectData(); fob.Resource = new ResourceRef(reader.ReadCString(), reader.ReadUInt16()); fob.Weight = reader.ReadByte(); data.FlavorObjects[i] = fob; } break; case Tags: data.Tags = new string[reader.ReadByte()]; for (int i = 0; i < data.Tags.Length; i++) { data.Tags[i] = reader.ReadCString(); } break; default: throw new ResourceException($"Invalid tileset part {part}"); } } return(data); }