From 657b09da9eb201a299635d9cab2a9bd1c6b07631 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 13 Apr 2024 16:28:06 +0300 Subject: [PATCH] languages menu moved to xml + minor refactor --- res/layouts/pages/languages.xml | 3 +++ res/layouts/pages/languages.xml.lua | 19 ++++++++++++++++ src/assets/assetload_funcs.cpp | 6 +++--- src/frontend/debug_panel.cpp | 8 +++---- src/frontend/menu/menu.cpp | 31 ++------------------------- src/frontend/screens.cpp | 2 +- src/graphics/render/WorldRenderer.cpp | 6 +++--- src/logic/ChunksController.cpp | 2 +- src/logic/scripting/lua/libgui.cpp | 29 +++++++++++++++++++++++++ src/logic/scripting/lua/libworld.cpp | 8 +++---- src/maths/UVRegion.h | 3 +-- src/world/Level.h | 2 +- 12 files changed, 71 insertions(+), 48 deletions(-) create mode 100644 res/layouts/pages/languages.xml create mode 100644 res/layouts/pages/languages.xml.lua diff --git a/res/layouts/pages/languages.xml b/res/layouts/pages/languages.xml new file mode 100644 index 00000000..38722bed --- /dev/null +++ b/res/layouts/pages/languages.xml @@ -0,0 +1,3 @@ + + + diff --git a/res/layouts/pages/languages.xml.lua b/res/layouts/pages/languages.xml.lua new file mode 100644 index 00000000..be6c5905 --- /dev/null +++ b/res/layouts/pages/languages.xml.lua @@ -0,0 +1,19 @@ +function on_open() + local locales = gui.get_locales_info() + local invlocales = {} + local names = {} + for k, v in pairs(locales) do + table.insert(names, v.name) + invlocales[v.name] = k + end + table.sort(names) + + local panel = document.root + for _,k in ipairs(names) do + panel:add(string.format( + "", + string.format("gui.set_locale(%q) menu:back()", invlocales[k]), k + )) + end + panel:add("") +end diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp index 0281e504..57679410 100644 --- a/src/assets/assetload_funcs.cpp +++ b/src/assets/assetload_funcs.cpp @@ -91,7 +91,7 @@ assetload::postfunc assetload::atlas( ) { AtlasBuilder builder; for (const auto& file : paths->listdir(directory)) { - if (fs::is_directory(file)) + if (!imageio::is_read_supported(file.extension())) continue; if (!appendAtlas(builder, file)) continue; @@ -141,7 +141,7 @@ assetload::postfunc assetload::layout( ) { return [=](auto assets) { try { - auto cfg = dynamic_cast(config.get()); + auto cfg = std::dynamic_pointer_cast(config); auto document = UiDocument::read(cfg->env, name, file); assets->store(document.release(), name); } catch (const parsing_error& err) { @@ -158,7 +158,7 @@ assetload::postfunc assetload::sound( const std::string name, std::shared_ptr config ) { - auto cfg = dynamic_cast(config.get()); + auto cfg = std::dynamic_pointer_cast(config); bool keepPCM = cfg ? cfg->keepPCM : false; std::string extension = ".ogg"; diff --git a/src/frontend/debug_panel.cpp b/src/frontend/debug_panel.cpp index 05aa76e9..21ff03ad 100644 --- a/src/frontend/debug_panel.cpp +++ b/src/frontend/debug_panel.cpp @@ -78,7 +78,7 @@ std::shared_ptr create_debug_panel( L" "+stream.str(); })); panel->add(create_label([=](){ - return L"seed: "+std::to_wstring(level->world->getSeed()); + return L"seed: "+std::to_wstring(level->getWorld()->getSeed()); })); for (int ax = 0; ax < 3; ax++) { @@ -118,7 +118,7 @@ std::shared_ptr create_debug_panel( } panel->add(create_label([=](){ int hour, minute, second; - timeutil::from_value(level->world->daytime, hour, minute, second); + timeutil::from_value(level->getWorld()->daytime, hour, minute, second); std::wstring timeString = util::lfill(std::to_wstring(hour), 2, L'0') + L":" + @@ -127,8 +127,8 @@ std::shared_ptr create_debug_panel( })); { auto bar = std::make_shared(0.0f, 1.0f, 1.0f, 0.005f, 8); - bar->setSupplier([=]() {return level->world->daytime;}); - bar->setConsumer([=](double val) {level->world->daytime = val;}); + bar->setSupplier([=]() {return level->getWorld()->daytime;}); + bar->setConsumer([=](double val) {level->getWorld()->daytime = val;}); panel->add(bar); } { diff --git a/src/frontend/menu/menu.cpp b/src/frontend/menu/menu.cpp index 2fd0eec0..d06c677e 100644 --- a/src/frontend/menu/menu.cpp +++ b/src/frontend/menu/menu.cpp @@ -168,33 +168,6 @@ void show_convert_request( }, L"", langs::get(L"Cancel")); } -void create_languages_panel(Engine* engine) { - auto menu = engine->getGUI()->getMenu(); - auto panel = menus::create_page(engine, "languages", 400, 0.5f, 1); - panel->setScrollable(true); - - std::vector locales; - for (auto& entry : langs::locales_info) { - locales.push_back(entry.first); - } - std::sort(locales.begin(), locales.end()); - for (std::string& name : locales) { - auto& locale = langs::locales_info.at(name); - std::string& fullName = locale.name; - - auto button = std::make_shared