From ce1f0d23c92fb3f42dafdb76939beeb4f92524bb Mon Sep 17 00:00:00 2001 From: Jan Laupetin Date: Fri, 25 Jul 2025 22:33:40 +0100 Subject: [PATCH] refactor: merge leaderboard dumpers into a single file --- .../Leaderboard/LeaderboardCommon.cpp | 11 ++++++ src/ObjCommon/Leaderboard/LeaderboardCommon.h | 8 +++++ .../IW4/Leaderboard/LoaderLeaderboardIW4.cpp | 3 +- .../Leaderboard/AssetDumperLeaderboardDef.cpp | 28 --------------- .../Leaderboard/AssetDumperLeaderboardDef.h | 16 --------- .../T6/Leaderboard/JsonLeaderboardDefWriter.h | 11 ------ ...Writer.cpp => LeaderboardJsonDumperT6.cpp} | 34 +++++++++++++------ .../T6/Leaderboard/LeaderboardJsonDumperT6.h | 14 ++++++++ src/ObjWriting/Game/T6/ObjWriterT6.cpp | 5 ++- 9 files changed, 61 insertions(+), 69 deletions(-) create mode 100644 src/ObjCommon/Leaderboard/LeaderboardCommon.cpp create mode 100644 src/ObjCommon/Leaderboard/LeaderboardCommon.h delete mode 100644 src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.cpp delete mode 100644 src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.h delete mode 100644 src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.h rename src/ObjWriting/Game/T6/Leaderboard/{JsonLeaderboardDefWriter.cpp => LeaderboardJsonDumperT6.cpp} (77%) create mode 100644 src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.h diff --git a/src/ObjCommon/Leaderboard/LeaderboardCommon.cpp b/src/ObjCommon/Leaderboard/LeaderboardCommon.cpp new file mode 100644 index 00000000..d3286f36 --- /dev/null +++ b/src/ObjCommon/Leaderboard/LeaderboardCommon.cpp @@ -0,0 +1,11 @@ +#include "LeaderboardCommon.h" + +#include + +namespace leaderboard +{ + std::string GetJsonFileNameForAsset(const std::string& assetName) + { + return std::format("leaderboards/{}.json", assetName); + } +} // namespace leaderboard diff --git a/src/ObjCommon/Leaderboard/LeaderboardCommon.h b/src/ObjCommon/Leaderboard/LeaderboardCommon.h new file mode 100644 index 00000000..ab6958b1 --- /dev/null +++ b/src/ObjCommon/Leaderboard/LeaderboardCommon.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +namespace leaderboard +{ + std::string GetJsonFileNameForAsset(const std::string& assetName); +} diff --git a/src/ObjLoading/Game/IW4/Leaderboard/LoaderLeaderboardIW4.cpp b/src/ObjLoading/Game/IW4/Leaderboard/LoaderLeaderboardIW4.cpp index 550472dc..60f4418e 100644 --- a/src/ObjLoading/Game/IW4/Leaderboard/LoaderLeaderboardIW4.cpp +++ b/src/ObjLoading/Game/IW4/Leaderboard/LoaderLeaderboardIW4.cpp @@ -2,6 +2,7 @@ #include "Game/IW4/IW4.h" #include "JsonLeaderboardDefLoader.h" +#include "Leaderboard/LeaderboardCommon.h" #include #include @@ -22,7 +23,7 @@ namespace AssetCreationResult CreateAsset(const std::string& assetName, AssetCreationContext& context) override { - const auto file = m_search_path.Open(std::format("leaderboards/{}.json", assetName)); + const auto file = m_search_path.Open(leaderboard::GetJsonFileNameForAsset(assetName)); if (!file.IsOpen()) return AssetCreationResult::NoAction(); diff --git a/src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.cpp b/src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.cpp deleted file mode 100644 index 2d83e5bd..00000000 --- a/src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "AssetDumperLeaderboardDef.h" - -#include "Game/T6/Leaderboard/JsonLeaderboardDefWriter.h" - -#include -#include - -using namespace T6; - -std::string AssetDumperLeaderboardDef::GetFileNameForAsset(const std::string& assetName) -{ - return std::format("leaderboards/{}.json", assetName); -} - -bool AssetDumperLeaderboardDef::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperLeaderboardDef::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto assetFile = context.OpenAssetFile(GetFileNameForAsset(asset->m_name)); - - if (!assetFile) - return; - - DumpLeaderboardDefAsJson(*assetFile, asset->Asset()); -} diff --git a/src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.h b/src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.h deleted file mode 100644 index 057d4252..00000000 --- a/src/ObjWriting/Game/T6/Leaderboard/AssetDumperLeaderboardDef.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Dumping/AbstractAssetDumper.h" -#include "Game/T6/T6.h" - -namespace T6 -{ - class AssetDumperLeaderboardDef final : public AbstractAssetDumper - { - static std::string GetFileNameForAsset(const std::string& assetName); - - protected: - _NODISCARD bool ShouldDump(XAssetInfo* asset) override; - void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; - }; -} // namespace T6 diff --git a/src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.h b/src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.h deleted file mode 100644 index cdc31389..00000000 --- a/src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Dumping/AssetDumpingContext.h" -#include "Game/T6/T6.h" - -#include - -namespace T6 -{ - void DumpLeaderboardDefAsJson(std::ostream& stream, const LeaderboardDef* leaderboardDef); -} // namespace T6 diff --git a/src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.cpp b/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp similarity index 77% rename from src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.cpp rename to src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp index a559881f..5e468579 100644 --- a/src/ObjWriting/Game/T6/Leaderboard/JsonLeaderboardDefWriter.cpp +++ b/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp @@ -1,28 +1,32 @@ -#include "JsonLeaderboardDefWriter.h" +#include "LeaderboardJsonDumperT6.h" #include "Game/T6/CommonT6.h" #include "Game/T6/Leaderboard/JsonLeaderboardDef.h" +#include "Leaderboard/LeaderboardCommon.h" +#include #include #include +#include using namespace nlohmann; using namespace T6; +using namespace ::leaderboard; namespace { - class JsonDumper + class Dumper { public: - explicit JsonDumper(std::ostream& stream) + explicit Dumper(std::ostream& stream) : m_stream(stream) { } - void Dump(const LeaderboardDef* leaderboardDef) const + void Dump(const LeaderboardDef& leaderboardDef) const { JsonLeaderboardDef jsonLeaderboardDef; - CreateJsonLeaderboardDef(jsonLeaderboardDef, *leaderboardDef); + CreateJsonLeaderboardDef(jsonLeaderboardDef, leaderboardDef); json jRoot = jsonLeaderboardDef; @@ -94,11 +98,21 @@ namespace }; } // namespace -namespace T6 +namespace T6::leaderboard { - void DumpLeaderboardDefAsJson(std::ostream& stream, const LeaderboardDef* leaderboardDef) + bool JsonDumper::ShouldDump(XAssetInfo* asset) { - JsonDumper dumper(stream); - dumper.Dump(leaderboardDef); + return true; } -} // namespace T6 + + void JsonDumper::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) + { + const auto assetFile = context.OpenAssetFile(GetJsonFileNameForAsset(asset->m_name)); + + if (!assetFile) + return; + + Dumper dumper(*assetFile); + dumper.Dump(*asset->Asset()); + } +} // namespace T6::leaderboard diff --git a/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.h b/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.h new file mode 100644 index 00000000..85d18061 --- /dev/null +++ b/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.h @@ -0,0 +1,14 @@ +#pragma once + +#include "Dumping/AbstractAssetDumper.h" +#include "Game/T6/T6.h" + +namespace T6::leaderboard +{ + class JsonDumper final : public AbstractAssetDumper + { + protected: + [[nodiscard]] bool ShouldDump(XAssetInfo* asset) override; + void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; + }; +} // namespace T6::leaderboard diff --git a/src/ObjWriting/Game/T6/ObjWriterT6.cpp b/src/ObjWriting/Game/T6/ObjWriterT6.cpp index 48d3dd34..21c45d73 100644 --- a/src/ObjWriting/Game/T6/ObjWriterT6.cpp +++ b/src/ObjWriting/Game/T6/ObjWriterT6.cpp @@ -4,7 +4,7 @@ #include "Game/T6/GameAssetPoolT6.h" #include "Game/T6/XModel/XModelDumperT6.h" #include "Image/AssetDumperGfxImage.h" -#include "Leaderboard/AssetDumperLeaderboardDef.h" +#include "Leaderboard/LeaderboardJsonDumperT6.h" #include "Localize/AssetDumperLocalizeEntry.h" #include "Maps/AssetDumperMapEnts.h" #include "Material/DumperMaterialT6.h" @@ -27,7 +27,6 @@ #include "Weapon/AssetDumperWeaponCamo.h" #include "ZBarrier/AssetDumperZBarrier.h" - using namespace T6; bool ObjWriter::DumpZone(AssetDumpingContext& context) const @@ -72,7 +71,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const // DUMP_ASSET_POOL(AssetDumperFxImpactTable, m_fx_impact_table, ASSET_TYPE_IMPACT_FX) DUMP_ASSET_POOL(AssetDumperRawFile, m_raw_file, ASSET_TYPE_RAWFILE) DUMP_ASSET_POOL(AssetDumperStringTable, m_string_table, ASSET_TYPE_STRINGTABLE) - DUMP_ASSET_POOL(AssetDumperLeaderboardDef, m_leaderboard, ASSET_TYPE_LEADERBOARD) + DUMP_ASSET_POOL(leaderboard::JsonDumper, m_leaderboard, ASSET_TYPE_LEADERBOARD) // DUMP_ASSET_POOL(AssetDumperXGlobals, m_xglobals, ASSET_TYPE_XGLOBALS) // DUMP_ASSET_POOL(AssetDumperDDLRoot, m_ddl, ASSET_TYPE_DDL) // DUMP_ASSET_POOL(AssetDumperGlasses, m_glasses, ASSET_TYPE_GLASSES)