chore: only dump leaderboard values for t6 when they are relevant for the column

This commit is contained in:
Jan 2024-05-19 13:07:04 +02:00
parent 4fe852b162
commit 2a1ec18f6a
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
4 changed files with 47 additions and 26 deletions

View File

@ -1946,7 +1946,8 @@ namespace T6
LBUPDATE_TYPE_NORMAL = 0x0, LBUPDATE_TYPE_NORMAL = 0x0,
LBUPDATE_TYPE_RANK = 0x1, LBUPDATE_TYPE_RANK = 0x1,
LBUPDATE_TYPE_COMBINE = 0x2, LBUPDATE_TYPE_COMBINE = 0x2,
LBUPDATE_TYPE_COUNT = 0x3,
LBUPDATE_TYPE_COUNT
}; };
enum LbTrackType enum LbTrackType
@ -1959,6 +1960,7 @@ namespace T6
TRK_PRESTIGE_MONTHLY = 0x5, TRK_PRESTIGE_MONTHLY = 0x5,
TRK_DAILY = 0x6, TRK_DAILY = 0x6,
TRK_PRESTIGE_DAILY = 0x7, TRK_PRESTIGE_DAILY = 0x7,
TRK_COUNT TRK_COUNT
}; };

View File

@ -55,18 +55,19 @@ namespace T6
public: public:
std::string name; std::string name;
int colId; int colId;
int dwColIndex; std::optional<int> dwColIndex;
bool hidden; std::optional<bool> hidden;
std::string statName; std::optional<std::string> statName;
LbColType type; LbColType type;
int precision; std::optional<int> precision;
LbAggType agg; LbAggType aggregationFunction;
std::string localization; std::optional<std::string> localization;
int uiCalColX; std::optional<int> uiCalColX;
int uiCalColY; std::optional<int> 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 class JsonLeaderboardDef
{ {

View File

@ -9,7 +9,6 @@ using namespace T6;
std::string AssetDumperLeaderboardDef::GetFileNameForAsset(const std::string& assetName) std::string AssetDumperLeaderboardDef::GetFileNameForAsset(const std::string& assetName)
{ {
return std::format("leaderboards/{}.json", assetName); return std::format("leaderboards/{}.json", assetName);
} }

View File

@ -19,7 +19,7 @@ namespace
{ {
} }
void Dump(const LeaderboardDef* leaderboardDef) void Dump(const LeaderboardDef* leaderboardDef) const
{ {
JsonLeaderboardDef jsonLeaderboardDef; JsonLeaderboardDef jsonLeaderboardDef;
CreateJsonLeaderboardDef(jsonLeaderboardDef, *leaderboardDef); CreateJsonLeaderboardDef(jsonLeaderboardDef, *leaderboardDef);
@ -37,23 +37,42 @@ namespace
{ {
jColumnDef.name = lbColumnDef.name; jColumnDef.name = lbColumnDef.name;
jColumnDef.colId = lbColumnDef.colId; jColumnDef.colId = lbColumnDef.colId;
if (lbColumnDef.dwColIndex >= 0)
jColumnDef.dwColIndex = lbColumnDef.dwColIndex; jColumnDef.dwColIndex = lbColumnDef.dwColIndex;
if (lbColumnDef.hidden)
jColumnDef.hidden = lbColumnDef.hidden; jColumnDef.hidden = lbColumnDef.hidden;
if (lbColumnDef.statName && lbColumnDef.statName[0])
jColumnDef.statName = lbColumnDef.statName; jColumnDef.statName = lbColumnDef.statName;
jColumnDef.type = lbColumnDef.type; jColumnDef.type = lbColumnDef.type;
if (lbColumnDef.precision != 0)
jColumnDef.precision = lbColumnDef.precision; jColumnDef.precision = lbColumnDef.precision;
jColumnDef.agg = lbColumnDef.agg;
jColumnDef.aggregationFunction = lbColumnDef.agg;
if (lbColumnDef.localization && lbColumnDef.localization[0])
jColumnDef.localization = lbColumnDef.localization; jColumnDef.localization = lbColumnDef.localization;
if (lbColumnDef.uiCalColX != 0 || lbColumnDef.uiCalColY != 0)
{
jColumnDef.uiCalColX = lbColumnDef.uiCalColX; jColumnDef.uiCalColX = lbColumnDef.uiCalColX;
jColumnDef.uiCalColY = lbColumnDef.uiCalColY; jColumnDef.uiCalColY = lbColumnDef.uiCalColY;
} }
}
static void CreateJsonLeaderboardDef(JsonLeaderboardDef& jLeaderboardDef, const LeaderboardDef& leaderboardDef) static void CreateJsonLeaderboardDef(JsonLeaderboardDef& jLeaderboardDef, const LeaderboardDef& leaderboardDef)
{ {
jLeaderboardDef.id = leaderboardDef.id; jLeaderboardDef.id = leaderboardDef.id;
jLeaderboardDef.dwColumnCount = leaderboardDef.dwColumnCount; 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); jLeaderboardDef.columns.resize(leaderboardDef.columnCount);
for (auto i = 0; i < leaderboardDef.columnCount; ++i) for (auto i = 0; i < leaderboardDef.columnCount; ++i)
@ -61,14 +80,14 @@ namespace
jLeaderboardDef.updateType = leaderboardDef.updateType; 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<LbTrackType>(i)); jLeaderboardDef.trackTypes.emplace_back(static_cast<LbTrackType>(i));
} }
} }
}
std::ostream& m_stream; std::ostream& m_stream;
}; };