diff --git a/src/ObjWriting/Game/IW4/Leaderboard/AssetDumperLeaderboardDef.cpp b/src/ObjWriting/Game/IW4/Leaderboard/AssetDumperLeaderboardDef.cpp deleted file mode 100644 index a761b471..00000000 --- a/src/ObjWriting/Game/IW4/Leaderboard/AssetDumperLeaderboardDef.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "AssetDumperLeaderboardDef.h" - -#include "Game/IW4/Leaderboard/JsonLeaderboardDefWriter.h" - -#include -#include - -using namespace IW4; - -bool AssetDumperLeaderboardDef::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperLeaderboardDef::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto assetName = asset->m_name; - const auto assetFile = context.OpenAssetFile(std::format("leaderboards/{}.json", assetName)); - - if (!assetFile) - return; - - DumpLeaderboardDefAsJson(*assetFile, asset->Asset()); -} diff --git a/src/ObjWriting/Game/IW4/Leaderboard/AssetDumperLeaderboardDef.h b/src/ObjWriting/Game/IW4/Leaderboard/AssetDumperLeaderboardDef.h deleted file mode 100644 index c8a344bf..00000000 --- a/src/ObjWriting/Game/IW4/Leaderboard/AssetDumperLeaderboardDef.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "Dumping/AbstractAssetDumper.h" -#include "Game/IW4/IW4.h" - -namespace IW4 -{ - class AssetDumperLeaderboardDef final : public AbstractAssetDumper - { - protected: - _NODISCARD bool ShouldDump(XAssetInfo* asset) override; - void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; - }; -} // namespace IW4 diff --git a/src/ObjWriting/Game/IW4/Leaderboard/JsonLeaderboardDefWriter.h b/src/ObjWriting/Game/IW4/Leaderboard/JsonLeaderboardDefWriter.h deleted file mode 100644 index a1b4546d..00000000 --- a/src/ObjWriting/Game/IW4/Leaderboard/JsonLeaderboardDefWriter.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Dumping/AssetDumpingContext.h" -#include "Game/IW4/IW4.h" - -#include - -namespace IW4 -{ - void DumpLeaderboardDefAsJson(std::ostream& stream, const LeaderboardDef* leaderboardDef); -} // namespace IW4 diff --git a/src/ObjWriting/Game/IW4/Leaderboard/JsonLeaderboardDefWriter.cpp b/src/ObjWriting/Game/IW4/Leaderboard/LeaderboardJsonDumperIW4.cpp similarity index 72% rename from src/ObjWriting/Game/IW4/Leaderboard/JsonLeaderboardDefWriter.cpp rename to src/ObjWriting/Game/IW4/Leaderboard/LeaderboardJsonDumperIW4.cpp index fe6628bf..363335bd 100644 --- a/src/ObjWriting/Game/IW4/Leaderboard/JsonLeaderboardDefWriter.cpp +++ b/src/ObjWriting/Game/IW4/Leaderboard/LeaderboardJsonDumperIW4.cpp @@ -1,28 +1,30 @@ -#include "JsonLeaderboardDefWriter.h" +#include "LeaderboardJsonDumperIW4.h" #include "Game/IW4/CommonIW4.h" #include "Game/IW4/Leaderboard/JsonLeaderboardDef.h" +#include "Leaderboard/LeaderboardCommon.h" #include #include using namespace nlohmann; using namespace IW4; +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; @@ -74,11 +76,21 @@ namespace }; } // namespace -namespace IW4 +namespace IW4::leaderboard { - void DumpLeaderboardDefAsJson(std::ostream& stream, const LeaderboardDef* leaderboardDef) + bool JsonDumper::ShouldDump(XAssetInfo* asset) { - JsonDumper dumper(stream); - dumper.Dump(leaderboardDef); + return true; } -} // namespace IW4 + + 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 IW4::leaderboard diff --git a/src/ObjWriting/Game/IW4/Leaderboard/LeaderboardJsonDumperIW4.h b/src/ObjWriting/Game/IW4/Leaderboard/LeaderboardJsonDumperIW4.h new file mode 100644 index 00000000..eb7f7183 --- /dev/null +++ b/src/ObjWriting/Game/IW4/Leaderboard/LeaderboardJsonDumperIW4.h @@ -0,0 +1,14 @@ +#pragma once + +#include "Dumping/AbstractAssetDumper.h" +#include "Game/IW4/IW4.h" + +namespace IW4::leaderboard +{ + class JsonDumper final : public AbstractAssetDumper + { + protected: + [[nodiscard]] bool ShouldDump(XAssetInfo* asset) override; + void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; + }; +} // namespace IW4::leaderboard diff --git a/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp b/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp index 84065df7..1be58651 100644 --- a/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp +++ b/src/ObjWriting/Game/IW4/ObjWriterIW4.cpp @@ -3,7 +3,7 @@ #include "Game/IW4/GameAssetPoolIW4.h" #include "Game/IW4/XModel/XModelDumperIW4.h" #include "Image/AssetDumperGfxImage.h" -#include "Leaderboard/AssetDumperLeaderboardDef.h" +#include "Leaderboard/LeaderboardJsonDumperIW4.h" #include "LightDef/AssetDumperGfxLightDef.h" #include "Localize/AssetDumperLocalizeEntry.h" #include "Maps/AssetDumperAddonMapEnts.h" @@ -68,7 +68,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(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) diff --git a/src/ObjWriting/Game/IW5/Leaderboard/AssetDumperLeaderboardDef.cpp b/src/ObjWriting/Game/IW5/Leaderboard/AssetDumperLeaderboardDef.cpp deleted file mode 100644 index 9b1804f2..00000000 --- a/src/ObjWriting/Game/IW5/Leaderboard/AssetDumperLeaderboardDef.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "AssetDumperLeaderboardDef.h" - -#include "Game/IW5/Leaderboard/JsonLeaderboardDefWriter.h" - -#include -#include - -using namespace IW5; - -bool AssetDumperLeaderboardDef::ShouldDump(XAssetInfo* asset) -{ - return true; -} - -void AssetDumperLeaderboardDef::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) -{ - const auto assetName = asset->m_name; - const auto assetFile = context.OpenAssetFile(std::format("leaderboards/{}.json", assetName)); - - if (!assetFile) - return; - - DumpLeaderboardDefAsJson(*assetFile, asset->Asset()); -} diff --git a/src/ObjWriting/Game/IW5/Leaderboard/AssetDumperLeaderboardDef.h b/src/ObjWriting/Game/IW5/Leaderboard/AssetDumperLeaderboardDef.h deleted file mode 100644 index 934ad940..00000000 --- a/src/ObjWriting/Game/IW5/Leaderboard/AssetDumperLeaderboardDef.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "Dumping/AbstractAssetDumper.h" -#include "Game/IW5/IW5.h" - -namespace IW5 -{ - class AssetDumperLeaderboardDef final : public AbstractAssetDumper - { - protected: - _NODISCARD bool ShouldDump(XAssetInfo* asset) override; - void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; - }; -} // namespace IW5 diff --git a/src/ObjWriting/Game/IW5/Leaderboard/JsonLeaderboardDefWriter.h b/src/ObjWriting/Game/IW5/Leaderboard/JsonLeaderboardDefWriter.h deleted file mode 100644 index b992e6b2..00000000 --- a/src/ObjWriting/Game/IW5/Leaderboard/JsonLeaderboardDefWriter.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "Dumping/AssetDumpingContext.h" -#include "Game/IW5/IW5.h" - -#include - -namespace IW5 -{ - void DumpLeaderboardDefAsJson(std::ostream& stream, const LeaderboardDef* leaderboardDef); -} // namespace IW5 diff --git a/src/ObjWriting/Game/IW5/Leaderboard/JsonLeaderboardDefWriter.cpp b/src/ObjWriting/Game/IW5/Leaderboard/LeaderboardJsonDumperIW5.cpp similarity index 76% rename from src/ObjWriting/Game/IW5/Leaderboard/JsonLeaderboardDefWriter.cpp rename to src/ObjWriting/Game/IW5/Leaderboard/LeaderboardJsonDumperIW5.cpp index ef365d79..ced74ca0 100644 --- a/src/ObjWriting/Game/IW5/Leaderboard/JsonLeaderboardDefWriter.cpp +++ b/src/ObjWriting/Game/IW5/Leaderboard/LeaderboardJsonDumperIW5.cpp @@ -1,28 +1,31 @@ -#include "JsonLeaderboardDefWriter.h" +#include "LeaderboardJsonDumperIW5.h" #include "Game/IW5/CommonIW5.h" #include "Game/IW5/Leaderboard/JsonLeaderboardDef.h" +#include "Leaderboard/LeaderboardCommon.h" #include #include +#include using namespace nlohmann; using namespace IW5; +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; @@ -90,11 +93,21 @@ namespace }; } // namespace -namespace IW5 +namespace IW5::leaderboard { - void DumpLeaderboardDefAsJson(std::ostream& stream, const LeaderboardDef* leaderboardDef) + bool JsonDumper::ShouldDump(XAssetInfo* asset) { - JsonDumper dumper(stream); - dumper.Dump(leaderboardDef); + return true; } -} // namespace IW5 + + 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 IW5::leaderboard diff --git a/src/ObjWriting/Game/IW5/Leaderboard/LeaderboardJsonDumperIW5.h b/src/ObjWriting/Game/IW5/Leaderboard/LeaderboardJsonDumperIW5.h new file mode 100644 index 00000000..88b32415 --- /dev/null +++ b/src/ObjWriting/Game/IW5/Leaderboard/LeaderboardJsonDumperIW5.h @@ -0,0 +1,14 @@ +#pragma once + +#include "Dumping/AbstractAssetDumper.h" +#include "Game/IW5/IW5.h" + +namespace IW5::leaderboard +{ + class JsonDumper final : public AbstractAssetDumper + { + protected: + [[nodiscard]] bool ShouldDump(XAssetInfo* asset) override; + void DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) override; + }; +} // namespace IW5::leaderboard diff --git a/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp b/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp index 46a3b354..2a9599c9 100644 --- a/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp +++ b/src/ObjWriting/Game/IW5/ObjWriterIW5.cpp @@ -3,7 +3,7 @@ #include "Game/IW5/GameAssetPoolIW5.h" #include "Game/IW5/XModel/XModelDumperIW5.h" #include "Image/AssetDumperGfxImage.h" -#include "Leaderboard/AssetDumperLeaderboardDef.h" +#include "Leaderboard/LeaderboardJsonDumperIW5.h" #include "Localize/AssetDumperLocalizeEntry.h" #include "Maps/AssetDumperAddonMapEnts.h" #include "Material/DumperMaterialIW5.h" @@ -64,7 +64,7 @@ bool ObjWriter::DumpZone(AssetDumpingContext& context) const DUMP_ASSET_POOL(AssetDumperRawFile, m_raw_file, ASSET_TYPE_RAWFILE) DUMP_ASSET_POOL(AssetDumperScriptFile, m_script_file, ASSET_TYPE_SCRIPTFILE) 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(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) diff --git a/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp b/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp index 5e468579..9947924d 100644 --- a/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp +++ b/src/ObjWriting/Game/T6/Leaderboard/LeaderboardJsonDumperT6.cpp @@ -4,7 +4,6 @@ #include "Game/T6/Leaderboard/JsonLeaderboardDef.h" #include "Leaderboard/LeaderboardCommon.h" -#include #include #include #include