From 9885a4ce938604c4299af4be857d5aa09b8f409a Mon Sep 17 00:00:00 2001 From: Jan Laupetin Date: Tue, 29 Jul 2025 22:51:56 +0100 Subject: [PATCH] refactor: streamline map assets dumper --- .../Game/IW3/Maps/AssetDumperMapEnts.cpp | 20 -------------- .../Game/IW3/Maps/MapEntsDumperIW3.cpp | 23 ++++++++++++++++ ...ssetDumperMapEnts.h => MapEntsDumperIW3.h} | 6 ++--- src/ObjWriting/Game/IW3/ObjWriterIW3.cpp | 4 +-- .../Game/IW4/Maps/AddonMapEntsDumperIW4.cpp | 27 +++++++++++++++++++ ...AddonMapEnts.h => AddonMapEntsDumperIW4.h} | 6 ++--- .../Game/IW4/Maps/AssetDumperAddonMapEnts.cpp | 24 ----------------- src/ObjWriting/Game/IW4/ObjWriterIW4.cpp | 4 +-- .../Game/IW5/Maps/AddonMapEntsDumperIW5.cpp | 26 ++++++++++++++++++ ...AddonMapEnts.h => AddonMapEntsDumperIW5.h} | 6 ++--- .../Game/IW5/Maps/AssetDumperAddonMapEnts.cpp | 23 ---------------- src/ObjWriting/Game/IW5/ObjWriterIW5.cpp | 4 +-- .../Game/T6/Maps/AssetDumperMapEnts.cpp | 23 ---------------- .../Game/T6/Maps/MapEntsDumperT6.cpp | 26 ++++++++++++++++++ ...AssetDumperMapEnts.h => MapEntsDumperT6.h} | 6 ++--- src/ObjWriting/Game/T6/ObjWriterT6.cpp | 4 +-- 16 files changed, 122 insertions(+), 110 deletions(-) delete mode 100644 src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.cpp create mode 100644 src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.cpp rename src/ObjWriting/Game/IW3/Maps/{AssetDumperMapEnts.h => MapEntsDumperIW3.h} (69%) create mode 100644 src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.cpp rename src/ObjWriting/Game/IW4/Maps/{AssetDumperAddonMapEnts.h => AddonMapEntsDumperIW4.h} (67%) delete mode 100644 src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.cpp create mode 100644 src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.cpp rename src/ObjWriting/Game/IW5/Maps/{AssetDumperAddonMapEnts.h => AddonMapEntsDumperIW5.h} (67%) delete mode 100644 src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.cpp delete mode 100644 src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.cpp create mode 100644 src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.cpp rename src/ObjWriting/Game/T6/Maps/{AssetDumperMapEnts.h => MapEntsDumperT6.h} (70%) diff --git a/src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.cpp b/src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.cpp deleted file mode 100644 index 9e9cd441..00000000 --- a/src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "AssetDumperMapEnts.h" - -using namespace IW3; - -bool AssetDumperMapEnts::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperMapEnts::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* mapEnts = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name + ".ents"); - - if (!assetFile) - return; - - auto& stream = *assetFile; - stream.write(mapEnts->entityString, mapEnts->numEntityChars); -} diff --git a/src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.cpp b/src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.cpp new file mode 100644 index 00000000..abe0e937 --- /dev/null +++ b/src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.cpp @@ -0,0 +1,23 @@ +#include "MapEntsDumperIW3.h" + +using namespace IW3; + +namespace IW3::map_ents +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* mapEnts = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name + ".ents"); + + if (!assetFile) + return; + + auto& stream = *assetFile; + stream.write(mapEnts->entityString, mapEnts->numEntityChars); + } +} // namespace IW3::map_ents diff --git a/src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.h b/src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.h similarity index 69% rename from src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.h rename to src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.h index c769bec0..55518202 100644 --- a/src/ObjWriting/Game/IW3/Maps/AssetDumperMapEnts.h +++ b/src/ObjWriting/Game/IW3/Maps/MapEntsDumperIW3.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/IW3/IW3.h" -namespace IW3 +namespace IW3::map_ents { - class AssetDumperMapEnts final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace IW3 +} // namespace IW3::map_ents diff --git a/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp b/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp index 4f9b11b7..9149fc70 100644 --- a/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp +++ b/src/ObjWriting/Game/IW3/ObjWriterIW3.cpp @@ -4,7 +4,7 @@ #include "Game/IW3/XModel/XModelDumperIW3.h" #include "Image/ImageDumperIW3.h" #include "Localize/LocalizeDumperIW3.h" -#include "Maps/AssetDumperMapEnts.h" +#include "Maps/MapEntsDumperIW3.h" #include "Material/DumperMaterialIW3.h" #include "ObjWriting.h" #include "RawFile/AssetDumperRawFile.h" @@ -38,7 +38,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperComWorld, m_com_world, ASSET_TYPE_COMWORLD) // DUMP_ASSET_POOL(AssetDumperGameWorldSp, m_game_world_sp, ASSET_TYPE_GAMEWORLD_SP) // DUMP_ASSET_POOL(AssetDumperGameWorldMp, m_game_world_mp, ASSET_TYPE_GAMEWORLD_MP) - DUMP_ASSET_POOL(AssetDumperMapEnts, m_map_ents, ASSET_TYPE_MAP_ENTS) + DUMP_ASSET_POOL(map_ents::Dumper, m_map_ents, ASSET_TYPE_MAP_ENTS) // DUMP_ASSET_POOL(AssetDumperGfxWorld, m_gfx_world, ASSET_TYPE_GFXWORLD) // DUMP_ASSET_POOL(AssetDumperGfxLightDef, m_gfx_light_def, ASSET_TYPE_LIGHT_DEF) // DUMP_ASSET_POOL(AssetDumperFont_s, m_font, ASSET_TYPE_FONT) diff --git a/src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.cpp b/src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.cpp new file mode 100644 index 00000000..7f708cc0 --- /dev/null +++ b/src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.cpp @@ -0,0 +1,27 @@ +#define NOMINMAX +#include "AddonMapEntsDumperIW4.h" + +#include + +using namespace IW4; + +namespace IW4::addon_map_ents +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* addonMapEnts = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + auto& stream = *assetFile; + + stream.write(addonMapEnts->entityString, std::max(addonMapEnts->numEntityChars - 1, 0)); + } +} // namespace IW4::addon_map_ents diff --git a/src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.h b/src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.h similarity index 67% rename from src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.h rename to src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.h index 8a5ad601..a4691a78 100644 --- a/src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.h +++ b/src/ObjWriting/Game/IW4/Maps/AddonMapEntsDumperIW4.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/IW4/IW4.h" -namespace IW4 +namespace IW4::addon_map_ents { - class AssetDumperAddonMapEnts final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace IW4 +} // namespace IW4::addon_map_ents diff --git a/src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.cpp b/src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.cpp deleted file mode 100644 index 58c745c5..00000000 --- a/src/ObjWriting/Game/IW4/Maps/AssetDumperAddonMapEnts.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#define NOMINMAX -#include "AssetDumperAddonMapEnts.h" - -#include - -using namespace IW4; - -bool AssetDumperAddonMapEnts::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperAddonMapEnts::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* addonMapEnts = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - auto& stream = *assetFile; - - stream.write(addonMapEnts->entityString, std::max(addonMapEnts->numEntityChars - 1, 0)); -} diff --git a/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp b/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp index 13ae2541..417ec52b 100644 --- a/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp +++ b/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp @@ -6,7 +6,7 @@ #include "Leaderboard/LeaderboardJsonDumperIW4.h" #include "LightDef/LightDefDumperIW4.h" #include "Localize/LocalizeDumperIW4.h" -#include "Maps/AssetDumperAddonMapEnts.h" +#include "Maps/AddonMapEntsDumperIW4.h" #include "Material/DumperMaterialIW4.h" #include "Menu/AssetDumperMenuDef.h" #include "Menu/AssetDumperMenuList.h" @@ -72,7 +72,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const DUMP_ASSET_POOL(AssetDumperStructuredDataDefSet, m_structed_data_def_set, ASSET_TYPE_STRUCTURED_DATA_DEF) DUMP_ASSET_POOL(AssetDumperTracer, m_tracer, ASSET_TYPE_TRACER) DUMP_ASSET_POOL(AssetDumperVehicle, m_vehicle, ASSET_TYPE_VEHICLE) - DUMP_ASSET_POOL(AssetDumperAddonMapEnts, m_addon_map_ents, ASSET_TYPE_ADDON_MAP_ENTS) + DUMP_ASSET_POOL(addon_map_ents::Dumper, m_addon_map_ents, ASSET_TYPE_ADDON_MAP_ENTS) return true; diff --git a/src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.cpp b/src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.cpp new file mode 100644 index 00000000..5c2cc0c4 --- /dev/null +++ b/src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.cpp @@ -0,0 +1,26 @@ +#define NOMINMAX +#include "AddonMapEntsDumperIW5.h" + +#include + +using namespace IW5; + +namespace IW5::addon_map_ents +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* addonMapEnts = asset->Asset(); + const auto assetFile = context.OpenAssetFile(asset->m_name); + + if (!assetFile) + return; + + auto& stream = *assetFile; + stream.write(addonMapEnts->entityString, std::max(addonMapEnts->numEntityChars - 1, 0)); + } +} // namespace IW5::addon_map_ents diff --git a/src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.h b/src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.h similarity index 67% rename from src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.h rename to src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.h index 9e5ec39d..928fc8e1 100644 --- a/src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.h +++ b/src/ObjWriting/Game/IW5/Maps/AddonMapEntsDumperIW5.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/IW5/IW5.h" -namespace IW5 +namespace IW5::addon_map_ents { - class AssetDumperAddonMapEnts final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace IW5 +} // namespace IW5::addon_map_ents diff --git a/src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.cpp b/src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.cpp deleted file mode 100644 index 547881cf..00000000 --- a/src/ObjWriting/Game/IW5/Maps/AssetDumperAddonMapEnts.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#define NOMINMAX -#include "AssetDumperAddonMapEnts.h" - -#include - -using namespace IW5; - -bool AssetDumperAddonMapEnts::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperAddonMapEnts::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* addonMapEnts = asset->Asset(); - const auto assetFile = context.OpenAssetFile(asset->m_name); - - if (!assetFile) - return; - - auto& stream = *assetFile; - stream.write(addonMapEnts->entityString, std::max(addonMapEnts->numEntityChars - 1, 0)); -} diff --git a/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp b/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp index ee374cc4..b08d609f 100644 --- a/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp +++ b/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp @@ -5,7 +5,7 @@ #include "Image/ImageDumperIW5.h" #include "Leaderboard/LeaderboardJsonDumperIW5.h" #include "Localize/LocalizeDumperIW5.h" -#include "Maps/AssetDumperAddonMapEnts.h" +#include "Maps/AddonMapEntsDumperIW5.h" #include "Material/DumperMaterialIW5.h" #include "Menu/AssetDumperMenuDef.h" #include "Menu/AssetDumperMenuList.h" @@ -68,7 +68,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperStructuredDataDefSet, m_structed_data_def_set, ASSET_TYPE_STRUCTURED_DATA_DEF) // DUMP_ASSET_POOL(AssetDumperTracerDef, m_tracer, ASSET_TYPE_TRACER) // DUMP_ASSET_POOL(AssetDumperVehicleDef, m_vehicle, ASSET_TYPE_VEHICLE) - DUMP_ASSET_POOL(AssetDumperAddonMapEnts, m_addon_map_ents, ASSET_TYPE_ADDON_MAP_ENTS) + DUMP_ASSET_POOL(addon_map_ents::Dumper, m_addon_map_ents, ASSET_TYPE_ADDON_MAP_ENTS) return true; diff --git a/src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.cpp b/src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.cpp deleted file mode 100644 index cd4a8165..00000000 --- a/src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "AssetDumperMapEnts.h" - -#include - -using namespace T6; - -bool AssetDumperMapEnts::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperMapEnts::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto* mapEnts = asset->Asset(); - - const auto mapEntsFile = context.OpenAssetFile(std::format("{}.ents", mapEnts->name)); - - if (!mapEntsFile) - return; - - auto& stream = *mapEntsFile; - stream.write(mapEnts->entityString, mapEnts->numEntityChars - 1); -} diff --git a/src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.cpp b/src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.cpp new file mode 100644 index 00000000..7dce7a29 --- /dev/null +++ b/src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.cpp @@ -0,0 +1,26 @@ +#include "MapEntsDumperT6.h" + +#include + +using namespace T6; + +namespace T6::map_ents +{ + bool Dumper::ShouldDump(XAssetInfo* asset) + { + return true; + } + + void Dumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto* mapEnts = asset->Asset(); + + const auto mapEntsFile = context.OpenAssetFile(std::format("{}.ents", mapEnts->name)); + + if (!mapEntsFile) + return; + + auto& stream = *mapEntsFile; + stream.write(mapEnts->entityString, mapEnts->numEntityChars - 1); + } +} // namespace T6::map_ents diff --git a/src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.h b/src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.h similarity index 70% rename from src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.h rename to src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.h index 98b0301a..9fc7a6b8 100644 --- a/src/ObjWriting/Game/T6/Maps/AssetDumperMapEnts.h +++ b/src/ObjWriting/Game/T6/Maps/MapEntsDumperT6.h @@ -3,12 +3,12 @@ #include "Dumping/AbstractAssetDumper.h" #include "Game/T6/T6.h" -namespace T6 +namespace T6::map_ents { - class AssetDumperMapEnts final : public AbstractAssetDumper + class Dumper final : public AbstractAssetDumper { protected: bool ShouldDump(XAssetInfo* asset) override; void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; }; -} // namespace T6 +} // namespace T6::map_ents diff --git a/src/ObjWriting/Game/T6/ObjWriterT6.cpp b/src/ObjWriting/Game/T6/ObjWriterT6.cpp index 97f4143d..54dc5056 100644 --- a/src/ObjWriting/Game/T6/ObjWriterT6.cpp +++ b/src/ObjWriting/Game/T6/ObjWriterT6.cpp @@ -6,7 +6,7 @@ #include "Image/ImageDumperT6.h" #include "Leaderboard/LeaderboardJsonDumperT6.h" #include "Localize/LocalizeDumperT6.h" -#include "Maps/AssetDumperMapEnts.h" +#include "Maps/MapEntsDumperT6.h" #include "Material/DumperMaterialT6.h" #include "ObjWriting.h" #include "PhysConstraints/AssetDumperPhysConstraints.h" @@ -60,7 +60,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperComWorld, m_com_world, ASSET_TYPE_COMWORLD) // DUMP_ASSET_POOL(AssetDumperGameWorldSp, m_game_world_sp, ASSET_TYPE_GAMEWORLD_SP) // DUMP_ASSET_POOL(AssetDumperGameWorldMp, m_game_world_mp, ASSET_TYPE_GAMEWORLD_MP) - DUMP_ASSET_POOL(AssetDumperMapEnts, m_map_ents, ASSET_TYPE_MAP_ENTS) + DUMP_ASSET_POOL(map_ents::Dumper, m_map_ents, ASSET_TYPE_MAP_ENTS) // DUMP_ASSET_POOL(AssetDumperGfxWorld, m_gfx_world, ASSET_TYPE_GFXWORLD) // DUMP_ASSET_POOL(AssetDumperGfxLightDef, m_gfx_light_def, ASSET_TYPE_LIGHT_DEF) // DUMP_ASSET_POOL(AssetDumperFont, m_font, ASSET_TYPE_FONT)