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
4 changed files with 47 additions and 26 deletions

View File

@ -9,7 +9,6 @@ using namespace T6;
std::string AssetDumperLeaderboardDef::GetFileNameForAsset(const std::string& 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;
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<LbTrackType>(i));
}
}
}