internal static CastleTemplates Parse(BinaryReader reader, MapParseContext context) { return(ParseAsset(reader, context, version => { var propertyKey = AssetPropertyKey.Parse(reader, context); var count = reader.ReadUInt32(); var result = new CastleTemplate[count]; for (var i = 0; i < count; i++) { result[i] = CastleTemplate.Parse(reader, version); } CastlePerimeter perimeter = null; if (version >= 2) { perimeter = CastlePerimeter.Parse(reader, version); } return new CastleTemplates { PropertyKey = propertyKey, Templates = result, Perimeter = perimeter }; })); }
internal static CastlePerimeter Parse(BinaryReader reader, ushort version) { var result = new CastlePerimeter { HasPerimeter = reader.ReadBooleanUInt32Checked() }; if (result.HasPerimeter) { var numPerimeterPoints = reader.ReadUInt32(); result.PerimeterPoints = new CastlePerimeterPoint[numPerimeterPoints]; for (var i = 0; i < numPerimeterPoints; i++) { result.PerimeterPoints[i] = CastlePerimeterPoint.Parse(reader, version); } } return(result); }