config_detail: move implementation to cpp, relocate sources

This commit is contained in:
Hyper 2024-11-15 21:07:30 +00:00
parent 5a110d3838
commit 3257244224
16 changed files with 149 additions and 133 deletions

View file

@ -28,6 +28,11 @@ set(SWA_PRECOMPILED_HEADERS
"stdafx.h" "stdafx.h"
) )
set(SWA_CFG_CXX_SOURCES
"cfg/config.cpp"
"cfg/config_detail.cpp"
)
set(SWA_KERNEL_CXX_SOURCES set(SWA_KERNEL_CXX_SOURCES
"kernel/imports.cpp" "kernel/imports.cpp"
"kernel/xdm.cpp" "kernel/xdm.cpp"
@ -75,11 +80,11 @@ set(SWA_UI_CXX_SOURCES
) )
set(SWA_CXX_SOURCES set(SWA_CXX_SOURCES
"config.cpp"
"main.cpp" "main.cpp"
"misc_impl.cpp" "misc_impl.cpp"
"stdafx.cpp" "stdafx.cpp"
${SWA_CFG_CXX_SOURCES}
${SWA_KERNEL_CXX_SOURCES} ${SWA_KERNEL_CXX_SOURCES}
${SWA_CPU_CXX_SOURCES} ${SWA_CPU_CXX_SOURCES}
${SWA_GPU_CXX_SOURCES} ${SWA_GPU_CXX_SOURCES}

View file

@ -0,0 +1,106 @@
#include "config.h"
#include "config_detail.h"
// CONFIG_DEFINE
template<typename T>
ConfigDef<T>::ConfigDef(std::string section, std::string name, T defaultValue) : Section(section), Name(name), DefaultValue(defaultValue)
{
Config::Definitions.emplace_back(this);
}
// CONFIG_DEFINE_LOCALISED
template<typename T>
ConfigDef<T>::ConfigDef(std::string section, std::string name, std::unordered_map<ELanguage, std::string>* nameLocale, T defaultValue)
: Section(section), Name(name), NameLocale(nameLocale), DefaultValue(defaultValue)
{
Config::Definitions.emplace_back(this);
}
// CONFIG_DEFINE_ENUM
template<typename T>
ConfigDef<T>::ConfigDef(std::string section, std::string name, T defaultValue, std::unordered_map<std::string, T>* enumTemplate)
: Section(section), Name(name), DefaultValue(defaultValue), EnumTemplate(enumTemplate)
{
for (const auto& pair : *EnumTemplate)
EnumTemplateReverse[pair.second] = pair.first;
Config::Definitions.emplace_back(this);
}
// CONFIG_DEFINE_ENUM_LOCALISED
template<typename T>
ConfigDef<T>::ConfigDef(std::string section, std::string name, std::unordered_map<ELanguage, std::string>* nameLocale, T defaultValue, std::unordered_map<std::string, T>* enumTemplate, std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* enumLocale)
: Section(section), Name(name), NameLocale(nameLocale), DefaultValue(defaultValue), EnumTemplate(enumTemplate), EnumLocale(enumLocale)
{
for (const auto& pair : *EnumTemplate)
EnumTemplateReverse[pair.second] = pair.first;
Config::Definitions.emplace_back(this);
}
// CONFIG_DEFINE_CALLBACK
template<typename T>
ConfigDef<T>::ConfigDef(std::string section, std::string name, T defaultValue, std::function<void(ConfigDef<T>*)> readCallback)
: Section(section), Name(name), DefaultValue(defaultValue), ReadCallback(readCallback)
{
Config::Definitions.emplace_back(this);
}
template<typename T>
std::string ConfigDef<T>::GetNameLocalised() const
{
if (!NameLocale)
return Name;
if (!NameLocale->count(Config::Language))
{
if (NameLocale->count(ELanguage::English))
{
return NameLocale->at(ELanguage::English);
}
else
{
return Name;
}
}
return NameLocale->at(Config::Language);
}
template<typename T>
std::string ConfigDef<T>::GetValueLocalised() const
{
auto language = Config::Language;
std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* locale = nullptr;
if constexpr (std::is_enum_v<T>)
{
locale = EnumLocale;
}
else if constexpr (std::is_same_v<T, bool>)
{
locale = &g_bool_locale;
}
if (!locale)
return ToString(false);
if (!locale->count(language))
{
if (locale->count(ELanguage::English))
{
language = ELanguage::English;
}
else
{
return ToString(false);
}
}
auto strings = locale->at(language);
if (!strings.count(Value))
return ToString(false);
return strings.at(Value);
}

View file

@ -180,61 +180,20 @@ public:
std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* EnumLocale; std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* EnumLocale;
std::function<void(ConfigDef<T>*)> ReadCallback; std::function<void(ConfigDef<T>*)> ReadCallback;
ConfigDef(std::string section, std::string name, T defaultValue) // CONFIG_DEFINE
: Section(section), Name(name), DefaultValue(defaultValue) ConfigDef(std::string section, std::string name, T defaultValue);
{
Config::Definitions.emplace_back(this);
}
ConfigDef(std::string section, std::string name, std::unordered_map<ELanguage, std::string>* nameLocale, T defaultValue) // CONFIG_DEFINE_LOCALISED
: Section(section), Name(name), NameLocale(nameLocale), DefaultValue(defaultValue) ConfigDef(std::string section, std::string name, std::unordered_map<ELanguage, std::string>* nameLocale, T defaultValue);
{
Config::Definitions.emplace_back(this);
}
ConfigDef // CONFIG_DEFINE_ENUM
( ConfigDef(std::string section, std::string name, T defaultValue, std::unordered_map<std::string, T>* enumTemplate);
std::string section,
std::string name,
T defaultValue,
std::unordered_map<std::string, T>* enumTemplate
)
: Section(section), Name(name), DefaultValue(defaultValue), EnumTemplate(enumTemplate)
{
for (const auto& pair : *EnumTemplate)
EnumTemplateReverse[pair.second] = pair.first;
Config::Definitions.emplace_back(this); // CONFIG_DEFINE_ENUM_LOCALISED
} ConfigDef(std::string section, std::string name, std::unordered_map<ELanguage, std::string>* nameLocale, T defaultValue, std::unordered_map<std::string, T>* enumTemplate, std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* enumLocale);
ConfigDef // CONFIG_DEFINE_CALLBACK
( ConfigDef(std::string section, std::string name, T defaultValue, std::function<void(ConfigDef<T>*)> readCallback);
std::string section,
std::string name,
std::unordered_map<ELanguage, std::string>* nameLocale,
T defaultValue,
std::unordered_map<std::string, T>* enumTemplate,
std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* enumLocale
)
: Section(section), Name(name), NameLocale(nameLocale), DefaultValue(defaultValue), EnumTemplate(enumTemplate), EnumLocale(enumLocale)
{
for (const auto& pair : *EnumTemplate)
EnumTemplateReverse[pair.second] = pair.first;
Config::Definitions.emplace_back(this);
}
ConfigDef(std::string section, std::string name, T defaultValue, std::function<void(ConfigDef<T>*)> readCallback)
: Section(section), Name(name), DefaultValue(defaultValue), ReadCallback(readCallback)
{
Config::Definitions.emplace_back(this);
}
ConfigDef(std::string section, std::string name, std::unordered_map<ELanguage, std::string> nameLocale, T defaultValue, std::function<void(ConfigDef<T>*)> readCallback)
: Section(section), Name(name), NameLocale(nameLocale), DefaultValue(defaultValue), ReadCallback(readCallback)
{
Config::Definitions.emplace_back(this);
}
void ReadValue(toml::v3::ex::parse_result& toml) override void ReadValue(toml::v3::ex::parse_result& toml) override
{ {
@ -277,67 +236,14 @@ public:
return Name; return Name;
} }
std::string GetNameLocalised() const override std::string GetNameLocalised() const override;
{
if (!NameLocale)
return Name;
if (!NameLocale->count(Config::Language))
{
if (NameLocale->count(ELanguage::English))
{
return NameLocale->at(ELanguage::English);
}
else
{
return Name;
}
}
return NameLocale->at(Config::Language);
}
void* GetValue() override void* GetValue() override
{ {
return &Value; return &Value;
} }
std::string GetValueLocalised() const override std::string GetValueLocalised() const override;
{
auto language = Config::Language;
std::unordered_map<ELanguage, std::unordered_map<T, std::string>>* locale = nullptr;
if constexpr (std::is_enum_v<T>)
{
locale = EnumLocale;
}
else if constexpr (std::is_same_v<T, bool>)
{
locale = &g_bool_locale;
}
if (!locale)
return ToString(false);
if (!locale->count(language))
{
if (locale->count(ELanguage::English))
{
language = ELanguage::English;
}
else
{
return ToString(false);
}
}
auto strings = locale->at(language);
if (!strings.count(Value))
return ToString(false);
return strings.at(Value);
}
std::string GetDefinition(bool withSection = false) const override std::string GetDefinition(bool withSection = false) const override
{ {

View file

@ -11,9 +11,9 @@
#include "imgui_snapshot.h" #include "imgui_snapshot.h"
#include "imgui_common.h" #include "imgui_common.h"
#include "gpu/video.h" #include "video.h"
#include "ui/window.h" #include <ui/window.h>
#include "config.h" #include <cfg/config.h>
#include "shader/copy_vs.hlsl.dxil.h" #include "shader/copy_vs.hlsl.dxil.h"
#include "shader/copy_vs.hlsl.spirv.h" #include "shader/copy_vs.hlsl.spirv.h"

View file

@ -2,7 +2,6 @@
#include <cpu/ppc_context.h> #include <cpu/ppc_context.h>
#include <cpu/guest_thread.h> #include <cpu/guest_thread.h>
#include <apu/audio.h> #include <apu/audio.h>
#include <apu/audio.h>
#include "function.h" #include "function.h"
#include "xex.h" #include "xex.h"
#include "xbox.h" #include "xbox.h"
@ -12,7 +11,7 @@
#include "xam.h" #include "xam.h"
#include "xdm.h" #include "xdm.h"
#include <timeapi.h> #include <timeapi.h>
#include "config.h" #include <cfg/config.h>
#include <ntstatus.h> #include <ntstatus.h>

View file

@ -11,7 +11,7 @@
#include <xex.h> #include <xex.h>
#include <apu/audio.h> #include <apu/audio.h>
#include <hid/hid.h> #include <hid/hid.h>
#include "config.h" #include <cfg/config.h>
#define GAME_XEX_PATH "game:\\default.xex" #define GAME_XEX_PATH "game:\\default.xex"

View file

@ -1,7 +1,7 @@
#include <cpu/guest_code.h> #include <cpu/guest_code.h>
#include "api/SWA.h" #include <api/SWA.h>
#include "ui/window.h" #include <ui/window.h>
#include "config.h" #include <cfg/config.h>
void HighFrameRateDeltaTimeFixMidAsmHook(PPCRegister& f1) void HighFrameRateDeltaTimeFixMidAsmHook(PPCRegister& f1)
{ {

View file

@ -1,7 +1,7 @@
#include <cpu/guest_code.h> #include <cpu/guest_code.h>
#include "api/SWA.h" #include <api/SWA.h>
#include "ui/window.h" #include <ui/window.h>
#include "config.h" #include <cfg/config.h>
bool DisableHintsMidAsmHook() bool DisableHintsMidAsmHook()
{ {

View file

@ -1,8 +1,8 @@
#include <cpu/guest_code.h> #include <cpu/guest_code.h>
#include "api/SWA.h" #include <api/SWA.h>
#include "ui/window.h" #include <ui/window.h>
#include "ui/window_events.h" #include <ui/window_events.h>
#include "config.h" #include <cfg/config.h>
uint32_t m_lastCheckpointScore = 0; uint32_t m_lastCheckpointScore = 0;
float m_lastDarkGaiaEnergy = 0.0f; float m_lastDarkGaiaEnergy = 0.0f;

View file

@ -1,5 +1,5 @@
#include <cpu/guest_code.h> #include <cpu/guest_code.h>
#include "config.h" #include <cfg/config.h>
const char* m_pStageID; const char* m_pStageID;

View file

@ -1,7 +1,7 @@
#include <cpu/guest_code.h> #include <cpu/guest_code.h>
#include "api/SWA.h" #include <api/SWA.h>
#include "ui/window.h" #include <ui/window.h>
#include "config.h" #include <cfg/config.h>
constexpr float m_baseAspectRatio = 16.0f / 9.0f; constexpr float m_baseAspectRatio = 16.0f / 9.0f;

View file

@ -1,6 +1,6 @@
#include "window.h" #include "window.h"
#include "sdl_listener.h" #include "sdl_listener.h"
#include <config.h> #include <cfg/config.h>
#include <kernel/function.h> #include <kernel/function.h>
#include <SDL_syswm.h> #include <SDL_syswm.h>

View file

@ -1,9 +1,9 @@
#pragma once #pragma once
#include "res/icon.h" #include <res/icon.h>
#include "res/icon_night.h" #include <res/icon_night.h>
#include "ui/window_events.h" #include <ui/window_events.h>
#include "config.h" #include <cfg/config.h>
#define DEFAULT_WIDTH 1280 #define DEFAULT_WIDTH 1280
#define DEFAULT_HEIGHT 720 #define DEFAULT_HEIGHT 720