Fixing localization bugs, working with graphics settings
This commit is contained in:
1 parent
d4365728fe
commit
9d03b52c2a
14 files changed
+354
-44
No files matched your search
+84
-25
@@ -12,7 +12,8 @@
|
||||
|
||||
namespace ZL {
|
||||
|
||||
static const std::string EMPTY_LANGUAGE_RU = "(пусто)";
|
||||
// Localization
|
||||
static const std::string EMPTY_LANGUAGE_RU = u8"(пусто)";
|
||||
static const std::string EMPTY_LANGUAGE_EN = "(empty)";
|
||||
|
||||
|
||||
@@ -91,12 +92,12 @@ namespace ZL {
|
||||
if (negative) result = "-" + result;
|
||||
|
||||
|
||||
|
||||
//Localization
|
||||
if (g_currentLanguage == Language::English)
|
||||
{
|
||||
return result + " som";
|
||||
}
|
||||
return result + " сом";
|
||||
return result + u8" сом";
|
||||
}
|
||||
|
||||
static std::array<float, 4> questStatusColor(Quest::QuestStatus status) {
|
||||
@@ -113,13 +114,14 @@ namespace ZL {
|
||||
gameState_(gameState),
|
||||
audioPlayer_(audioPlayer)
|
||||
{
|
||||
localizedLocationName["uni_interior"][Language::Russian] = "Университет, 3 этаж";
|
||||
//Localization
|
||||
localizedLocationName["uni_interior"][Language::Russian] = u8"Университет, 3 этаж";
|
||||
localizedLocationName["uni_interior"][Language::English] = "University, 3rd floor";
|
||||
|
||||
localizedLocationName["uni_exterior"][Language::Russian] = "Университет, двор";
|
||||
localizedLocationName["uni_exterior"][Language::Russian] = u8"Университет, двор";
|
||||
localizedLocationName["uni_exterior"][Language::English] = "University, exterior";
|
||||
|
||||
localizedLocationName["location_dorm"][Language::Russian] = "Общежитие, 1 этаж";
|
||||
localizedLocationName["location_dorm"][Language::Russian] = u8"Общежитие, 1 этаж";
|
||||
localizedLocationName["location_dorm"][Language::English] = "Dormitory, 1st floor";
|
||||
}
|
||||
|
||||
@@ -214,6 +216,7 @@ namespace ZL {
|
||||
mainMenuRoot = loadLocalizedUi("resources/w/ui/screen_main_menu.json", zipFile);
|
||||
aboutScreenRoot = loadLocalizedUi("resources/w/ui/screen_about.json", zipFile);
|
||||
settingsScreenRoot = loadLocalizedUi("resources/w/ui/screen_settings.json", zipFile);
|
||||
settingsGraphicsScreenRoot = loadLocalizedUi("resources/w/ui/screen_settings_graphics.json", zipFile);
|
||||
languageScreenRoot = loadLocalizedUi("resources/w/ui/screen_language.json", zipFile);
|
||||
loadSavedGameScreenRoot = loadLocalizedUi("resources/w/ui/screen_load.json", zipFile);
|
||||
saveGameScreenRoot = loadLocalizedUi("resources/w/ui/screen_save.json", zipFile);
|
||||
@@ -393,6 +396,11 @@ namespace ZL {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("graphicsButton", [this](const std::string&) {
|
||||
showSettingsGraphicsScreen();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
// Set initial slider positions before registering callbacks so
|
||||
// setSliderValue does not fire an unregistered callback.
|
||||
const float musicFrac = audioPlayer_.getMusicVolume() / 128.0f;
|
||||
@@ -400,6 +408,7 @@ namespace ZL {
|
||||
uiManager.setSliderValue("musicVolumeSlider", musicFrac);
|
||||
uiManager.setSliderValue("soundVolumeSlider", soundFrac);
|
||||
|
||||
// Localization
|
||||
if (g_currentLanguage == Language::English)
|
||||
{
|
||||
musicVolumePrefix = "Music volume: ";
|
||||
@@ -408,19 +417,15 @@ namespace ZL {
|
||||
musicToggleOff = "Music: OFF";
|
||||
soundToggleOn = "Sound: ON";
|
||||
soundToggleOff = "Sound: OFF";
|
||||
fullScreenToggleOn = "Full Screen: ON";
|
||||
fullScreenToggleOff = "Full Screen: OFF";
|
||||
}
|
||||
else if (g_currentLanguage == Language::Russian)
|
||||
{
|
||||
musicVolumePrefix = "Громкость музыки: ";
|
||||
soundVolumePrefix = "Громкость звука: ";
|
||||
musicToggleOn = "Музыка: ВКЛ";
|
||||
musicToggleOff = "Музыка: ВЫКЛ";
|
||||
soundToggleOn = "Звук: ВКЛ";
|
||||
soundToggleOff = "Звук: ВЫКЛ";
|
||||
fullScreenToggleOn = "Полноэкранный режим: ВКЛ";
|
||||
fullScreenToggleOff = "Полноэкранный режим: ВЫКЛ";
|
||||
musicVolumePrefix = u8"Громкость музыки: ";
|
||||
soundVolumePrefix = u8"Громкость звука: ";
|
||||
musicToggleOn = u8"Музыка: ВКЛ";
|
||||
musicToggleOff = u8"Музыка: ВЫКЛ";
|
||||
soundToggleOn = u8"Звук: ВКЛ";
|
||||
soundToggleOff = u8"Звук: ВЫКЛ";
|
||||
}
|
||||
|
||||
uiManager.setText("musicVolumeText",
|
||||
@@ -458,17 +463,9 @@ namespace ZL {
|
||||
? std::array<float, 4>{ 0.2f, 0.9f, 0.2f, 1.0f }
|
||||
: std::array<float, 4>{ 0.9f, 0.2f, 0.2f, 1.0f });*/
|
||||
};
|
||||
auto refreshFullscreenToggle = [this]() {
|
||||
const bool on = Environment::isFullscreen;
|
||||
uiManager.setTextButtonText("fullScreenToggleButton", on ? fullScreenToggleOn : fullScreenToggleOff);
|
||||
/*uiManager.setTextButtonColor("fullScreenToggleButton", on
|
||||
? std::array<float, 4>{ 0.2f, 0.9f, 0.2f, 1.0f }
|
||||
: std::array<float, 4>{ 0.9f, 0.2f, 0.2f, 1.0f });*/
|
||||
};
|
||||
|
||||
refreshMusicToggle();
|
||||
refreshSoundToggle();
|
||||
refreshFullscreenToggle();
|
||||
|
||||
uiManager.setTextButtonCallback("musicToggleButton", [this](const std::string&) {
|
||||
audioPlayer_.setMusicEnabled(!audioPlayer_.isMusicEnabled());
|
||||
@@ -488,11 +485,59 @@ namespace ZL {
|
||||
: std::array<float, 4>{ 0.9f, 0.2f, 0.2f, 1.0f });*/
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
}
|
||||
|
||||
void MenuManager::showSettingsGraphicsScreen() {
|
||||
uiManager.pushMenuFromSavedRoot(settingsGraphicsScreenRoot);
|
||||
uiManager.setTextButtonCallback("settingsBackButton", [this](const std::string&) {
|
||||
//saveSettings();
|
||||
uiManager.popMenu();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
|
||||
// Localization
|
||||
if (g_currentLanguage == Language::English)
|
||||
{
|
||||
fullScreenToggleOn = "Full Screen: ON";
|
||||
fullScreenToggleOff = "Full Screen: OFF";
|
||||
shadowToggleOn = "Shadows: ON";
|
||||
shadowToggleOff = "Shadows: OFF";
|
||||
}
|
||||
else if (g_currentLanguage == Language::Russian)
|
||||
{
|
||||
fullScreenToggleOn = u8"Полноэкранный режим: ВКЛ";
|
||||
fullScreenToggleOff = u8"Полноэкранный режим: ВЫКЛ";
|
||||
shadowToggleOn = u8"Тени: ВКЛ";
|
||||
shadowToggleOff = u8"Тени: ВЫКЛ";
|
||||
}
|
||||
|
||||
auto refreshFullscreenToggle = [this]() {
|
||||
const bool on = Environment::isFullscreen;
|
||||
uiManager.setTextButtonText("fullScreenToggleButton", on ? fullScreenToggleOn : fullScreenToggleOff);
|
||||
};
|
||||
|
||||
auto refreshShadowToggle = [this]() {
|
||||
const bool on = this->shadowsEnabled;
|
||||
uiManager.setTextButtonText("shadowToggleButton", on ? shadowToggleOn : shadowToggleOff);
|
||||
};
|
||||
|
||||
|
||||
refreshFullscreenToggle();
|
||||
refreshShadowToggle();
|
||||
|
||||
uiManager.setTextButtonCallback("fullScreenToggleButton", [this, refreshFullscreenToggle](const std::string&) {
|
||||
Environment::setFullscreen(!Environment::isFullscreen);
|
||||
refreshFullscreenToggle();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("shadowToggleButton", [this, refreshShadowToggle](const std::string&) {
|
||||
bool newValue = !this->shadowsEnabled;
|
||||
shadowMapSettingsChangedFunc(newValue);
|
||||
refreshShadowToggle();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
}
|
||||
|
||||
void MenuManager::showLanguageScreen() {
|
||||
@@ -2099,6 +2144,7 @@ namespace ZL {
|
||||
root["soundEnabled"] = audioPlayer_.isSoundEnabled();
|
||||
root["fullscreen"] = Environment::isFullscreen;
|
||||
root["language"] = ZL::languageToCode(ZL::g_currentLanguage);
|
||||
root["shadow"] = shadowsEnabled;
|
||||
|
||||
saveJsonToFile(root, "settings.json");
|
||||
}
|
||||
@@ -2130,6 +2176,19 @@ namespace ZL {
|
||||
Environment::setFullscreen(root["fullscreen"].get<bool>());
|
||||
#endif
|
||||
}
|
||||
if (root.contains("shadow")) {
|
||||
if (shadowMapSettingsChangedFunc)
|
||||
{
|
||||
shadowMapSettingsChangedFunc(root["shadow"].get<bool>());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (shadowMapSettingsChangedFunc)
|
||||
{
|
||||
shadowMapSettingsChangedFunc(shadowsEnabled);
|
||||
}
|
||||
}
|
||||
} catch (const std::exception& e) {
|
||||
std::cerr << "[settings] Failed to parse settings.json: " << e.what() << std::endl;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user