diff --git a/SabreTools.Serialization/Printer.cs b/SabreTools.Serialization/Printer.cs index 9b366cf9..d0f6fbbd 100644 --- a/SabreTools.Serialization/Printer.cs +++ b/SabreTools.Serialization/Printer.cs @@ -73,7 +73,7 @@ namespace SabreTools.Serialization Wrapper.WAD3 item => item.PrettyPrint(), Wrapper.WiseOverlayHeader item => item.PrettyPrint(), Wrapper.WiseScript item => item.PrettyPrint(), - // TODO: Add implementation for WiseSectionHeader + Wrapper.WiseSectionHeader item => item.PrettyPrint(), Wrapper.XeMID item => item.PrettyPrint(), Wrapper.XMID item => item.PrettyPrint(), Wrapper.XZP item => item.PrettyPrint(), @@ -128,7 +128,7 @@ namespace SabreTools.Serialization Wrapper.WAD3 item => item.ExportJSON(), Wrapper.WiseOverlayHeader item => item.ExportJSON(), Wrapper.WiseScript item => item.ExportJSON(), - // TODO: Add implementation for WiseSectionHeader + Wrapper.WiseSectionHeader item => item.ExportJSON(), Wrapper.XeMID item => item.ExportJSON(), Wrapper.XMID item => item.ExportJSON(), Wrapper.XZP item => item.ExportJSON(), @@ -529,6 +529,16 @@ namespace SabreTools.Serialization return builder; } + /// + /// Export the item information as pretty-printed text + /// + private static StringBuilder PrettyPrint(this Wrapper.WiseSectionHeader item) + { + var builder = new StringBuilder(); + WiseSectionHeader.Print(builder, item.Model); + return builder; + } + /// /// Export the item information as pretty-printed text /// diff --git a/SabreTools.Serialization/Printers/WiseSectionHeader.cs b/SabreTools.Serialization/Printers/WiseSectionHeader.cs new file mode 100644 index 00000000..bc56fe52 --- /dev/null +++ b/SabreTools.Serialization/Printers/WiseSectionHeader.cs @@ -0,0 +1,60 @@ +using System.Text; +using SabreTools.Models.WiseInstaller; +using SabreTools.Serialization.Interfaces; + +namespace SabreTools.Serialization.Printers +{ + public class WiseSectionHeader : IPrinter + { + /// + public void PrintInformation(StringBuilder builder, SectionHeader model) + => Print(builder, model); + + public static void Print(StringBuilder builder, SectionHeader header) + { + builder.AppendLine("Wise Section Header Information:"); + builder.AppendLine("-------------------------"); + builder.AppendLine(header.UnknownDataSize, "Unknown data size"); + builder.AppendLine(header.SecondExecutableFileEntryLength, "Second executable file entry length"); + builder.AppendLine(header.UnknownValue2, "Unknown value 2"); + builder.AppendLine(header.UnknownValue3, "Unknown value 3"); + builder.AppendLine(header.UnknownValue4, "Unknown value 4"); + builder.AppendLine(header.FirstExecutableFileEntryLength, "First executable file entry length"); + builder.AppendLine(header.MsiFileEntryLength, "MSI file entry length"); + builder.AppendLine(header.UnknownValue7, "Unknown value 7"); + builder.AppendLine(header.UnknownValue8, "Unknown value 8"); + builder.AppendLine(header.ThirdExecutableFileEntryLength, "Third executable file entry length"); + builder.AppendLine(header.UnknownValue10, "Unknown value 10"); + builder.AppendLine(header.UnknownValue11, "Unknown value 11"); + builder.AppendLine(header.UnknownValue12, "Unknown value 12"); + builder.AppendLine(header.UnknownValue13, "Unknown value 13"); + builder.AppendLine(header.UnknownValue14, "Unknown value 14"); + builder.AppendLine(header.UnknownValue15, "Unknown value 15"); + builder.AppendLine(header.UnknownValue16, "Unknown value 16"); + builder.AppendLine(header.UnknownValue17, "Unknown value 17"); + builder.AppendLine(header.UnknownValue18, "Unknown value 18"); + builder.AppendLine(header.Version, "Version"); + builder.AppendLine(header.TmpString, "TMP string"); + builder.AppendLine(header.GuidString, "GUID string"); + builder.AppendLine(header.NonWiseVersion, "Non-Wise version"); + builder.AppendLine(header.PreFontValue, "Pre-font value"); + builder.AppendLine(header.FontSize, "Font size"); + builder.AppendLine(header.PreStringValues, "Pre-string values"); + builder.AppendLine(); + builder.AppendLine("Strings:"); + if (header.Strings == null || header.Strings.Length == 0) + { + builder.AppendLine(" No strings"); + } + else + { + for (int i = 0; i < header.Strings.Length; i++) + { + var entry = header.Strings[i]; + builder.AppendLine($" String {i}: {entry}"); + } + } + builder.AppendLine(); + } + } +} \ No newline at end of file