#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 override_app_status; std::map override_dlc_status; AppDlcNameMap extra_dlcs; bool auto_inject_inventory = true; std::vector 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 get_extra_dlcs(AppId_t app_id); bool is_dlc_unlocked( AppId_t app_id, AppId_t dlc_id, const std::function& original_function ); }