GCF model cleanup

This commit is contained in:
Matt Nadareski
2025-10-30 21:38:17 -04:00
parent c10749f34d
commit 96bc301e6d
25 changed files with 76 additions and 139 deletions

View File

@@ -41,4 +41,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint DirectoryIndex;
}
}
}

View File

@@ -46,4 +46,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Checksum;
}
}
}

View File

@@ -19,4 +19,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint NextBlockEntryIndex;
}
}
}

View File

@@ -34,4 +34,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Checksum;
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Checksum;
}
}
}

View File

@@ -16,4 +16,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint ChecksumSize;
}
}
}

View File

@@ -16,4 +16,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint FirstChecksumIndex;
}
}
}

View File

@@ -26,4 +26,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint ChecksumCount;
}
}
}

View File

@@ -7,4 +7,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public const int HL_GCF_CHECKSUM_LENGTH = 0x00008000;
}
}
}

View File

@@ -36,4 +36,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Checksum;
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint DirectoryIndex;
}
}
}

View File

@@ -42,4 +42,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint FirstIndex;
}
}
}

View File

@@ -76,4 +76,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Checksum;
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Dummy0;
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Dummy0;
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint DirectoryIndex;
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint FirstBlockIndex;
}
}
}

View File

@@ -19,4 +19,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Dummy1;
}
}
}

View File

@@ -35,4 +35,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
HL_GCF_FLAG_FILE = 0x00004000,
}
}
}

View File

@@ -11,108 +11,108 @@ namespace SabreTools.Data.Models.GCF
/// <summary>
/// Header data
/// </summary>
public Header? Header { get; set; }
public Header Header { get; set; }
/// <summary>
/// Block entry header data
/// </summary>
public BlockEntryHeader? BlockEntryHeader { get; set; }
public BlockEntryHeader BlockEntryHeader { get; set; }
/// <summary>
/// Block entries data
/// </summary>
public BlockEntry[]? BlockEntries { get; set; }
public BlockEntry[] BlockEntries { get; set; }
/// <summary>
/// Fragmentation map header data
/// </summary>
public FragmentationMapHeader? FragmentationMapHeader { get; set; }
public FragmentationMapHeader FragmentationMapHeader { get; set; }
/// <summary>
/// Fragmentation map data
/// </summary>
public FragmentationMap[]? FragmentationMaps { get; set; }
public FragmentationMap[] FragmentationMaps { get; set; }
/// <summary>
/// Block entry map header data
/// </summary>
/// <remarks>Part of version 5 but not version 6.</remarks>
public BlockEntryMapHeader? BlockEntryMapHeader { get; set; }
public BlockEntryMapHeader BlockEntryMapHeader { get; set; }
/// <summary>
/// Block entry map data
/// </summary>
/// <remarks>Part of version 5 but not version 6.</remarks>
public BlockEntryMap[]? BlockEntryMaps { get; set; }
public BlockEntryMap[] BlockEntryMaps { get; set; }
/// <summary>
/// Directory header data
/// </summary>
public DirectoryHeader? DirectoryHeader { get; set; }
public DirectoryHeader DirectoryHeader { get; set; }
/// <summary>
/// Directory entries data
/// </summary>
public DirectoryEntry[]? DirectoryEntries { get; set; }
public DirectoryEntry[] DirectoryEntries { get; set; }
/// <summary>
/// Directory names data
/// </summary>
public Dictionary<long, string?>? DirectoryNames { get; set; }
public Dictionary<long, string?> DirectoryNames { get; set; }
/// <summary>
/// Directory info 1 entries data
/// </summary>
public DirectoryInfo1Entry[]? DirectoryInfo1Entries { get; set; }
public DirectoryInfo1Entry[] DirectoryInfo1Entries { get; set; }
/// <summary>
/// Directory info 2 entries data
/// </summary>
public DirectoryInfo2Entry[]? DirectoryInfo2Entries { get; set; }
public DirectoryInfo2Entry[] DirectoryInfo2Entries { get; set; }
/// <summary>
/// Directory copy entries data
/// </summary>
public DirectoryCopyEntry[]? DirectoryCopyEntries { get; set; }
public DirectoryCopyEntry[] DirectoryCopyEntries { get; set; }
/// <summary>
/// Directory local entries data
/// </summary>
public DirectoryLocalEntry[]? DirectoryLocalEntries { get; set; }
public DirectoryLocalEntry[] DirectoryLocalEntries { get; set; }
/// <summary>
/// Directory map header data
/// </summary>
public DirectoryMapHeader? DirectoryMapHeader { get; set; }
public DirectoryMapHeader DirectoryMapHeader { get; set; }
/// <summary>
/// Directory map entries data
/// </summary>
public DirectoryMapEntry[]? DirectoryMapEntries { get; set; }
public DirectoryMapEntry[] DirectoryMapEntries { get; set; }
/// <summary>
/// Checksum header data
/// </summary>
public ChecksumHeader? ChecksumHeader { get; set; }
public ChecksumHeader ChecksumHeader { get; set; }
/// <summary>
/// Checksum map header data
/// </summary>
public ChecksumMapHeader? ChecksumMapHeader { get; set; }
public ChecksumMapHeader ChecksumMapHeader { get; set; }
/// <summary>
/// Checksum map entries data
/// </summary>
public ChecksumMapEntry[]? ChecksumMapEntries { get; set; }
public ChecksumMapEntry[] ChecksumMapEntries { get; set; }
/// <summary>
/// Checksum entries data
/// </summary>
public ChecksumEntry[]? ChecksumEntries { get; set; }
public ChecksumEntry[] ChecksumEntries { get; set; }
/// <summary>
/// Data block header data
/// </summary>
public DataBlockHeader? DataBlockHeader { get; set; }
public DataBlockHeader DataBlockHeader { get; set; }
}
}
}

View File

@@ -11,4 +11,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint NextDataBlockIndex;
}
}
}

View File

@@ -26,4 +26,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Checksum;
}
}
}

View File

@@ -61,4 +61,4 @@ namespace SabreTools.Data.Models.GCF
/// </summary>
public uint Dummy3;
}
}
}

View File

@@ -55,17 +55,10 @@ namespace SabreTools.Serialization.Wrappers
Print(builder, Model.DataBlockHeader);
}
private static void Print(StringBuilder builder, Header? header)
private static void Print(StringBuilder builder, Header header)
{
builder.AppendLine(" Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No header");
builder.AppendLine();
return;
}
builder.AppendLine(header.Dummy0, " Dummy 0");
builder.AppendLine(header.MajorVersion, " Major version");
builder.AppendLine(header.MinorVersion, " Minor version");
@@ -80,17 +73,10 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, BlockEntryHeader? header)
private static void Print(StringBuilder builder, BlockEntryHeader header)
{
builder.AppendLine(" Block Entry Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No block entry header");
builder.AppendLine();
return;
}
builder.AppendLine(header.BlockCount, " Block count");
builder.AppendLine(header.BlocksUsed, " Blocks used");
builder.AppendLine(header.Dummy0, " Dummy 0");
@@ -102,11 +88,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, BlockEntry[]? entries)
private static void Print(StringBuilder builder, BlockEntry[] entries)
{
builder.AppendLine(" Block Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No block entries");
builder.AppendLine();
@@ -130,17 +116,10 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, FragmentationMapHeader? header)
private static void Print(StringBuilder builder, FragmentationMapHeader header)
{
builder.AppendLine(" Fragmentation Map Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No fragmentation map header");
builder.AppendLine();
return;
}
builder.AppendLine(header.BlockCount, " Block count");
builder.AppendLine(header.FirstUnusedEntry, " First unused entry");
builder.AppendLine(header.Terminator, " Terminator");
@@ -148,11 +127,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, FragmentationMap[]? entries)
private static void Print(StringBuilder builder, FragmentationMap[] entries)
{
builder.AppendLine(" Fragmentation Maps Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No fragmentation maps");
builder.AppendLine();
@@ -170,17 +149,10 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, BlockEntryMapHeader? header)
private static void Print(StringBuilder builder, BlockEntryMapHeader header)
{
builder.AppendLine(" Block Entry Map Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No block entry map header");
builder.AppendLine();
return;
}
builder.AppendLine(header.BlockCount, " Block count");
builder.AppendLine(header.FirstBlockEntryIndex, " First block entry index");
builder.AppendLine(header.LastBlockEntryIndex, " Last block entry index");
@@ -189,11 +161,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, BlockEntryMap[]? entries)
private static void Print(StringBuilder builder, BlockEntryMap[] entries)
{
builder.AppendLine(" Block Entry Maps Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No block entry maps");
builder.AppendLine();
@@ -212,17 +184,10 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryHeader? header)
private static void Print(StringBuilder builder, DirectoryHeader header)
{
builder.AppendLine(" Directory Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No directory header");
builder.AppendLine();
return;
}
builder.AppendLine(header.Dummy0, " Dummy 0");
builder.AppendLine(header.CacheID, " Cache ID");
builder.AppendLine(header.LastVersionPlayed, " Last version played");
@@ -240,11 +205,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryEntry[]? entries, Dictionary<long, string?>? entryNames)
private static void Print(StringBuilder builder, DirectoryEntry[] entries, Dictionary<long, string?> entryNames)
{
builder.AppendLine(" Directory Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No directory entries");
builder.AppendLine();
@@ -269,11 +234,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryInfo1Entry[]? entries)
private static void Print(StringBuilder builder, DirectoryInfo1Entry[] entries)
{
builder.AppendLine(" Directory Info 1 Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No directory info 1 entries");
builder.AppendLine();
@@ -291,11 +256,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryInfo2Entry[]? entries)
private static void Print(StringBuilder builder, DirectoryInfo2Entry[] entries)
{
builder.AppendLine(" Directory Info 2 Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No directory info 2 entries");
builder.AppendLine();
@@ -313,11 +278,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryCopyEntry[]? entries)
private static void Print(StringBuilder builder, DirectoryCopyEntry[] entries)
{
builder.AppendLine(" Directory Copy Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No directory copy entries");
builder.AppendLine();
@@ -335,11 +300,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryLocalEntry[]? entries)
private static void Print(StringBuilder builder, DirectoryLocalEntry[] entries)
{
builder.AppendLine(" Directory Local Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No directory local entries");
builder.AppendLine();
@@ -357,27 +322,20 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryMapHeader? header)
private static void Print(StringBuilder builder, DirectoryMapHeader header)
{
builder.AppendLine(" Directory Map Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No directory map header");
builder.AppendLine();
return;
}
builder.AppendLine(header.Dummy0, " Dummy 0");
builder.AppendLine(header.Dummy1, " Dummy 1");
builder.AppendLine();
}
private static void Print(StringBuilder builder, DirectoryMapEntry[]? entries)
private static void Print(StringBuilder builder, DirectoryMapEntry[] entries)
{
builder.AppendLine(" Directory Map Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No directory map entries");
builder.AppendLine();
@@ -395,33 +353,19 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, ChecksumHeader? header)
private static void Print(StringBuilder builder, ChecksumHeader header)
{
builder.AppendLine(" Checksum Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No checksum header");
builder.AppendLine();
return;
}
builder.AppendLine(header.Dummy0, " Dummy 0");
builder.AppendLine(header.ChecksumSize, " Checksum size");
builder.AppendLine();
}
private static void Print(StringBuilder builder, ChecksumMapHeader? header)
private static void Print(StringBuilder builder, ChecksumMapHeader header)
{
builder.AppendLine(" Checksum Map Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No checksum map header");
builder.AppendLine();
return;
}
builder.AppendLine(header.Dummy0, " Dummy 0");
builder.AppendLine(header.Dummy1, " Dummy 1");
builder.AppendLine(header.ItemCount, " Item count");
@@ -429,11 +373,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, ChecksumMapEntry[]? entries)
private static void Print(StringBuilder builder, ChecksumMapEntry[] entries)
{
builder.AppendLine(" Checksum Map Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No checksum map entries");
builder.AppendLine();
@@ -452,11 +396,11 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, ChecksumEntry[]? entries)
private static void Print(StringBuilder builder, ChecksumEntry[] entries)
{
builder.AppendLine(" Checksum Entries Information:");
builder.AppendLine(" -------------------------");
if (entries == null || entries.Length == 0)
if (entries.Length == 0)
{
builder.AppendLine(" No checksum entries");
builder.AppendLine();
@@ -474,17 +418,10 @@ namespace SabreTools.Serialization.Wrappers
builder.AppendLine();
}
private static void Print(StringBuilder builder, DataBlockHeader? header)
private static void Print(StringBuilder builder, DataBlockHeader header)
{
builder.AppendLine(" Data Block Header Information:");
builder.AppendLine(" -------------------------");
if (header == null)
{
builder.AppendLine(" No data block header");
builder.AppendLine();
return;
}
builder.AppendLine(header.LastVersionPlayed, " Last version played");
builder.AppendLine(header.BlockCount, " Block count");
builder.AppendLine(header.BlockSize, " Block size");

View File

@@ -26,7 +26,7 @@ namespace SabreTools.Serialization.Wrappers
return _files;
// If we don't have a required property
if (Model.DirectoryEntries == null || Model.DirectoryMapEntries == null || Model.BlockEntries == null)
if (Model.DirectoryEntries == null || Model.DirectoryMapEntries == null)
return null;
// Otherwise, scan and build the files