Files
LightlessClient/LightlessSync/Services/CharaData/Models/LightlessCharaFileHeader.cs
defnotken 23c57aedc4 Add Nameplates + Clean up.
* Yeet Token!

* Cleaning up workflow

* Testing auto version bump

* ExistingNames

* Remove a key

* Github Token no work

* Changing Assembly Version

* Version Fix

* Fixing version v2

* Cleanup naming

* Update LightlessSync.csproj

* Add nameplate settings + run code clean up

* purple
2025-08-29 18:48:01 -05:00

54 lines
1.7 KiB
C#

namespace LightlessSync.Services.CharaData.Models;
public record LightlessCharaFileHeader(byte Version, LightlessCharaFileData CharaFileData)
{
public static readonly byte CurrentVersion = 1;
public byte Version { get; set; } = Version;
public LightlessCharaFileData CharaFileData { get; set; } = CharaFileData;
public string FilePath { get; private set; } = string.Empty;
public void WriteToStream(BinaryWriter writer)
{
writer.Write('M');
writer.Write('C');
writer.Write('D');
writer.Write('F');
writer.Write(Version);
var charaFileDataArray = CharaFileData.ToByteArray();
writer.Write(charaFileDataArray.Length);
writer.Write(charaFileDataArray);
}
public static LightlessCharaFileHeader? FromBinaryReader(string path, BinaryReader reader)
{
var chars = new string(reader.ReadChars(4));
if (!string.Equals(chars, "MCDF", StringComparison.Ordinal)) throw new InvalidDataException("Not a Lightless Chara File");
LightlessCharaFileHeader? decoded = null;
var version = reader.ReadByte();
if (version == 1)
{
var dataLength = reader.ReadInt32();
decoded = new(version, LightlessCharaFileData.FromByteArray(reader.ReadBytes(dataLength)))
{
FilePath = path,
};
}
return decoded;
}
public static void AdvanceReaderToData(BinaryReader reader)
{
reader.ReadChars(4);
var version = reader.ReadByte();
if (version == 1)
{
var length = reader.ReadInt32();
_ = reader.ReadBytes(length);
}
}
}