ThiefLightmapper/KeepersCompound.LGS/Database/Chunks/TxList.cs

63 lines
1.6 KiB
C#

namespace KeepersCompound.LGS.Database.Chunks;
public class TxList : IChunk
{
public struct Item
{
public byte[] Tokens { get; set; }
public string Name { get; set; }
public Item(BinaryReader reader)
{
Tokens = reader.ReadBytes(4);
Name = reader.ReadNullString(16);
}
public readonly void Write(BinaryWriter writer)
{
writer.Write(Tokens);
writer.WriteNullString(Name, 16);
}
}
public ChunkHeader Header { get; set; }
public int BlockSize { get; set; }
public int ItemCount { get; set; }
public int TokenCount { get; set; }
public string[] Tokens { get; set; }
public Item[] Items { get; set; }
public void ReadData(BinaryReader reader, DbFile.TableOfContents.Entry entry)
{
BlockSize = reader.ReadInt32();
ItemCount = reader.ReadInt32();
TokenCount = reader.ReadInt32();
Tokens = new string[TokenCount];
for (var i = 0; i < TokenCount; i++)
{
Tokens[i] = reader.ReadNullString(16);
}
Items = new Item[ItemCount];
for (var i = 0; i < ItemCount; i++)
{
Items[i] = new Item(reader);
}
}
public void WriteData(BinaryWriter writer)
{
writer.Write(BlockSize);
writer.Write(ItemCount);
writer.Write(TokenCount);
foreach (var token in Tokens)
{
writer.WriteNullString(token, 16);
}
foreach (var item in Items)
{
item.Write(writer);
}
}
}