From 2a1ec18f6a75719390e8af680b219768d33368dc Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 19 May 2024 13:07:04 +0200 Subject: [PATCH] chore: only dump leaderboard values for t6 when they are relevant for the column --- src/Common/Game/T6/T6_Assets.h | 4 +- .../Game/T6/Json/JsonLeaderboardDef.h | 19 +++---- .../AssetDumperLeaderboardDef.cpp | 1 - .../JsonLeaderboardDefWriter.cpp | 49 +++++++++++++------ 4 files changed, 47 insertions(+), 26 deletions(-) diff --git a/src/Common/Game/T6/T6_Assets.h b/src/Common/Game/T6/T6_Assets.h index 3cdf952c..08105163 100644 --- a/src/Common/Game/T6/T6_Assets.h +++ b/src/Common/Game/T6/T6_Assets.h @@ -1946,7 +1946,8 @@ namespace T6 LBUPDATE_TYPE_NORMAL = 0x0, LBUPDATE_TYPE_RANK = 0x1, LBUPDATE_TYPE_COMBINE = 0x2, - LBUPDATE_TYPE_COUNT = 0x3, + + LBUPDATE_TYPE_COUNT }; enum LbTrackType @@ -1959,6 +1960,7 @@ namespace T6 TRK_PRESTIGE_MONTHLY = 0x5, TRK_DAILY = 0x6, TRK_PRESTIGE_DAILY = 0x7, + TRK_COUNT }; diff --git a/src/ObjCommon/Game/T6/Json/JsonLeaderboardDef.h b/src/ObjCommon/Game/T6/Json/JsonLeaderboardDef.h index 83457795..b869724d 100644 --- a/src/ObjCommon/Game/T6/Json/JsonLeaderboardDef.h +++ b/src/ObjCommon/Game/T6/Json/JsonLeaderboardDef.h @@ -55,18 +55,19 @@ namespace T6 public: std::string name; int colId; - int dwColIndex; - bool hidden; - std::string statName; + std::optional dwColIndex; + std::optional hidden; + std::optional statName; LbColType type; - int precision; - LbAggType agg; - std::string localization; - int uiCalColX; - int uiCalColY; + std::optional precision; + LbAggType aggregationFunction; + std::optional localization; + std::optional uiCalColX; + std::optional uiCalColY; }; - NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, colId, dwColIndex, hidden, statName, type, precision, agg, localization, uiCalColX, uiCalColY); + NLOHMANN_DEFINE_TYPE_EXTENSION( + JsonColumnDef, name, colId, dwColIndex, hidden, statName, type, precision, aggregationFunction, localization, uiCalColX, uiCalColY); class JsonLeaderboardDef { diff --git a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLeaderboardDef.cpp b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLeaderboardDef.cpp index 75a08a41..8d01c329 100644 --- a/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLeaderboardDef.cpp +++ b/src/ObjWriting/Game/T6/AssetDumpers/AssetDumperLeaderboardDef.cpp @@ -9,7 +9,6 @@ using namespace T6; std::string AssetDumperLeaderboardDef::GetFileNameForAsset(const std::string& assetName) { - return std::format("leaderboards/{}.json", assetName); } diff --git a/src/ObjWriting/Game/T6/LeaderboardDef/JsonLeaderboardDefWriter.cpp b/src/ObjWriting/Game/T6/LeaderboardDef/JsonLeaderboardDefWriter.cpp index 0ec0dcee..f8c30e4a 100644 --- a/src/ObjWriting/Game/T6/LeaderboardDef/JsonLeaderboardDefWriter.cpp +++ b/src/ObjWriting/Game/T6/LeaderboardDef/JsonLeaderboardDefWriter.cpp @@ -19,7 +19,7 @@ namespace { } - void Dump(const LeaderboardDef* leaderboardDef) + void Dump(const LeaderboardDef* leaderboardDef) const { JsonLeaderboardDef jsonLeaderboardDef; CreateJsonLeaderboardDef(jsonLeaderboardDef, *leaderboardDef); @@ -37,23 +37,42 @@ namespace { jColumnDef.name = lbColumnDef.name; jColumnDef.colId = lbColumnDef.colId; - jColumnDef.dwColIndex = lbColumnDef.dwColIndex; - jColumnDef.hidden = lbColumnDef.hidden; - jColumnDef.statName = lbColumnDef.statName; + + if (lbColumnDef.dwColIndex >= 0) + jColumnDef.dwColIndex = lbColumnDef.dwColIndex; + + if (lbColumnDef.hidden) + jColumnDef.hidden = lbColumnDef.hidden; + + if (lbColumnDef.statName && lbColumnDef.statName[0]) + jColumnDef.statName = lbColumnDef.statName; + jColumnDef.type = lbColumnDef.type; - jColumnDef.precision = lbColumnDef.precision; - jColumnDef.agg = lbColumnDef.agg; - jColumnDef.localization = lbColumnDef.localization; - jColumnDef.uiCalColX = lbColumnDef.uiCalColX; - jColumnDef.uiCalColY = lbColumnDef.uiCalColY; + + if (lbColumnDef.precision != 0) + jColumnDef.precision = lbColumnDef.precision; + + jColumnDef.aggregationFunction = lbColumnDef.agg; + + if (lbColumnDef.localization && lbColumnDef.localization[0]) + jColumnDef.localization = lbColumnDef.localization; + + if (lbColumnDef.uiCalColX != 0 || lbColumnDef.uiCalColY != 0) + { + jColumnDef.uiCalColX = lbColumnDef.uiCalColX; + jColumnDef.uiCalColY = lbColumnDef.uiCalColY; + } } static void CreateJsonLeaderboardDef(JsonLeaderboardDef& jLeaderboardDef, const LeaderboardDef& leaderboardDef) { jLeaderboardDef.id = leaderboardDef.id; jLeaderboardDef.dwColumnCount = leaderboardDef.dwColumnCount; - jLeaderboardDef.xpColId = (leaderboardDef.xpColId < 0) ? std::nullopt : std::make_optional(leaderboardDef.xpColId); - jLeaderboardDef.prestigeColId = (leaderboardDef.prestigeColId < 0) ? std::nullopt : std::make_optional(leaderboardDef.prestigeColId); + + if (leaderboardDef.xpColId >= 0) + jLeaderboardDef.xpColId = leaderboardDef.xpColId; + if (leaderboardDef.prestigeColId >= 0) + jLeaderboardDef.prestigeColId = leaderboardDef.prestigeColId; jLeaderboardDef.columns.resize(leaderboardDef.columnCount); for (auto i = 0; i < leaderboardDef.columnCount; ++i) @@ -61,12 +80,12 @@ namespace jLeaderboardDef.updateType = leaderboardDef.updateType; - for (auto i = 0; i < LbTrackType::TRK_COUNT; ++i) + for (auto i = 0; i < TRK_COUNT; ++i) { - if ((leaderboardDef.trackTypes & (1 << i)) != 0) - { + const auto trackTypeMask = 1 << i; + + if (leaderboardDef.trackTypes & trackTypeMask) jLeaderboardDef.trackTypes.emplace_back(static_cast(i)); - } } }