-
Notifications
You must be signed in to change notification settings - Fork 0
/
SGSFile.cs
31 lines (30 loc) · 1003 Bytes
/
SGSFile.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using ThemModdingHerds.IO.Binary;
using ThemModdingHerds.Levels.SGS;
namespace ThemModdingHerds.Levels;
public class SGSFile : List<Bone>
{
public const string VERSION = "2.0";
public string Version {get; set;} = VERSION;
}
public static class SGSFileExt
{
public static SGSFile ReadSGSFile(this Reader reader)
{
reader.Endianness = IO.Endianness.Big;
SGSFile file = new()
{
Version = reader.ReadPascal64String()
};
if(file.Version != SGSFile.VERSION)
throw new Exception($"SGS version mismatch: got '{file.Version}', expected '{SGSFile.VERSION}'");
file.AddRange(reader.ReadSGSBones(reader.ReadULong()));
return file;
}
public static void Write(this Writer writer,SGSFile file)
{
writer.Endianness = IO.Endianness.Big;
writer.WritePascal64String(file.Version);
writer.Write((ulong)file.Count);
writer.Write(file.ToArray());
}
}