mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-27 23:27:52 -05:00
feat: dump leaderboard definitions on IW4/IW5
This commit is contained in:
58
src/ObjCommon/Game/IW4/Json/JsonLeaderboardDef.h
Normal file
58
src/ObjCommon/Game/IW4/Json/JsonLeaderboardDef.h
Normal file
@ -0,0 +1,58 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/IW4/IW4.h"
|
||||
|
||||
#include "Json/JsonCommon.h"
|
||||
#include "Json/JsonExtension.h"
|
||||
#include <memory>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace IW4
|
||||
{
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(LbColType,
|
||||
{
|
||||
{LBCOL_TYPE_NUMBER, "number" },
|
||||
{LBCOL_TYPE_TIME, "time" },
|
||||
{LBCOL_TYPE_LEVELXP, "levelxp" },
|
||||
{LBCOL_TYPE_PRESTIGE, "prestige" },
|
||||
{LBCOL_TYPE_BIGNUMBER, "bignumber"},
|
||||
{LBCOL_TYPE_PERCENT, "percent" },
|
||||
});
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(LbAggType,
|
||||
{
|
||||
{LBAGG_TYPE_MIN, "min" },
|
||||
{LBAGG_TYPE_MAX, "max" },
|
||||
{LBAGG_TYPE_SUM, "sum" },
|
||||
{LBAGG_TYPE_LAST, "last"},
|
||||
});
|
||||
|
||||
class JsonColumnDef
|
||||
{
|
||||
public:
|
||||
std::string name;
|
||||
int id;
|
||||
int propertyId;
|
||||
bool hidden;
|
||||
std::string statName;
|
||||
LbColType type;
|
||||
int precision;
|
||||
LbAggType agg;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, id, propertyId, hidden, statName, type, precision, agg);
|
||||
|
||||
class JsonLeaderboardDef
|
||||
{
|
||||
public:
|
||||
int id;
|
||||
std::optional<int> xpColId;
|
||||
std::optional<int> prestigeColId;
|
||||
std::vector<JsonColumnDef> columns;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonLeaderboardDef, id, xpColId, prestigeColId, columns);
|
||||
} // namespace IW4
|
82
src/ObjCommon/Game/IW5/Json/JsonLeaderboardDef.h
Normal file
82
src/ObjCommon/Game/IW5/Json/JsonLeaderboardDef.h
Normal file
@ -0,0 +1,82 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/IW5/IW5.h"
|
||||
|
||||
#include "Json/JsonCommon.h"
|
||||
#include "Json/JsonExtension.h"
|
||||
#include <memory>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace IW5
|
||||
{
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(LbColType,
|
||||
{
|
||||
{LBCOL_TYPE_NUMBER, "number" },
|
||||
{LBCOL_TYPE_TIME, "time" },
|
||||
{LBCOL_TYPE_LEVELXP, "levelxp" },
|
||||
{LBCOL_TYPE_PRESTIGE, "prestige" },
|
||||
{LBCOL_TYPE_BIGNUMBER, "bignumber"},
|
||||
{LBCOL_TYPE_PERCENT, "percent" },
|
||||
{LBCOL_TYPE_TIME_FULL, "time_full"},
|
||||
});
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(LbAggType,
|
||||
{
|
||||
{LBAGG_TYPE_MIN, "min" },
|
||||
{LBAGG_TYPE_MAX, "max" },
|
||||
{LBAGG_TYPE_SUM, "sum" },
|
||||
{LBAGG_TYPE_LAST, "last"},
|
||||
});
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(LbUpdateType,
|
||||
{
|
||||
{LBUPDATE_TYPE_NORMAL, "normal" },
|
||||
{LBUPDATE_TYPE_RANK, "rank" },
|
||||
{LBUPDATE_TYPE_COMBINE, "combine"},
|
||||
});
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(LbTrackType,
|
||||
{
|
||||
{TRK_ALLTIME, "ALLTIME" },
|
||||
{TRK_WEEKLY, "WEEKLY" },
|
||||
{TRK_MONTHLY, "MONTHLY" },
|
||||
{TRK_PRESTIGE_ALLTIME, "PRESTIGE_ALLTIME"},
|
||||
{TRK_PRESTIGE_WEEKLY, "PRESTIGE_WEEKLY" },
|
||||
{TRK_PRESTIGE_MONTHLY, "PRESTIGE_MONTHLY"},
|
||||
{TRK_DAILY, "DAILY" },
|
||||
{TRK_PRESTIGE_DAILY, "PRESTIGE_DAILY" },
|
||||
});
|
||||
|
||||
class JsonColumnDef
|
||||
{
|
||||
public:
|
||||
std::string name;
|
||||
int id;
|
||||
int propertyId;
|
||||
bool hidden;
|
||||
std::string statName;
|
||||
LbColType type;
|
||||
int precision;
|
||||
LbAggType agg;
|
||||
int uiCalColX;
|
||||
int uiCalColY;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonColumnDef, name, id, propertyId, hidden, statName, type, precision, agg, uiCalColX, uiCalColY);
|
||||
|
||||
class JsonLeaderboardDef
|
||||
{
|
||||
public:
|
||||
int id;
|
||||
std::optional<int> xpColId;
|
||||
std::optional<int> prestigeColId;
|
||||
std::vector<JsonColumnDef> columns;
|
||||
LbUpdateType updateType;
|
||||
std::vector<LbTrackType> trackTypes;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonLeaderboardDef, id, xpColId, prestigeColId, columns, updateType, trackTypes);
|
||||
} // namespace IW5
|
Reference in New Issue
Block a user