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