mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	file_sys: Priority display of game titles in the current language
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include "common/settings.h"
 | 
			
		||||
#include "common/string_util.h"
 | 
			
		||||
#include "common/swap.h"
 | 
			
		||||
#include "core/file_sys/control_metadata.h"
 | 
			
		||||
@@ -37,6 +38,27 @@ std::string LanguageEntry::GetDeveloperName() const {
 | 
			
		||||
                                                       developer_name.size());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
constexpr std::array<Language, 18> language_to_codes = {{
 | 
			
		||||
    Language::Japanese,
 | 
			
		||||
    Language::AmericanEnglish,
 | 
			
		||||
    Language::French,
 | 
			
		||||
    Language::German,
 | 
			
		||||
    Language::Italian,
 | 
			
		||||
    Language::Spanish,
 | 
			
		||||
    Language::Chinese,
 | 
			
		||||
    Language::Korean,
 | 
			
		||||
    Language::Dutch,
 | 
			
		||||
    Language::Portuguese,
 | 
			
		||||
    Language::Russian,
 | 
			
		||||
    Language::Taiwanese,
 | 
			
		||||
    Language::BritishEnglish,
 | 
			
		||||
    Language::CanadianFrench,
 | 
			
		||||
    Language::LatinAmericanSpanish,
 | 
			
		||||
    Language::Chinese,
 | 
			
		||||
    Language::Taiwanese,
 | 
			
		||||
    Language::BrazilianPortuguese,
 | 
			
		||||
}};
 | 
			
		||||
 | 
			
		||||
NACP::NACP() = default;
 | 
			
		||||
 | 
			
		||||
NACP::NACP(VirtualFile file) {
 | 
			
		||||
@@ -45,9 +67,13 @@ NACP::NACP(VirtualFile file) {
 | 
			
		||||
 | 
			
		||||
NACP::~NACP() = default;
 | 
			
		||||
 | 
			
		||||
const LanguageEntry& NACP::GetLanguageEntry(Language language) const {
 | 
			
		||||
    if (language != Language::Default) {
 | 
			
		||||
        return raw.language_entries.at(static_cast<u8>(language));
 | 
			
		||||
const LanguageEntry& NACP::GetLanguageEntry() const {
 | 
			
		||||
    Language language = language_to_codes[Settings::values.language_index.GetValue()];
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
        const auto& language_entry = raw.language_entries.at(static_cast<u8>(language));
 | 
			
		||||
        if (!language_entry.GetApplicationName().empty())
 | 
			
		||||
            return language_entry;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (const auto& language_entry : raw.language_entries) {
 | 
			
		||||
@@ -55,16 +81,15 @@ const LanguageEntry& NACP::GetLanguageEntry(Language language) const {
 | 
			
		||||
            return language_entry;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Fallback to English
 | 
			
		||||
    return GetLanguageEntry(Language::AmericanEnglish);
 | 
			
		||||
    return raw.language_entries.at(static_cast<u8>(Language::AmericanEnglish));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string NACP::GetApplicationName(Language language) const {
 | 
			
		||||
    return GetLanguageEntry(language).GetApplicationName();
 | 
			
		||||
std::string NACP::GetApplicationName() const {
 | 
			
		||||
    return GetLanguageEntry().GetApplicationName();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string NACP::GetDeveloperName(Language language) const {
 | 
			
		||||
    return GetLanguageEntry(language).GetDeveloperName();
 | 
			
		||||
std::string NACP::GetDeveloperName() const {
 | 
			
		||||
    return GetLanguageEntry().GetDeveloperName();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u64 NACP::GetTitleId() const {
 | 
			
		||||
 
 | 
			
		||||
@@ -101,9 +101,9 @@ public:
 | 
			
		||||
    explicit NACP(VirtualFile file);
 | 
			
		||||
    ~NACP();
 | 
			
		||||
 | 
			
		||||
    const LanguageEntry& GetLanguageEntry(Language language = Language::Default) const;
 | 
			
		||||
    std::string GetApplicationName(Language language = Language::Default) const;
 | 
			
		||||
    std::string GetDeveloperName(Language language = Language::Default) const;
 | 
			
		||||
    const LanguageEntry& GetLanguageEntry() const;
 | 
			
		||||
    std::string GetApplicationName() const;
 | 
			
		||||
    std::string GetDeveloperName() const;
 | 
			
		||||
    u64 GetTitleId() const;
 | 
			
		||||
    u64 GetDLCBaseTitleId() const;
 | 
			
		||||
    std::string GetVersionString() const;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user