From f47387c3a4193bc8f0e59d9d9ad5c04b2d6f011b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 13 Sep 2023 10:41:24 -0400 Subject: [PATCH] Port BSP to new printing --- BinaryObjectScanner.Printing/BSP.cs | 162 ++++++++++++++++++++++++++++ BinaryObjectScanner.Wrappers/BSP.cs | 138 +----------------------- 2 files changed, 163 insertions(+), 137 deletions(-) create mode 100644 BinaryObjectScanner.Printing/BSP.cs diff --git a/BinaryObjectScanner.Printing/BSP.cs b/BinaryObjectScanner.Printing/BSP.cs new file mode 100644 index 00000000..a5ef7462 --- /dev/null +++ b/BinaryObjectScanner.Printing/BSP.cs @@ -0,0 +1,162 @@ +using System.Text; +using SabreTools.Models.BSP; +using static SabreTools.Models.BSP.Constants; + +namespace BinaryObjectScanner.Printing +{ + public static class BSP + { + public static void Print(StringBuilder builder, File file) + { + builder.AppendLine("BSP Information:"); + builder.AppendLine("-------------------------"); + builder.AppendLine(); + + Print(builder, file.Header); + Print(builder, file.Lumps); + Print(builder, file.TextureHeader); + Print(builder, file.Textures); + } + +#if NET48 + private static void Print(StringBuilder builder, Header header) +#else + private static void Print(StringBuilder builder, Header? header) +#endif + { + builder.AppendLine(" Header Information:"); + builder.AppendLine(" -------------------------"); + if (header == null) + { + builder.AppendLine(" No header"); + builder.AppendLine(); + return; + } + + builder.AppendLine($" Version: {header.Version} (0x{header.Version:X})"); + builder.AppendLine(); + } + +#if NET48 + private static void Print(StringBuilder builder, Lump[] lumps) +#else + private static void Print(StringBuilder builder, Lump?[]? lumps) +#endif + { + builder.AppendLine(" Lumps Information:"); + builder.AppendLine(" -------------------------"); + if (lumps == null || lumps.Length == 0) + { + builder.AppendLine(" No lumps"); + builder.AppendLine(); + return; + } + + for (int i = 0; i < lumps.Length; i++) + { + var lump = lumps[i]; + string specialLumpName = string.Empty; + switch (i) + { + case HL_BSP_LUMP_ENTITIES: + specialLumpName = " (entities)"; + break; + case HL_BSP_LUMP_TEXTUREDATA: + specialLumpName = " (texture data)"; + break; + } + + builder.AppendLine($" Lump {i}{specialLumpName}"); + if (lump == null) + { + builder.AppendLine(" [NULL]"); + continue; + } + + builder.AppendLine($" Offset: {lump.Offset} (0x{lump.Offset:X})"); + builder.AppendLine($" Length: {lump.Length} (0x{lump.Length:X})"); + } + builder.AppendLine(); + } + +#if NET48 + private static void Print(StringBuilder builder, TextureHeader header) +#else + private static void Print(StringBuilder builder, TextureHeader? header) +#endif + { + builder.AppendLine(" Texture Header Information:"); + builder.AppendLine(" -------------------------"); + if (header == null) + { + builder.AppendLine(" No texture header"); + builder.AppendLine(); + return; + } + + builder.AppendLine($" Texture count: {header.TextureCount}"); + builder.AppendLine($" Offsets:"); + if (header.Offsets == null || header.Offsets.Length == 0) + { + builder.AppendLine(" No offsets"); + builder.AppendLine(); + return; + } + + for (int i = 0; i < header.Offsets.Length; i++) + { + builder.AppendLine($" Offset {i}: {header.Offsets[i]} (0x{header.Offsets[i]:X})"); + } + builder.AppendLine(); + } + +#if NET48 + private static void Print(StringBuilder builder, Texture[] textures) +#else + private static void Print(StringBuilder builder, Texture?[]? textures) +#endif + { + builder.AppendLine(" Textures Information:"); + builder.AppendLine(" -------------------------"); + if (textures == null || textures.Length == 0) + { + builder.AppendLine(" No textures"); + builder.AppendLine(); + return; + } + + for (int i = 0; i < textures.Length; i++) + { + var texture = textures[i]; + builder.AppendLine($" Texture {i}"); + if (texture == null) + { + builder.AppendLine(" [NULL]"); + continue; + } + + builder.AppendLine($" Name: {texture.Name}"); + builder.AppendLine($" Width: {texture.Width} (0x{texture.Width:X})"); + builder.AppendLine($" Height: {texture.Height} (0x{texture.Height:X})"); + builder.AppendLine($" Offsets:"); + if (texture.Offsets == null || texture.Offsets.Length == 0) + { + builder.AppendLine($" No offsets"); + continue; + } + else + { + for (int j = 0; j < texture.Offsets.Length; j++) + { + builder.AppendLine($" Offset {j}: {texture.Offsets[i]} (0x{texture.Offsets[j]:X})"); + } + } + // Skip texture data + builder.AppendLine($" Palette size: {texture.PaletteSize} (0x{texture.PaletteSize:X})"); + // Skip palette data + } + builder.AppendLine(); + } + + } +} \ No newline at end of file diff --git a/BinaryObjectScanner.Wrappers/BSP.cs b/BinaryObjectScanner.Wrappers/BSP.cs index 389eb105..5bec791d 100644 --- a/BinaryObjectScanner.Wrappers/BSP.cs +++ b/BinaryObjectScanner.Wrappers/BSP.cs @@ -156,146 +156,10 @@ namespace BinaryObjectScanner.Wrappers public override StringBuilder PrettyPrint() { StringBuilder builder = new StringBuilder(); - - builder.AppendLine("BSP Information:"); - builder.AppendLine("-------------------------"); - builder.AppendLine(); - - PrintHeader(builder); - PrintLumps(builder); - PrintTextureHeader(builder); - PrintTextures(builder); - + Printing.BSP.Print(builder, _model); return builder; } - /// - /// Print header information - /// - /// StringBuilder to append information to - private void PrintHeader(StringBuilder builder) - { - builder.AppendLine(" Header Information:"); - builder.AppendLine(" -------------------------"); - builder.AppendLine($" Version: {Version} (0x{Version:X})"); - builder.AppendLine(); - } - - /// - /// Print lumps information - /// - /// StringBuilder to append information to - private void PrintLumps(StringBuilder builder) - { - builder.AppendLine(" Lumps Information:"); - builder.AppendLine(" -------------------------"); - if (Lumps == null || Lumps.Length == 0) - { - builder.AppendLine(" No lumps"); - } - else - { - for (int i = 0; i < Lumps.Length; i++) - { - var lump = Lumps[i]; - string specialLumpName = string.Empty; - switch (i) - { - case HL_BSP_LUMP_ENTITIES: - specialLumpName = " (entities)"; - break; - case HL_BSP_LUMP_TEXTUREDATA: - specialLumpName = " (texture data)"; - break; - } - - builder.AppendLine($" Lump {i}{specialLumpName}"); - if (lump == null) - { - builder.AppendLine(" [NULL]"); - } - else - { - builder.AppendLine($" Offset: {lump.Offset} (0x{lump.Offset:X})"); - builder.AppendLine($" Length: {lump.Length} (0x{lump.Length:X})"); - } - } - } - builder.AppendLine(); - } - - /// - /// Print texture header information - /// - /// StringBuilder to append information to - private void PrintTextureHeader(StringBuilder builder) - { - builder.AppendLine(" Texture Header Information:"); - builder.AppendLine(" -------------------------"); - builder.AppendLine($" Texture count: {TextureCount}"); - builder.AppendLine($" Offsets:"); - if (Offsets == null || Offsets.Length == 0) - { - builder.AppendLine(" No offsets"); - } - else - { - for (int i = 0; i < Offsets.Length; i++) - { - builder.AppendLine($" Offset {i}: {Offsets[i]} (0x{Offsets[i]:X})"); - } - } - builder.AppendLine(); - } - - /// - /// Print textures information - /// - /// StringBuilder to append information to - private void PrintTextures(StringBuilder builder) - { - builder.AppendLine(" Textures Information:"); - builder.AppendLine(" -------------------------"); - if (Textures == null || Textures.Length == 0) - { - builder.AppendLine(" No textures"); - } - else - { - for (int i = 0; i < Textures.Length; i++) - { - var texture = Textures[i]; - builder.AppendLine($" Texture {i}"); - if (texture == null) - { - builder.AppendLine(" [NULL]"); - } - else - { - builder.AppendLine($" Name: {texture.Name}"); - builder.AppendLine($" Width: {texture.Width} (0x{texture.Width:X})"); - builder.AppendLine($" Height: {texture.Height} (0x{texture.Height:X})"); - builder.AppendLine($" Offsets:"); - if (texture.Offsets == null || texture.Offsets.Length == 0) - { - builder.AppendLine($" No offsets"); - } - else - { - for (int j = 0; j < texture.Offsets.Length; j++) - { - builder.AppendLine($" Offset {j}: {texture.Offsets[i]} (0x{texture.Offsets[j]:X})"); - } - } - // Skip texture data - builder.AppendLine($" Palette size: {texture.PaletteSize} (0x{texture.PaletteSize:X})"); - // Skip palette data - } - } - } - builder.AppendLine(); - } - #if NET6_0_OR_GREATER ///