From a2e24b1f5f2aa9a34ebc0aa2cbe2ee8895bedbca Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 30 Oct 2025 23:40:45 -0400 Subject: [PATCH] SGA model cleanup --- .../Models/SGA/Archive.cs | 4 +- .../Models/SGA/Constants.cs | 2 +- .../Models/SGA/Directory.cs | 12 +-- .../Models/SGA/DirectoryHeader.cs | 10 +-- SabreTools.Serialization/Models/SGA/File.cs | 2 +- .../Models/SGA/FileHeader.cs | 2 +- SabreTools.Serialization/Models/SGA/Folder.cs | 10 +-- SabreTools.Serialization/Models/SGA/Header.cs | 2 +- .../Models/SGA/Header4.cs | 2 +- .../Models/SGA/Header6.cs | 2 +- .../Models/SGA/Section.cs | 16 ++-- .../Wrappers/SGA.Printing.cs | 73 +++++-------------- SabreTools.Serialization/Wrappers/SGA.cs | 18 ++--- 13 files changed, 60 insertions(+), 95 deletions(-) diff --git a/SabreTools.Serialization/Models/SGA/Archive.cs b/SabreTools.Serialization/Models/SGA/Archive.cs index 5dfb634c..4b444ae9 100644 --- a/SabreTools.Serialization/Models/SGA/Archive.cs +++ b/SabreTools.Serialization/Models/SGA/Archive.cs @@ -9,11 +9,11 @@ namespace SabreTools.Data.Models.SGA /// ///Header data /// - public Header? Header { get; set; } + public Header Header { get; set; } /// /// Directory data /// - public Directory? Directory { get; set; } + public Directory Directory { get; set; } } } diff --git a/SabreTools.Serialization/Models/SGA/Constants.cs b/SabreTools.Serialization/Models/SGA/Constants.cs index 2a2579e5..c6f35d17 100644 --- a/SabreTools.Serialization/Models/SGA/Constants.cs +++ b/SabreTools.Serialization/Models/SGA/Constants.cs @@ -13,4 +13,4 @@ namespace SabreTools.Data.Models.SGA /// public const int HL_SGA_CHECKSUM_LENGTH = 0x00008000; } -} \ No newline at end of file +} diff --git a/SabreTools.Serialization/Models/SGA/Directory.cs b/SabreTools.Serialization/Models/SGA/Directory.cs index c4dae37e..ca1935ae 100644 --- a/SabreTools.Serialization/Models/SGA/Directory.cs +++ b/SabreTools.Serialization/Models/SGA/Directory.cs @@ -8,7 +8,7 @@ namespace SabreTools.Data.Models.SGA /// /// Source SGA file /// - public Archive? File { get; set; } + public Archive File { get; set; } } /// @@ -25,26 +25,26 @@ namespace SabreTools.Data.Models.SGA /// /// Directory header data /// - public TDirectoryHeader? DirectoryHeader { get; set; } + public TDirectoryHeader DirectoryHeader { get; set; } /// /// Sections data /// - public TSection[]? Sections { get; set; } + public TSection[] Sections { get; set; } /// /// Folders data /// - public TFolder[]? Folders { get; set; } + public TFolder[] Folders { get; set; } /// /// Files data /// - public TFile[]? Files { get; set; } + public TFile[] Files { get; set; } /// /// String table data /// - public Dictionary? StringTable { get; set; } + public Dictionary StringTable { get; set; } } } diff --git a/SabreTools.Serialization/Models/SGA/DirectoryHeader.cs b/SabreTools.Serialization/Models/SGA/DirectoryHeader.cs index ad1a3510..a19914e3 100644 --- a/SabreTools.Serialization/Models/SGA/DirectoryHeader.cs +++ b/SabreTools.Serialization/Models/SGA/DirectoryHeader.cs @@ -7,22 +7,22 @@ namespace SabreTools.Data.Models.SGA } /// - public abstract class DirectoryHeader + public abstract class DirectoryHeader where T : notnull { public uint SectionOffset { get; set; } - public T? SectionCount { get; set; } + public T SectionCount { get; set; } public uint FolderOffset { get; set; } - public T? FolderCount { get; set; } + public T FolderCount { get; set; } public uint FileOffset { get; set; } - public T? FileCount { get; set; } + public T FileCount { get; set; } public uint StringTableOffset { get; set; } - public T? StringTableCount { get; set; } + public T StringTableCount { get; set; } } } diff --git a/SabreTools.Serialization/Models/SGA/File.cs b/SabreTools.Serialization/Models/SGA/File.cs index d9f89b2d..b7aa0b5d 100644 --- a/SabreTools.Serialization/Models/SGA/File.cs +++ b/SabreTools.Serialization/Models/SGA/File.cs @@ -5,7 +5,7 @@ namespace SabreTools.Data.Models.SGA { public uint NameOffset { get; set; } - public string? Name { get; set; } + public string Name { get; set; } public uint Offset { get; set; } diff --git a/SabreTools.Serialization/Models/SGA/FileHeader.cs b/SabreTools.Serialization/Models/SGA/FileHeader.cs index e69dfb34..9adb7dec 100644 --- a/SabreTools.Serialization/Models/SGA/FileHeader.cs +++ b/SabreTools.Serialization/Models/SGA/FileHeader.cs @@ -3,7 +3,7 @@ namespace SabreTools.Data.Models.SGA /// public sealed class FileHeader { - public string? Name { get; set; } + public string Name { get; set; } public uint CRC32 { get; set; } } diff --git a/SabreTools.Serialization/Models/SGA/Folder.cs b/SabreTools.Serialization/Models/SGA/Folder.cs index 7596ba25..57dd5453 100644 --- a/SabreTools.Serialization/Models/SGA/Folder.cs +++ b/SabreTools.Serialization/Models/SGA/Folder.cs @@ -9,14 +9,14 @@ namespace SabreTools.Data.Models.SGA } /// - public abstract class Folder : Folder + public abstract class Folder : Folder where T : notnull { - public T? FolderStartIndex { get; set; } + public T FolderStartIndex { get; set; } - public T? FolderEndIndex { get; set; } + public T FolderEndIndex { get; set; } - public T? FileStartIndex { get; set; } + public T FileStartIndex { get; set; } - public T? FileEndIndex { get; set; } + public T FileEndIndex { get; set; } } } diff --git a/SabreTools.Serialization/Models/SGA/Header.cs b/SabreTools.Serialization/Models/SGA/Header.cs index 056068eb..4cb48900 100644 --- a/SabreTools.Serialization/Models/SGA/Header.cs +++ b/SabreTools.Serialization/Models/SGA/Header.cs @@ -3,7 +3,7 @@ namespace SabreTools.Data.Models.SGA /// public abstract class Header { - public string? Signature { get; set; } + public string Signature { get; set; } public ushort MajorVersion { get; set; } diff --git a/SabreTools.Serialization/Models/SGA/Header4.cs b/SabreTools.Serialization/Models/SGA/Header4.cs index 71c79d19..5a48921b 100644 --- a/SabreTools.Serialization/Models/SGA/Header4.cs +++ b/SabreTools.Serialization/Models/SGA/Header4.cs @@ -5,7 +5,7 @@ namespace SabreTools.Data.Models.SGA { public byte[] FileMD5 { get; set; } = new byte[0x10]; - public string? Name { get; set; } + public string Name { get; set; } public byte[] HeaderMD5 { get; set; } = new byte[0x10]; diff --git a/SabreTools.Serialization/Models/SGA/Header6.cs b/SabreTools.Serialization/Models/SGA/Header6.cs index 9fb2e717..3df2dec5 100644 --- a/SabreTools.Serialization/Models/SGA/Header6.cs +++ b/SabreTools.Serialization/Models/SGA/Header6.cs @@ -3,7 +3,7 @@ namespace SabreTools.Data.Models.SGA /// public sealed class Header6 : Header { - public string? Name { get; set; } + public string Name { get; set; } public uint HeaderLength { get; set; } diff --git a/SabreTools.Serialization/Models/SGA/Section.cs b/SabreTools.Serialization/Models/SGA/Section.cs index 6a9de629..a54a8162 100644 --- a/SabreTools.Serialization/Models/SGA/Section.cs +++ b/SabreTools.Serialization/Models/SGA/Section.cs @@ -3,22 +3,22 @@ namespace SabreTools.Data.Models.SGA /// public abstract class Section { - public string? Alias { get; set; } + public string Alias { get; set; } - public string? Name { get; set; } + public string Name { get; set; } } /// - public abstract class Section : Section + public abstract class Section : Section where T : notnull { - public T? FolderStartIndex { get; set; } + public T FolderStartIndex { get; set; } - public T? FolderEndIndex { get; set; } + public T FolderEndIndex { get; set; } - public T? FileStartIndex { get; set; } + public T FileStartIndex { get; set; } - public T? FileEndIndex { get; set; } + public T FileEndIndex { get; set; } - public T? FolderRootIndex { get; set; } + public T FolderRootIndex { get; set; } } } diff --git a/SabreTools.Serialization/Wrappers/SGA.Printing.cs b/SabreTools.Serialization/Wrappers/SGA.Printing.cs index eb5ae294..573310bd 100644 --- a/SabreTools.Serialization/Wrappers/SGA.Printing.cs +++ b/SabreTools.Serialization/Wrappers/SGA.Printing.cs @@ -26,17 +26,10 @@ namespace SabreTools.Serialization.Wrappers // TODO: Should we print the string table? } - 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.Signature, " Signature"); builder.AppendLine(header.MajorVersion, " Major version"); builder.AppendLine(header.MinorVersion, " Minor version"); @@ -62,17 +55,10 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, Directory? directory) + private static void Print(StringBuilder builder, Directory directory) { builder.AppendLine(" Directory Information:"); builder.AppendLine(" -------------------------"); - if (directory == null) - { - builder.AppendLine(" No directory"); - builder.AppendLine(); - return; - } - switch (directory) { case Directory4 directory4: @@ -111,17 +97,10 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, DirectoryHeader4? header) + private static void Print(StringBuilder builder, DirectoryHeader4 header) { builder.AppendLine(" Directory Header Information:"); builder.AppendLine(" -------------------------"); - if (header == null) - { - builder.AppendLine(" No directory header"); - builder.AppendLine(); - return; - } - builder.AppendLine(header.SectionOffset, " Section offset"); builder.AppendLine(header.SectionCount, " Section count"); builder.AppendLine(header.FolderOffset, " Folder offset"); @@ -133,17 +112,10 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, DirectoryHeader5? header) + private static void Print(StringBuilder builder, DirectoryHeader5 header) { builder.AppendLine(" Directory Header Information:"); builder.AppendLine(" -------------------------"); - if (header == null) - { - builder.AppendLine(" No directory header"); - builder.AppendLine(); - return; - } - builder.AppendLine(header.SectionOffset, " Section offset"); builder.AppendLine(header.SectionCount, " Section count"); builder.AppendLine(header.FolderOffset, " Folder offset"); @@ -155,17 +127,10 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, DirectoryHeader7? header) + private static void Print(StringBuilder builder, DirectoryHeader7 header) { builder.AppendLine(" Directory Header Information:"); builder.AppendLine(" -------------------------"); - if (header == null) - { - builder.AppendLine(" No directory header"); - builder.AppendLine(); - return; - } - builder.AppendLine(header.SectionOffset, " Section offset"); builder.AppendLine(header.SectionCount, " Section count"); builder.AppendLine(header.FolderOffset, " Folder offset"); @@ -179,11 +144,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, Section4[]? sections) + private static void Print(StringBuilder builder, Section4[] sections) { builder.AppendLine(" Sections Information:"); builder.AppendLine(" -------------------------"); - if (sections == null || sections.Length == 0) + if (sections.Length == 0) { builder.AppendLine(" No sections"); builder.AppendLine(); @@ -207,11 +172,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, Section5[]? sections) + private static void Print(StringBuilder builder, Section5[] sections) { builder.AppendLine(" Sections Information:"); builder.AppendLine(" -------------------------"); - if (sections == null || sections.Length == 0) + if (sections.Length == 0) { builder.AppendLine(" No sections"); builder.AppendLine(); @@ -235,11 +200,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, Folder4[]? folders) + private static void Print(StringBuilder builder, Folder4[] folders) { builder.AppendLine(" Folders Information:"); builder.AppendLine(" -------------------------"); - if (folders == null || folders.Length == 0) + if (folders.Length == 0) { builder.AppendLine(" No folders"); builder.AppendLine(); @@ -262,11 +227,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, Folder5[]? folders) + private static void Print(StringBuilder builder, Folder5[] folders) { builder.AppendLine(" Folders Information:"); builder.AppendLine(" -------------------------"); - if (folders == null || folders.Length == 0) + if (folders.Length == 0) { builder.AppendLine(" No folders"); builder.AppendLine(); @@ -289,11 +254,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, File4[]? files) + private static void Print(StringBuilder builder, File4[] files) { builder.AppendLine(" Files Information:"); builder.AppendLine(" -------------------------"); - if (files == null || files.Length == 0) + if (files.Length == 0) { builder.AppendLine(" No files"); builder.AppendLine(); @@ -318,11 +283,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, File6[]? files) + private static void Print(StringBuilder builder, File6[] files) { builder.AppendLine(" Files Information:"); builder.AppendLine(" -------------------------"); - if (files == null || files.Length == 0) + if (files.Length == 0) { builder.AppendLine(" No files"); builder.AppendLine(); @@ -348,11 +313,11 @@ namespace SabreTools.Serialization.Wrappers builder.AppendLine(); } - private static void Print(StringBuilder builder, File7[]? files) + private static void Print(StringBuilder builder, File7[] files) { builder.AppendLine(" Files Information:"); builder.AppendLine(" -------------------------"); - if (files == null || files.Length == 0) + if (files.Length == 0) { builder.AppendLine(" No files"); builder.AppendLine(); diff --git a/SabreTools.Serialization/Wrappers/SGA.cs b/SabreTools.Serialization/Wrappers/SGA.cs index 2004ecfe..4fc26be5 100644 --- a/SabreTools.Serialization/Wrappers/SGA.cs +++ b/SabreTools.Serialization/Wrappers/SGA.cs @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.Wrappers /// /// Directory data /// - public Data.Models.SGA.Directory? Directory => Model.Directory; + public Data.Models.SGA.Directory Directory => Model.Directory; /// /// Number of files in the directory @@ -29,10 +29,10 @@ namespace SabreTools.Serialization.Wrappers { return Directory switch { - Directory4 d4 => d4.Files?.Length ?? 0, - Directory5 d5 => d5.Files?.Length ?? 0, - Directory6 d6 => d6.Files?.Length ?? 0, - Directory7 d7 => d7.Files?.Length ?? 0, + Directory4 d4 => d4.Files.Length, + Directory5 d5 => d5.Files.Length, + Directory6 d6 => d6.Files.Length, + Directory7 d7 => d7.Files.Length, _ => 0, }; } @@ -220,10 +220,10 @@ namespace SabreTools.Serialization.Wrappers // Get the folder Folder? folder = Directory switch { - Directory4 d4 => Array.Find(d4.Folders ?? [], f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), - Directory5 d5 => Array.Find(d5.Folders ?? [], f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), - Directory6 d6 => Array.Find(d6.Folders ?? [], f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), - Directory7 d7 => Array.Find(d7.Folders ?? [], f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), + Directory4 d4 => Array.Find(d4.Folders, f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), + Directory5 d5 => Array.Find(d5.Folders, f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), + Directory6 d6 => Array.Find(d6.Folders, f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), + Directory7 d7 => Array.Find(d7.Folders, f => f != null && index >= f.FileStartIndex && index <= f.FileEndIndex), _ => default, };