Merge branch 'main' into dev

This commit is contained in:
MihailRis 2026-04-23 19:13:34 +03:00
commit 8d9d1f9039
4 changed files with 28 additions and 19 deletions

View file

@ -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) | кодирует изображение в указанный формат и возращает массив байт |

View file

@ -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

View file

@ -57,23 +57,22 @@ static int l_sub(lua::State* L) {
if (lua::gettop(L) >= 3) {
end = std::max(0, static_cast<int>(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) {
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) {

View file

@ -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<typename CharT>
static std::basic_string<CharT> lower_case(const std::basic_string<CharT>& str) {
std::basic_string<CharT> result = str;
for (uint i = 0; i < result.length(); i++) {
result[i] = static_cast<wchar_t>(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<typename CharT>
static std::basic_string<CharT> upper_case(const std::basic_string<CharT>& str) {
std::basic_string<CharT> result = str;
for (uint i = 0; i < result.length(); i++) {
result[i] = static_cast<wchar_t>(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<wchar_t>(std::toupper(str[0], locale))}) +