thief-mission-viewer/project/code/LGS/Database/Chunks/TxList.cs

54 lines
1.5 KiB
C#

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();
}
}