コード例 #1
0
 public Tileset2Layer()
 {
     TilerName       = "gnd";
     TilerAttributes = new object[0];
     Tags            = new string[0];
     FlavorObjects   = new FlavorObjectData[0];
 }
コード例 #2
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);
        }
コード例 #3
0
        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);
        }