Cleanup some of the unordered_map usage. (#432)

This commit is contained in:
Skyth (Asilkan) 2025-02-19 20:32:11 +03:00 committed by GitHub
parent 5ba4e927ab
commit 0afd01ff7e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 86 additions and 105 deletions

View file

@ -41,7 +41,7 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_locale =
std::unordered_map<std::string_view, std::unordered_map<ELanguage, std::string>> g_locale =
{
{
"Options_Header_Name",
@ -777,22 +777,18 @@ std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_lo
}
};
std::string& Localise(const char* key)
std::string& Localise(const std::string_view& key)
{
if (!g_locale.count(key))
return g_localeMissing;
if (!g_locale[key].count(Config::Language))
auto localeFindResult = g_locale.find(key);
if (localeFindResult != g_locale.end())
{
if (g_locale[key].count(ELanguage::English))
{
return g_locale[key][ELanguage::English];
}
else
{
return g_localeMissing;
}
auto languageFindResult = localeFindResult->second.find(Config::Language);
if (languageFindResult == localeFindResult->second.end())
languageFindResult = localeFindResult->second.find(ELanguage::English);
if (languageFindResult != localeFindResult->second.end())
return languageFindResult->second;
}
return g_locale[key][Config::Language];
return g_localeMissing;
}

View file

@ -12,6 +12,6 @@ enum class ELanguage : uint32_t
inline std::string g_localeMissing = "<missing string>";
extern std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_locale;
extern std::unordered_map<std::string_view, std::unordered_map<ELanguage, std::string>> g_locale;
std::string& Localise(const char* key);
std::string& Localise(const std::string_view& key);

View file

@ -1,5 +1,4 @@
#include <os/registry.h>
#include <unordered_map>
inline const wchar_t* g_registryRoot = L"Software\\UnleashedRecomp";

View file

@ -256,7 +256,7 @@ void ButtonGuide::Draw()
if (btn.Visibility && !*btn.Visibility)
continue;
auto str = Localise(btn.Name.c_str()).c_str();
auto str = Localise(btn.Name).c_str();
auto iconWidth = Scale(g_iconWidths[btn.Icon]);
auto iconHeight = Scale(g_iconHeights[btn.Icon]);
auto textWidth = g_fntNewRodin->CalcTextSizeA(fontSize, FLT_MAX, 0, str).x;
@ -283,7 +283,7 @@ void ButtonGuide::Draw()
if (btn.Visibility && !*btn.Visibility)
continue;
auto str = Localise(btn.Name.c_str()).c_str();
auto str = Localise(btn.Name).c_str();
auto iconWidth = Scale(g_iconWidths[btn.Icon]);
auto iconHeight = Scale(g_iconHeights[btn.Icon]);
auto textWidth = g_fntNewRodin->CalcTextSizeA(fontSize, FLT_MAX, 0, str).x;

View file

@ -1399,7 +1399,7 @@ static void DrawNavigationButton()
float squashRatio;
constexpr float NAV_BUTTON_MAX_TEXT_WIDTH = 90.0f;
const char *nextButtonKey = "Installer_Button_Next";
std::string_view nextButtonKey = "Installer_Button_Next";
if (skipButton)
{
nextButtonKey = "Installer_Button_Skip";

View file

@ -59,7 +59,11 @@
#define VALUE_THUMBNAIL_MAP(type) std::unordered_map<type, std::unique_ptr<GuestTexture>>
static std::unordered_map<std::string_view, std::unique_ptr<GuestTexture>> g_namedThumbnails;
static std::unique_ptr<GuestTexture> g_defaultThumbnail;
static std::unique_ptr<GuestTexture> g_controlTutorialXBThumbnail;
static std::unique_ptr<GuestTexture> g_controlTutorialPSThumbnail;
static std::unordered_map<const IConfigDef*, std::unique_ptr<GuestTexture>> g_configThumbnails;
static VALUE_THUMBNAIL_MAP(ETimeOfDayTransition) g_timeOfDayTransitionThumbnails;
@ -76,10 +80,10 @@ static VALUE_THUMBNAIL_MAP(EUIAlignmentMode) g_uiAlignmentThumbnails;
void LoadThumbnails()
{
g_namedThumbnails["Default"] = LOAD_ZSTD_TEXTURE(g_default);
g_namedThumbnails["WindowSize"] = LOAD_ZSTD_TEXTURE(g_window_size);
g_namedThumbnails["ControlTutorialXB"] = LOAD_ZSTD_TEXTURE(g_control_tutorial_xb);
g_namedThumbnails["ControlTutorialPS"] = LOAD_ZSTD_TEXTURE(g_control_tutorial_ps);
g_defaultThumbnail = LOAD_ZSTD_TEXTURE(g_default);
g_controlTutorialXBThumbnail = LOAD_ZSTD_TEXTURE(g_control_tutorial_xb);
g_controlTutorialPSThumbnail = LOAD_ZSTD_TEXTURE(g_control_tutorial_ps);
g_configThumbnails[&Config::Language] = LOAD_ZSTD_TEXTURE(g_language);
g_configThumbnails[&Config::VoiceLanguage] = LOAD_ZSTD_TEXTURE(g_voice_language);
@ -109,6 +113,7 @@ void LoadThumbnails()
g_configThumbnails[&Config::AspectRatio] = LOAD_ZSTD_TEXTURE(g_aspect_ratio);
g_configThumbnails[&Config::ResolutionScale] = LOAD_ZSTD_TEXTURE(g_resolution_scale);
g_configThumbnails[&Config::Fullscreen] = LOAD_ZSTD_TEXTURE(g_fullscreen);
g_configThumbnails[&Config::XboxColorCorrection] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction);
g_vsyncThumbnails[false] = LOAD_ZSTD_TEXTURE(g_vsync_off);
g_vsyncThumbnails[true] = LOAD_ZSTD_TEXTURE(g_vsync_on);
@ -143,8 +148,6 @@ void LoadThumbnails()
g_uiAlignmentThumbnails[EUIAlignmentMode::Centre] = LOAD_ZSTD_TEXTURE(g_ui_alignment_centre);
g_uiAlignmentThumbnails[EUIAlignmentMode::Edge] = LOAD_ZSTD_TEXTURE(g_ui_alignment_edge);
g_configThumbnails[&Config::XboxColorCorrection] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction);
}
template<typename T>
@ -156,29 +159,23 @@ bool TryGetValueThumbnail(const IConfigDef* cfg, VALUE_THUMBNAIL_MAP(T)* thumbna
if (!cfg->GetValue())
return false;
auto result = thumbnails->at(*(T*)cfg->GetValue()).get();
auto findResult = thumbnails->find(*(T*)cfg->GetValue());
if (!result)
return false;
if (findResult != thumbnails->end())
{
*texture = findResult->second.get();
return true;
}
*texture = result;
return true;
}
GuestTexture* GetThumbnail(const std::string_view name)
{
if (!g_namedThumbnails.count(name))
return g_namedThumbnails["Default"].get();
return g_namedThumbnails[name].get();
return false;
}
GuestTexture* GetThumbnail(const IConfigDef* cfg)
{
if (!g_configThumbnails.count(cfg))
auto findResult = g_configThumbnails.find(cfg);
if (findResult == g_configThumbnails.end())
{
auto texture = g_namedThumbnails["Default"].get();
auto texture = g_defaultThumbnail.get();
if (cfg == &Config::ControlTutorial)
{
@ -187,7 +184,7 @@ GuestTexture* GetThumbnail(const IConfigDef* cfg)
if (Config::ControllerIcons == EControllerIcons::Auto)
isPlayStation = hid::g_inputDeviceController == hid::EInputDevice::PlayStation;
texture = isPlayStation ? g_namedThumbnails["ControlTutorialPS"].get() : g_namedThumbnails["ControlTutorialXB"].get();
texture = isPlayStation ? g_controlTutorialPSThumbnail.get() : g_controlTutorialXBThumbnail.get();
}
if (cfg == &Config::TimeOfDayTransition)
{
@ -237,5 +234,5 @@ GuestTexture* GetThumbnail(const IConfigDef* cfg)
return texture;
}
return g_configThumbnails[cfg].get();
return findResult->second.get();
}

View file

@ -5,5 +5,4 @@
void LoadThumbnails();
GuestTexture* GetThumbnail(const std::string_view name);
GuestTexture* GetThumbnail(const IConfigDef* cfg);

View file

@ -511,43 +511,33 @@ std::string_view ConfigDef<T, isHidden>::GetName() const
template<typename T, bool isHidden>
std::string ConfigDef<T, isHidden>::GetNameLocalised(ELanguage language) const
{
if (!Locale)
return Name;
if (!Locale->count(language))
if (Locale != nullptr)
{
if (Locale->count(ELanguage::English))
{
return std::get<0>(Locale->at(ELanguage::English));
}
else
{
return Name;
}
auto languageFindResult = Locale->find(language);
if (languageFindResult == Locale->end())
languageFindResult = Locale->find(ELanguage::English);
if (languageFindResult != Locale->end())
return std::get<0>(languageFindResult->second);
}
return std::get<0>(Locale->at(language));
return Name;
}
template<typename T, bool isHidden>
std::string ConfigDef<T, isHidden>::GetDescription(ELanguage language) const
{
if (!Locale)
return "";
if (!Locale->count(language))
if (Locale != nullptr)
{
if (Locale->count(ELanguage::English))
{
return std::get<1>(Locale->at(ELanguage::English));
}
else
{
return "";
}
auto languageFindResult = Locale->find(language);
if (languageFindResult == Locale->end())
languageFindResult = Locale->find(ELanguage::English);
if (languageFindResult != Locale->end())
return std::get<1>(languageFindResult->second);
}
return std::get<1>(Locale->at(language));
return "";
}
template<typename T, bool isHidden>
@ -578,27 +568,27 @@ std::string ConfigDef<T, isHidden>::GetValueLocalised(ELanguage language) const
: Localise("Common_Off");
}
if (!locale)
return ToString(false);
if (!locale->count(language))
if (locale != nullptr)
{
if (locale->count(ELanguage::English))
ELanguage languages[] = { language, ELanguage::English };
for (auto languageToFind : languages)
{
language = ELanguage::English;
}
else
{
return ToString(false);
auto languageFindResult = locale->find(languageToFind);
if (languageFindResult != locale->end())
{
auto valueFindResult = languageFindResult->second.find(Value);
if (valueFindResult != languageFindResult->second.end())
return std::get<0>(valueFindResult->second);
}
if (languageToFind == ELanguage::English)
break;
}
}
auto strings = locale->at(language);
if (!strings.count(Value))
return ToString(false);
return std::get<0>(strings.at(Value));
return ToString(false);
}
template<typename T, bool isHidden>
@ -615,27 +605,27 @@ std::string ConfigDef<T, isHidden>::GetValueDescription(ELanguage language) cons
return "";
}
if (!locale)
return "";
if (!locale->count(language))
if (locale != nullptr)
{
if (locale->count(ELanguage::English))
ELanguage languages[] = { language, ELanguage::English };
for (auto languageToFind : languages)
{
language = ELanguage::English;
}
else
{
return "";
auto languageFindResult = locale->find(languageToFind);
if (languageFindResult != locale->end())
{
auto valueFindResult = languageFindResult->second.find(Value);
if (valueFindResult != languageFindResult->second.end())
return std::get<1>(valueFindResult->second);
}
if (languageToFind == ELanguage::English)
break;
}
}
auto strings = locale->at(language);
if (!strings.count(Value))
return "";
return std::get<1>(strings.at(Value));
return "";
}
template<typename T, bool isHidden>