From 3fbc5815fba61ffb4c598dfff083f2ea3547a28d Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 14 Apr 2026 12:15:08 +0300 Subject: [PATCH 1/4] fix a typo --- doc/ru/scripting/ui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ru/scripting/ui.md b/doc/ru/scripting/ui.md index a242ce12e..6cff70e2e 100644 --- a/doc/ru/scripting/ui.md +++ b/doc/ru/scripting/ui.md @@ -202,7 +202,7 @@ document["worlds-panel"]:clear() | data:get_data() | создаёт объект Bytearray с пиксельными данными изображения | | data:create_texture(name: str) | создаёт и делится текстурой с рендерером | | data:unbind_texture() | отвязывает текстуру от холста | -| data:mul(*цвет* или Canvas) | умножает увет на указанный цвет или холст | +| data:mul(*цвет* или Canvas) | умножает цвет на указанный цвет или холст | | data:add(*цвет* или Canvas) | прибавляет цвет или другой холст к цвету | | data:sub(*цвет* или Canvas) | вычитает цвет или другой холст к цвету | | data:encode(format: str) | кодирует изображение в указанный формат и возращает массив байт | From 66796019af77d33be0577bb7bf7a0f30307246e7 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 19 Apr 2026 19:29:42 +0300 Subject: [PATCH 2/4] fix core:player component mob.set_flight call --- res/scripts/components/player.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/scripts/components/player.lua b/res/scripts/components/player.lua index 49a03377f..e829f4b5a 100644 --- a/res/scripts/components/player.lua +++ b/res/scripts/components/player.lua @@ -60,7 +60,7 @@ end local prepared = false body:set_enabled(false) -mob:set_flight(true) +mob.set_flight(true) function on_physics_update(delta) if not prepared then From 31478977099e501752271094802a6f057eb4f01e Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 20 Apr 2026 16:43:27 +0300 Subject: [PATCH 3/4] fix utf8.sub behaviour --- src/logic/scripting/lua/libs/libutf8.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/logic/scripting/lua/libs/libutf8.cpp b/src/logic/scripting/lua/libs/libutf8.cpp index 15fc54e92..163f07e4e 100644 --- a/src/logic/scripting/lua/libs/libutf8.cpp +++ b/src/logic/scripting/lua/libs/libutf8.cpp @@ -57,7 +57,12 @@ static int l_sub(lua::State* L) { if (lua::gettop(L) >= 3) { end = std::max(0, static_cast(lua::tointeger(L, 3) - 1)); } - return lua::pushstring(L, util::u32str2str_utf8(string.substr(start, end))); + return lua::pushstring( + L, + util::u32str2str_utf8( + string.substr(start, (end >= start ? end - start + 1 : 0)) + ) + ); } static int l_upper(lua::State* L) { From 36959807bdeacdedaeb7352ba48103e76d30fa5f Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 20 Apr 2026 17:07:13 +0300 Subject: [PATCH 4/4] use en_US.UTF-8 locale in utf8.tolower, toupper functions --- src/logic/scripting/lua/libs/libutf8.cpp | 14 ++++---------- src/util/stringutil.cpp | 22 ++++++++++++++++------ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/logic/scripting/lua/libs/libutf8.cpp b/src/logic/scripting/lua/libs/libutf8.cpp index 163f07e4e..918bda095 100644 --- a/src/logic/scripting/lua/libs/libutf8.cpp +++ b/src/logic/scripting/lua/libs/libutf8.cpp @@ -66,19 +66,13 @@ static int l_sub(lua::State* L) { } static int l_upper(lua::State* L) { - auto string = util::str2u32str_utf8(lua::require_string(L, 1)); - for (auto& c : string) { - c = std::towupper(c); - } - return lua::pushstring(L, util::u32str2str_utf8(string)); + auto string = util::str2wstr_utf8(lua::require_string(L, 1)); + return lua::pushwstring(L, util::upper_case(string)); } static int l_lower(lua::State* L) { - auto string = util::str2u32str_utf8(lua::require_string(L, 1)); - for (auto& c : string) { - c = std::towlower(c); - } - return lua::pushstring(L, util::u32str2str_utf8(string)); + auto string = util::str2wstr_utf8(lua::require_string(L, 1)); + return lua::pushwstring(L, util::lower_case(string)); } static int l_encode(lua::State* L) { diff --git a/src/util/stringutil.cpp b/src/util/stringutil.cpp index 0329305c3..f97eed83e 100644 --- a/src/util/stringutil.cpp +++ b/src/util/stringutil.cpp @@ -507,22 +507,32 @@ double util::parse_double(const std::string& str, size_t offset, size_t len) { return parse_double(str.substr(offset, len)); } -std::wstring util::lower_case(const std::wstring& str) { - std::wstring result = str; +template +static std::basic_string lower_case(const std::basic_string& str) { + std::basic_string result = str; for (uint i = 0; i < result.length(); i++) { - result[i] = static_cast(std::tolower(str[i], locale)); + result[i] = std::tolower(str[i], locale); } return result; } -std::wstring util::upper_case(const std::wstring& str) { - std::wstring result = str; +template +static std::basic_string upper_case(const std::basic_string& str) { + std::basic_string result = str; for (uint i = 0; i < result.length(); i++) { - result[i] = static_cast(std::toupper(str[i], locale)); + result[i] = std::toupper(str[i], locale); } return result; } +std::wstring util::lower_case(const std::wstring& str) { + return ::lower_case(str); +} + +std::wstring util::upper_case(const std::wstring& str) { + return ::upper_case(str); +} + std::wstring util::capitalized(const std::wstring& str) { if (str.empty()) return str; return std::wstring({static_cast(std::toupper(str[0], locale))}) +