3 changed files with 241 additions and 186 deletions
@ -0,0 +1,237 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-2.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <map> |
||||
|
#include <string> |
||||
|
#include <type_traits> |
||||
|
#include <typeindex> |
||||
|
#include "common/common_types.h" |
||||
|
|
||||
|
namespace Settings { |
||||
|
|
||||
|
enum class AudioEngine : u32 { |
||||
|
Auto, |
||||
|
Cubeb, |
||||
|
Sdl2, |
||||
|
Null, |
||||
|
}; |
||||
|
|
||||
|
enum class AudioMode : u32 { |
||||
|
Mono, |
||||
|
Stereo, |
||||
|
Surround, |
||||
|
}; |
||||
|
|
||||
|
enum class Language : u32 { |
||||
|
Japanese, |
||||
|
EnglishAmerican, |
||||
|
French, |
||||
|
German, |
||||
|
Italian, |
||||
|
Spanish, |
||||
|
Chinese, |
||||
|
Korean, |
||||
|
Dutch, |
||||
|
Portuguese, |
||||
|
Russian, |
||||
|
Taiwanese, |
||||
|
EnglishBritish, |
||||
|
FrenchCanadian, |
||||
|
SpanishLatin, |
||||
|
ChineseSimplified, |
||||
|
ChineseTraditional, |
||||
|
PortugueseBrazilian, |
||||
|
}; |
||||
|
|
||||
|
enum class Region : u32 { |
||||
|
Japan, |
||||
|
USA, |
||||
|
Europe, |
||||
|
Australia, |
||||
|
China, |
||||
|
Korea, |
||||
|
Taiwan, |
||||
|
}; |
||||
|
|
||||
|
enum class TimeZone : u32 { |
||||
|
Auto, |
||||
|
Default, |
||||
|
CET, |
||||
|
CST6CDT, |
||||
|
Cuba, |
||||
|
EET, |
||||
|
Egypt, |
||||
|
Eire, |
||||
|
EST, |
||||
|
EST5EDT, |
||||
|
GB, |
||||
|
GBEire, |
||||
|
GMT, |
||||
|
GMTPlusZero, |
||||
|
GMTMinusZero, |
||||
|
GMTZero, |
||||
|
Greenwich, |
||||
|
Hongkong, |
||||
|
HST, |
||||
|
Iceland, |
||||
|
Iran, |
||||
|
Israel, |
||||
|
Jamaica, |
||||
|
Japan, |
||||
|
Kwajalein, |
||||
|
Libya, |
||||
|
MET, |
||||
|
MST, |
||||
|
MST7MDT, |
||||
|
Navajo, |
||||
|
NZ, |
||||
|
NZCHAT, |
||||
|
Poland, |
||||
|
Portugal, |
||||
|
PRC, |
||||
|
PST8PDT, |
||||
|
ROC, |
||||
|
ROK, |
||||
|
Singapore, |
||||
|
Turkey, |
||||
|
UCT, |
||||
|
Universal, |
||||
|
UTC, |
||||
|
W_SU, |
||||
|
WET, |
||||
|
Zulu, |
||||
|
}; |
||||
|
|
||||
|
enum class AnisotropyMode : u32 { |
||||
|
Automatic = 0, |
||||
|
Default = 1, |
||||
|
X2 = 2, |
||||
|
X4 = 3, |
||||
|
X8 = 4, |
||||
|
X16 = 5, |
||||
|
}; |
||||
|
|
||||
|
enum class AstcDecodeMode : u32 { |
||||
|
CPU = 0, |
||||
|
GPU = 1, |
||||
|
CPUAsynchronous = 2, |
||||
|
}; |
||||
|
|
||||
|
enum class AstcRecompression : u32 { |
||||
|
Uncompressed = 0, |
||||
|
Bc1 = 1, |
||||
|
Bc3 = 2, |
||||
|
}; |
||||
|
|
||||
|
enum class VSyncMode : u32 { |
||||
|
Immediate = 0, |
||||
|
Mailbox = 1, |
||||
|
FIFO = 2, |
||||
|
FIFORelaxed = 3, |
||||
|
}; |
||||
|
|
||||
|
enum class RendererBackend : u32 { |
||||
|
OpenGL = 0, |
||||
|
Vulkan = 1, |
||||
|
Null = 2, |
||||
|
}; |
||||
|
|
||||
|
enum class ShaderBackend : u32 { |
||||
|
GLSL = 0, |
||||
|
GLASM = 1, |
||||
|
SPIRV = 2, |
||||
|
}; |
||||
|
|
||||
|
enum class GPUAccuracy : u32 { |
||||
|
Normal = 0, |
||||
|
High = 1, |
||||
|
Extreme = 2, |
||||
|
MaxEnum = 3, |
||||
|
}; |
||||
|
|
||||
|
enum class CPUAccuracy : u32 { |
||||
|
Auto = 0, |
||||
|
Accurate = 1, |
||||
|
Unsafe = 2, |
||||
|
Paranoid = 3, |
||||
|
}; |
||||
|
|
||||
|
enum class FullscreenMode : u32 { |
||||
|
Borderless = 0, |
||||
|
Exclusive = 1, |
||||
|
}; |
||||
|
|
||||
|
enum class NvdecEmulation : u32 { |
||||
|
Off = 0, |
||||
|
CPU = 1, |
||||
|
GPU = 2, |
||||
|
}; |
||||
|
|
||||
|
enum class ResolutionSetup : u32 { |
||||
|
Res1_2X = 0, |
||||
|
Res3_4X = 1, |
||||
|
Res1X = 2, |
||||
|
Res3_2X = 3, |
||||
|
Res2X = 4, |
||||
|
Res3X = 5, |
||||
|
Res4X = 6, |
||||
|
Res5X = 7, |
||||
|
Res6X = 8, |
||||
|
Res7X = 9, |
||||
|
Res8X = 10, |
||||
|
}; |
||||
|
|
||||
|
enum class ScalingFilter : u32 { |
||||
|
NearestNeighbor = 0, |
||||
|
Bilinear = 1, |
||||
|
Bicubic = 2, |
||||
|
Gaussian = 3, |
||||
|
ScaleForce = 4, |
||||
|
Fsr = 5, |
||||
|
LastFilter = Fsr, |
||||
|
}; |
||||
|
|
||||
|
enum class AntiAliasing : u32 { |
||||
|
None = 0, |
||||
|
Fxaa = 1, |
||||
|
Smaa = 2, |
||||
|
LastAA = Smaa, |
||||
|
}; |
||||
|
|
||||
|
enum class AspectRatio : u32 { |
||||
|
R16_9, |
||||
|
R4_3, |
||||
|
R21_9, |
||||
|
R16_10, |
||||
|
Stretch, |
||||
|
}; |
||||
|
|
||||
|
static std::map<std::type_index, std::map<std::string, u32>> translations = { |
||||
|
{typeid(AudioEngine), |
||||
|
{ |
||||
|
{"auto", static_cast<u32>(AudioEngine::Auto)}, |
||||
|
{"cubeb", static_cast<u32>(AudioEngine::Cubeb)}, |
||||
|
{"sdl2", static_cast<u32>(AudioEngine::Sdl2)}, |
||||
|
{"null", static_cast<u32>(AudioEngine::Null)}, |
||||
|
}}}; |
||||
|
|
||||
|
static std::string empty_string{}; |
||||
|
|
||||
|
template <typename Type> |
||||
|
const std::string& TranslateEnum(Type id) { |
||||
|
auto& group = translations.at(typeid(Type)); |
||||
|
for (auto& [name, value] : group) { |
||||
|
if (static_cast<Type>(value) == id) { |
||||
|
return name; |
||||
|
} |
||||
|
} |
||||
|
return empty_string; |
||||
|
} |
||||
|
|
||||
|
template <typename Type> |
||||
|
static Type ToEnum(const std::string& text) { |
||||
|
return static_cast<Type>(translations.at(typeid(Type)).at(text)); |
||||
|
} |
||||
|
} // namespace Settings |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue