Add TXLIST reader

This commit is contained in:
Jarrod Doyle 2024-08-03 16:09:30 +01:00
parent fe5d2fb12f
commit d405a9b5db
Signed by: Jayrude
GPG Key ID: 38B57B16E7C0ADF7
1 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,54 @@
using System;
using System.IO;
using System.Text;
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);
var tmpName = Encoding.UTF8.GetString(reader.ReadBytes(16)).Replace("\0", string.Empty);
Name = tmpName[..Math.Min(15, tmpName.Length)];
}
}
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++)
{
var tmpToken = Encoding.UTF8.GetString(reader.ReadBytes(16)).Replace("\0", string.Empty);
Tokens[i] = tmpToken[..Math.Min(16, tmpToken.Length)];
}
Items = new Item[ItemCount];
for (var i = 0; i < ItemCount; i++)
{
Items[i] = new Item(reader);
}
}
public void WriteData(BinaryWriter writer)
{
throw new System.NotImplementedException();
}
}