StringSetting, gui.set_locale removed
This commit is contained in:
parent
6650e27737
commit
001617f6d9
@ -12,7 +12,7 @@ function on_open()
|
|||||||
for _,k in ipairs(names) do
|
for _,k in ipairs(names) do
|
||||||
panel:add(string.format(
|
panel:add(string.format(
|
||||||
"<button onclick=%q padding='10'>%s</button>",
|
"<button onclick=%q padding='10'>%s</button>",
|
||||||
string.format("gui.set_locale(%q) menu:back()", invlocales[k]), k
|
string.format("core.set_setting('ui.language', %q) menu:back()", invlocales[k]), k
|
||||||
))
|
))
|
||||||
end
|
end
|
||||||
panel:add("<button padding='10' onclick='menu:back()'>@Back</button>")
|
panel:add("<button padding='10' onclick='menu:back()'>@Back</button>")
|
||||||
|
|||||||
@ -32,3 +32,7 @@ std::string FlagSetting::toString() const {
|
|||||||
return "invalid format";
|
return "invalid format";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string StringSetting::toString() const {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|||||||
@ -56,7 +56,7 @@ public:
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
T get() const {
|
const T& get() const {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,8 +160,7 @@ public:
|
|||||||
FlagSetting(
|
FlagSetting(
|
||||||
bool value,
|
bool value,
|
||||||
setting_format format=setting_format::simple
|
setting_format format=setting_format::simple
|
||||||
) : ObservableSetting(value, format)
|
) : ObservableSetting(value, format) {}
|
||||||
{}
|
|
||||||
|
|
||||||
void toggle() {
|
void toggle() {
|
||||||
set(!get());
|
set(!get());
|
||||||
@ -170,4 +169,14 @@ public:
|
|||||||
virtual std::string toString() const override;
|
virtual std::string toString() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class StringSetting : public ObservableSetting<std::string> {
|
||||||
|
public:
|
||||||
|
StringSetting(
|
||||||
|
std::string value,
|
||||||
|
setting_format format=setting_format::simple
|
||||||
|
) : ObservableSetting(value, format) {}
|
||||||
|
|
||||||
|
virtual std::string toString() const override;
|
||||||
|
};
|
||||||
|
|
||||||
#endif // DATA_SETTING_H_
|
#endif // DATA_SETTING_H_
|
||||||
|
|||||||
@ -71,16 +71,18 @@ Engine::Engine(EngineSettings& settings, EnginePaths* paths)
|
|||||||
create_channel(this, "ui", settings.audio.volumeUI);
|
create_channel(this, "ui", settings.audio.volumeUI);
|
||||||
|
|
||||||
gui = std::make_unique<gui::GUI>();
|
gui = std::make_unique<gui::GUI>();
|
||||||
if (settings.ui.language == "auto") {
|
if (settings.ui.language.get() == "auto") {
|
||||||
settings.ui.language = langs::locale_by_envlocale(
|
settings.ui.language.set(langs::locale_by_envlocale(
|
||||||
platform::detect_locale(),
|
platform::detect_locale(),
|
||||||
paths->getResources()
|
paths->getResources()
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
if (ENGINE_VERSION_INDEV) {
|
if (ENGINE_VERSION_INDEV) {
|
||||||
menus::create_version_label(this);
|
menus::create_version_label(this);
|
||||||
}
|
}
|
||||||
setLanguage(settings.ui.language);
|
keepAlive(settings.ui.language.observe([=](auto lang) {
|
||||||
|
setLanguage(lang);
|
||||||
|
}, true));
|
||||||
addWorldGenerators();
|
addWorldGenerators();
|
||||||
|
|
||||||
scripting::initialize(this);
|
scripting::initialize(this);
|
||||||
@ -275,7 +277,6 @@ void Engine::setScreen(std::shared_ptr<Screen> screen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Engine::setLanguage(std::string locale) {
|
void Engine::setLanguage(std::string locale) {
|
||||||
settings.ui.language = locale;
|
|
||||||
langs::setup(paths->getResources(), locale, contentPacks);
|
langs::setup(paths->getResources(), locale, contentPacks);
|
||||||
menus::create_menus(this);
|
menus::create_menus(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,8 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) {
|
|||||||
map.emplace("graphics.fog-curve", &settings.graphics.fogCurve);
|
map.emplace("graphics.fog-curve", &settings.graphics.fogCurve);
|
||||||
map.emplace("graphics.backlight", &settings.graphics.backlight);
|
map.emplace("graphics.backlight", &settings.graphics.backlight);
|
||||||
map.emplace("graphics.gamma", &settings.graphics.gamma);
|
map.emplace("graphics.gamma", &settings.graphics.gamma);
|
||||||
|
|
||||||
|
map.emplace("ui.language", &settings.ui.language);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<dynamic::Value> SettingsHandler::getValue(const std::string& name) const {
|
std::unique_ptr<dynamic::Value> SettingsHandler::getValue(const std::string& name) const {
|
||||||
@ -46,6 +48,8 @@ std::unique_ptr<dynamic::Value> SettingsHandler::getValue(const std::string& nam
|
|||||||
return dynamic::Value::of((integer_t)integer->get());
|
return dynamic::Value::of((integer_t)integer->get());
|
||||||
} else if (auto flag = dynamic_cast<FlagSetting*>(setting)) {
|
} else if (auto flag = dynamic_cast<FlagSetting*>(setting)) {
|
||||||
return dynamic::Value::boolean(flag->get());
|
return dynamic::Value::boolean(flag->get());
|
||||||
|
} else if (auto string = dynamic_cast<StringSetting*>(setting)) {
|
||||||
|
return dynamic::Value::of(string->get());
|
||||||
} else {
|
} else {
|
||||||
throw std::runtime_error("type is not implemented for '"+name+"'");
|
throw std::runtime_error("type is not implemented for '"+name+"'");
|
||||||
}
|
}
|
||||||
@ -88,7 +92,7 @@ static void set_numeric_value(T* setting, const dynamic::Value& value) {
|
|||||||
void SettingsHandler::setValue(const std::string& name, const dynamic::Value& value) {
|
void SettingsHandler::setValue(const std::string& name, const dynamic::Value& value) {
|
||||||
auto found = map.find(name);
|
auto found = map.find(name);
|
||||||
if (found == map.end()) {
|
if (found == map.end()) {
|
||||||
throw std::runtime_error("setting '"+name+"' does Pnot exist");
|
throw std::runtime_error("setting '"+name+"' does not exist");
|
||||||
}
|
}
|
||||||
auto setting = found->second;
|
auto setting = found->second;
|
||||||
if (auto number = dynamic_cast<NumberSetting*>(setting)) {
|
if (auto number = dynamic_cast<NumberSetting*>(setting)) {
|
||||||
@ -97,6 +101,23 @@ void SettingsHandler::setValue(const std::string& name, const dynamic::Value& va
|
|||||||
set_numeric_value(integer, value);
|
set_numeric_value(integer, value);
|
||||||
} else if (auto flag = dynamic_cast<FlagSetting*>(setting)) {
|
} else if (auto flag = dynamic_cast<FlagSetting*>(setting)) {
|
||||||
set_numeric_value(flag, value);
|
set_numeric_value(flag, value);
|
||||||
|
} else if (auto string = dynamic_cast<StringSetting*>(setting)) {
|
||||||
|
switch (value.type) {
|
||||||
|
case dynamic::valtype::string:
|
||||||
|
string->set(std::get<std::string>(value.value));
|
||||||
|
break;
|
||||||
|
case dynamic::valtype::integer:
|
||||||
|
string->set(std::to_string(std::get<integer_t>(value.value)));
|
||||||
|
break;
|
||||||
|
case dynamic::valtype::number:
|
||||||
|
string->set(std::to_string(std::get<number_t>(value.value)));
|
||||||
|
break;
|
||||||
|
case dynamic::valtype::boolean:
|
||||||
|
string->set(std::to_string(std::get<bool>(value.value)));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw std::runtime_error("not implemented for type");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
throw std::runtime_error("type is not implement - setting '"+name+"'");
|
throw std::runtime_error("type is not implement - setting '"+name+"'");
|
||||||
}
|
}
|
||||||
@ -144,7 +165,7 @@ toml::Wrapper* create_wrapper(EngineSettings& settings) {
|
|||||||
debug.add("do-write-lights", &settings.debug.doWriteLights);
|
debug.add("do-write-lights", &settings.debug.doWriteLights);
|
||||||
|
|
||||||
toml::Section& ui = wrapper->add("ui");
|
toml::Section& ui = wrapper->add("ui");
|
||||||
ui.add("language", &settings.ui.language);
|
ui.add("language", &*settings.ui.language);
|
||||||
ui.add("world-preview-size", &*settings.ui.worldPreviewSize);
|
ui.add("world-preview-size", &*settings.ui.worldPreviewSize);
|
||||||
return wrapper.release();
|
return wrapper.release();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -385,13 +385,6 @@ static int l_gui_get_locale(lua_State* L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief gui.set_locale(locale: string) -> nil
|
|
||||||
static int l_gui_set_locale(lua_State* L) {
|
|
||||||
auto locale = lua_tostring(L, 1);
|
|
||||||
scripting::engine->setLanguage(locale);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const luaL_Reg guilib [] = {
|
const luaL_Reg guilib [] = {
|
||||||
{"get_viewport", lua_wrap_errors<l_gui_getviewport>},
|
{"get_viewport", lua_wrap_errors<l_gui_getviewport>},
|
||||||
{"getattr", lua_wrap_errors<l_gui_getattr>},
|
{"getattr", lua_wrap_errors<l_gui_getattr>},
|
||||||
@ -400,7 +393,6 @@ const luaL_Reg guilib [] = {
|
|||||||
{"str", lua_wrap_errors<l_gui_str>},
|
{"str", lua_wrap_errors<l_gui_str>},
|
||||||
{"reindex", lua_wrap_errors<l_gui_reindex>},
|
{"reindex", lua_wrap_errors<l_gui_reindex>},
|
||||||
{"get_locale", lua_wrap_errors<l_gui_get_locale>},
|
{"get_locale", lua_wrap_errors<l_gui_get_locale>},
|
||||||
{"set_locale", lua_wrap_errors<l_gui_set_locale>},
|
|
||||||
{"get_locales_info", lua_wrap_errors<l_gui_get_locales_info>},
|
{"get_locales_info", lua_wrap_errors<l_gui_get_locales_info>},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -76,7 +76,7 @@ struct DebugSettings {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct UiSettings {
|
struct UiSettings {
|
||||||
std::string language = "auto";
|
StringSetting language {"auto"};
|
||||||
IntegerSetting worldPreviewSize {64, 1, 512};
|
IntegerSetting worldPreviewSize {64, 1, 512};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user