mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 00:02:55 +00:00
chore: only dump leaderboard values when they are relevant for the column
This commit is contained in:
parent
7ba5a616cd
commit
489e4d033e
@ -40,10 +40,10 @@ namespace IW4
|
|||||||
std::string statName;
|
std::string statName;
|
||||||
LbColType type;
|
LbColType type;
|
||||||
int precision;
|
int precision;
|
||||||
LbAggType agg;
|
LbAggType aggregationFunction;
|
||||||
};
|
};
|
||||||
|
|
||||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, id, propertyId, hidden, statName, type, precision, agg);
|
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, id, propertyId, hidden, statName, type, precision, aggregationFunction);
|
||||||
|
|
||||||
class JsonLeaderboardDef
|
class JsonLeaderboardDef
|
||||||
{
|
{
|
||||||
|
@ -55,17 +55,17 @@ namespace IW5
|
|||||||
public:
|
public:
|
||||||
std::string name;
|
std::string name;
|
||||||
int id;
|
int id;
|
||||||
int propertyId;
|
std::optional<int> propertyId;
|
||||||
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;
|
||||||
int uiCalColX;
|
std::optional<int> uiCalColX;
|
||||||
int uiCalColY;
|
std::optional<int> uiCalColY;
|
||||||
};
|
};
|
||||||
|
|
||||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, id, propertyId, hidden, statName, type, precision, agg, uiCalColX, uiCalColY);
|
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, id, propertyId, hidden, statName, type, precision, aggregationFunction, uiCalColX, uiCalColY);
|
||||||
|
|
||||||
class JsonLeaderboardDef
|
class JsonLeaderboardDef
|
||||||
{
|
{
|
||||||
|
@ -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,19 +37,32 @@ namespace
|
|||||||
{
|
{
|
||||||
jColumnDef.name = lbColumnDef.name;
|
jColumnDef.name = lbColumnDef.name;
|
||||||
jColumnDef.id = lbColumnDef.id;
|
jColumnDef.id = lbColumnDef.id;
|
||||||
jColumnDef.propertyId = lbColumnDef.propertyId;
|
|
||||||
jColumnDef.hidden = lbColumnDef.hidden;
|
if (lbColumnDef.propertyId != 0)
|
||||||
jColumnDef.statName = lbColumnDef.statName;
|
jColumnDef.propertyId = lbColumnDef.propertyId;
|
||||||
|
|
||||||
|
if (lbColumnDef.hidden)
|
||||||
|
jColumnDef.hidden = lbColumnDef.hidden;
|
||||||
|
|
||||||
|
if (lbColumnDef.statName && lbColumnDef.statName[0])
|
||||||
|
jColumnDef.statName = lbColumnDef.statName;
|
||||||
|
|
||||||
jColumnDef.type = lbColumnDef.type;
|
jColumnDef.type = lbColumnDef.type;
|
||||||
jColumnDef.precision = lbColumnDef.precision;
|
|
||||||
jColumnDef.agg = lbColumnDef.agg;
|
if (lbColumnDef.precision != 0)
|
||||||
|
jColumnDef.precision = lbColumnDef.precision;
|
||||||
|
|
||||||
|
jColumnDef.aggregationFunction = lbColumnDef.agg;
|
||||||
}
|
}
|
||||||
|
|
||||||
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.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)
|
||||||
|
@ -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,21 +37,38 @@ namespace
|
|||||||
{
|
{
|
||||||
jColumnDef.name = lbColumnDef.name;
|
jColumnDef.name = lbColumnDef.name;
|
||||||
jColumnDef.id = lbColumnDef.id;
|
jColumnDef.id = lbColumnDef.id;
|
||||||
jColumnDef.propertyId = lbColumnDef.propertyId;
|
|
||||||
jColumnDef.hidden = lbColumnDef.hidden;
|
if (lbColumnDef.propertyId != 0)
|
||||||
jColumnDef.statName = lbColumnDef.statName;
|
jColumnDef.propertyId = lbColumnDef.propertyId;
|
||||||
|
|
||||||
|
if (lbColumnDef.hidden)
|
||||||
|
jColumnDef.hidden = lbColumnDef.hidden;
|
||||||
|
|
||||||
|
if (lbColumnDef.statName && lbColumnDef.statName[0])
|
||||||
|
jColumnDef.statName = lbColumnDef.statName;
|
||||||
|
|
||||||
jColumnDef.type = lbColumnDef.type;
|
jColumnDef.type = lbColumnDef.type;
|
||||||
jColumnDef.precision = lbColumnDef.precision;
|
|
||||||
jColumnDef.agg = lbColumnDef.agg;
|
if (lbColumnDef.precision != 0)
|
||||||
jColumnDef.uiCalColX = lbColumnDef.uiCalColX;
|
jColumnDef.precision = lbColumnDef.precision;
|
||||||
jColumnDef.uiCalColY = lbColumnDef.uiCalColY;
|
|
||||||
|
jColumnDef.aggregationFunction = lbColumnDef.agg;
|
||||||
|
|
||||||
|
if (lbColumnDef.uiCalColX != 0 || lbColumnDef.uiCalColY != 0)
|
||||||
|
{
|
||||||
|
jColumnDef.uiCalColX = lbColumnDef.uiCalColX;
|
||||||
|
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.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)
|
||||||
@ -59,12 +76,12 @@ 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));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user