74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
#ifndef __CONFIG_HPP__
|
|
#define __CONFIG_HPP__
|
|
|
|
#include "common/rt64_user_configuration.h"
|
|
|
|
namespace ultramodern {
|
|
enum class Resolution {
|
|
Original,
|
|
Original2x,
|
|
Auto,
|
|
OptionCount
|
|
};
|
|
enum class WindowMode {
|
|
Windowed,
|
|
Fullscreen,
|
|
OptionCount
|
|
};
|
|
enum class HUDRatioMode {
|
|
Original,
|
|
Clamp16x9,
|
|
Full,
|
|
OptionCount
|
|
};
|
|
enum class GraphicsApi {
|
|
Auto,
|
|
D3D12,
|
|
Vulkan,
|
|
OptionCount
|
|
};
|
|
|
|
struct GraphicsConfig {
|
|
Resolution res_option;
|
|
WindowMode wm_option;
|
|
HUDRatioMode hr_option;
|
|
GraphicsApi api_option;
|
|
RT64::UserConfiguration::AspectRatio ar_option;
|
|
RT64::UserConfiguration::Antialiasing msaa_option;
|
|
RT64::UserConfiguration::RefreshRate rr_option;
|
|
int rr_manual_value;
|
|
int ds_option;
|
|
bool developer_mode;
|
|
|
|
auto operator<=>(const GraphicsConfig& rhs) const = default;
|
|
};
|
|
|
|
void set_graphics_config(const GraphicsConfig& config);
|
|
GraphicsConfig get_graphics_config();
|
|
|
|
NLOHMANN_JSON_SERIALIZE_ENUM(ultramodern::Resolution, {
|
|
{ultramodern::Resolution::Original, "Original"},
|
|
{ultramodern::Resolution::Original2x, "Original2x"},
|
|
{ultramodern::Resolution::Auto, "Auto"},
|
|
});
|
|
|
|
NLOHMANN_JSON_SERIALIZE_ENUM(ultramodern::WindowMode, {
|
|
{ultramodern::WindowMode::Windowed, "Windowed"},
|
|
{ultramodern::WindowMode::Fullscreen, "Fullscreen"}
|
|
});
|
|
|
|
NLOHMANN_JSON_SERIALIZE_ENUM(ultramodern::HUDRatioMode, {
|
|
{ultramodern::HUDRatioMode::Original, "Original"},
|
|
{ultramodern::HUDRatioMode::Clamp16x9, "Clamp16x9"},
|
|
{ultramodern::HUDRatioMode::Full, "Full"},
|
|
});
|
|
|
|
NLOHMANN_JSON_SERIALIZE_ENUM(ultramodern::GraphicsApi, {
|
|
{ultramodern::GraphicsApi::Auto, "Auto"},
|
|
{ultramodern::GraphicsApi::D3D12, "D3D12"},
|
|
{ultramodern::GraphicsApi::Vulkan, "Vulkan"},
|
|
});
|
|
};
|
|
|
|
#endif
|