mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-25 06:41:30 -04:00
27d27e6d94
* Add offsets for Wii USA R0/R2, JPN, and PAL Also fix an oopsie where l_pos and l_normal's offsets were swapped * Allow loading Wii discs * Change GameVersion::GcnJpn checks to isRegionJpn() * Change GameVersion::GcnPal checks to isRegionPal() * Add platformSelect and regionSelect templates, simplify a ton of code * Add *_get() macros to simplify REL loads * Actually accept Wii USA Rev. 2 discs * Show the Wii USA revision in prelaunch's disc status * l_normal isn't in Wii RELs, so I'll just hardcode it * Account for various BLO differences Fix crash when opening the map on Wii USA Rev 0 and Wii PAL * Use the streamed version of the file select music * Update language selection * Fix the d-pad/cross button text for Wii PAL Resizing panes that are already 120.0f wide is harmless, so I didn't bother with a GameVersion check * Fix brightness check discrepancy, use IF_DUSK_BLOCK macros when ideal * Update docs and the issue template
80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
#include "dusk/language.hpp"
|
|
|
|
#include "dusk/version.hpp"
|
|
|
|
namespace dusk::language {
|
|
namespace {
|
|
|
|
constexpr GameLanguage kEnglishOnly[] = {GameLanguage::English};
|
|
constexpr GameLanguage kJapaneseOnly[] = {GameLanguage::Japanese};
|
|
constexpr GameLanguage kPalLanguages[] = {
|
|
GameLanguage::English,
|
|
GameLanguage::German,
|
|
GameLanguage::French,
|
|
GameLanguage::Spanish,
|
|
GameLanguage::Italian,
|
|
};
|
|
constexpr GameLanguage kWiiUsaLanguages[] = {
|
|
GameLanguage::English,
|
|
GameLanguage::French,
|
|
GameLanguage::Spanish,
|
|
};
|
|
|
|
} // namespace
|
|
|
|
std::span<const GameLanguage> available_languages(const iso::DiscInfo& info) noexcept {
|
|
switch (info.region) {
|
|
case iso::Region::Japan:
|
|
return kJapaneseOnly;
|
|
case iso::Region::Europe:
|
|
return kPalLanguages;
|
|
case iso::Region::NorthAmerica:
|
|
if (info.platform == iso::Platform::Wii && info.revision == 2) {
|
|
return kWiiUsaLanguages;
|
|
}
|
|
return kEnglishOnly;
|
|
default:
|
|
return kEnglishOnly;
|
|
}
|
|
}
|
|
|
|
const char* language_name(GameLanguage language) noexcept {
|
|
switch (language) {
|
|
case GameLanguage::English:
|
|
return "English";
|
|
case GameLanguage::German:
|
|
return "German";
|
|
case GameLanguage::French:
|
|
return "French";
|
|
case GameLanguage::Spanish:
|
|
return "Spanish";
|
|
case GameLanguage::Italian:
|
|
return "Italian";
|
|
case GameLanguage::Japanese:
|
|
return "Japanese";
|
|
}
|
|
return "English";
|
|
}
|
|
|
|
const char* msg_folder() noexcept {
|
|
using namespace version;
|
|
|
|
switch (getSettings().game.language.getValue()) {
|
|
case GameLanguage::German:
|
|
return "Msgde";
|
|
case GameLanguage::French:
|
|
return "Msgfr";
|
|
case GameLanguage::Spanish:
|
|
return "Msgsp";
|
|
case GameLanguage::Italian:
|
|
return "Msgit";
|
|
case GameLanguage::Japanese:
|
|
return "Msgjp";
|
|
case GameLanguage::English:
|
|
default:
|
|
return isRegionPal() ? "Msguk" : "Msgus";
|
|
}
|
|
}
|
|
|
|
} // namespace dusk::language
|