mirror of
https://github.com/acidicoala/SmokeAPI.git
synced 2025-12-05 21:15:39 -05:00
61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "smoke_api/types.hpp"
|
|
|
|
namespace smoke_api::config {
|
|
enum class AppStatus {
|
|
UNDEFINED,
|
|
ORIGINAL,
|
|
UNLOCKED,
|
|
LOCKED,
|
|
};
|
|
|
|
NLOHMANN_JSON_SERIALIZE_ENUM(
|
|
AppStatus,
|
|
// @formatter:off
|
|
{
|
|
{AppStatus::UNDEFINED, nullptr},
|
|
{AppStatus::ORIGINAL, "original"},
|
|
{AppStatus::UNLOCKED, "unlocked"},
|
|
{AppStatus::LOCKED, "locked"},
|
|
}
|
|
// @formatter:on
|
|
)
|
|
|
|
struct Config {
|
|
uint32_t $version = 2;
|
|
bool logging = false;
|
|
AppStatus default_app_status = AppStatus::UNLOCKED;
|
|
uint32_t override_app_id = 0;
|
|
std::map<std::string, AppStatus> override_app_status;
|
|
std::map<std::string, AppStatus> override_dlc_status;
|
|
AppDlcNameMap extra_dlcs;
|
|
bool auto_inject_inventory = true;
|
|
std::vector<uint32_t> extra_inventory_items;
|
|
|
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE(
|
|
Config,
|
|
// NOLINT(misc-const-correctness)
|
|
$version,
|
|
logging,
|
|
default_app_status,
|
|
override_app_id,
|
|
override_app_status,
|
|
override_dlc_status,
|
|
extra_dlcs,
|
|
auto_inject_inventory,
|
|
extra_inventory_items
|
|
)
|
|
};
|
|
|
|
extern Config instance;
|
|
|
|
std::vector<DLC> get_extra_dlcs(AppId_t app_id);
|
|
|
|
bool is_dlc_unlocked(
|
|
AppId_t app_id,
|
|
AppId_t dlc_id,
|
|
const std::function<bool()>& original_function
|
|
);
|
|
}
|