diff --git a/res/texts/ru_RU.txt b/res/texts/ru_RU.txt index 65085d46..71fabbb7 100644 --- a/res/texts/ru_RU.txt +++ b/res/texts/ru_RU.txt @@ -34,6 +34,7 @@ settings.Load Speed=Скорость Загрузки settings.Fog Curve=Кривая Тумана settings.Backlight=Подсветка settings.V-Sync=Вертикальная Синхронизация +settings.Camera Shaking=Тряска Камеры settings.FOV=Поле Зрения settings.Mouse Sensitivity=Чувствительность Мыши diff --git a/src/audio/audioutil.cpp b/src/audio/audioutil.cpp index fcb6b773..17e3d99c 100644 --- a/src/audio/audioutil.cpp +++ b/src/audio/audioutil.cpp @@ -15,21 +15,23 @@ #endif bool is_big_endian(void){ - union { - uint32_t i; - char c[4]; - } bint = {0x01020304}; + uint32_t ui32_v = 0x01020304; + char bytes[sizeof(uint32_t)]; + std::memcpy(bytes, &ui32_v, sizeof(uint32_t)); - return bint.c[0] == 1; + return bytes[0] == 1; } std::int32_t convert_to_int(char* buffer, std::size_t len){ std::int32_t a = 0; - if(!is_big_endian()) + if (!is_big_endian()) { std::memcpy(&a, buffer, len); - else - for(std::size_t i = 0; i < len; ++i) + } + else { + for (std::size_t i = 0; i < len; ++i) { reinterpret_cast(&a)[3 - i] = buffer[i]; + } + } return a; } diff --git a/src/frontend/gui/panels.cpp b/src/frontend/gui/panels.cpp index 2a65903b..e86c6e28 100644 --- a/src/frontend/gui/panels.cpp +++ b/src/frontend/gui/panels.cpp @@ -1,6 +1,7 @@ #include "panels.h" #include +#include #include "../../window/Window.h" #include "../../assets/Assets.h" diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index 87b18957..56aa500b 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -596,6 +596,19 @@ void create_settings_panel(Engine* engine) { panel->add(checkbox); } + /* Camera shaking checkbox */ { + auto checkbox = std::make_shared( + langs::get(L"Camera Shaking", L"settings"), vec2(400, 32) + ); + checkbox->setSupplier([=]() { + return engine->getSettings().camera.shaking; + }); + checkbox->setConsumer([=](bool checked) { + engine->getSettings().camera.shaking = checked; + }); + panel->add(checkbox); + } + std::string langName = langs::locales_info.at(langs::current->getId()).name; panel->add(guiutil::gotoButton( langs::get(L"Language", L"settings")+L": "+ diff --git a/src/items/Inventories.cpp b/src/items/Inventories.cpp index 0b1ac2dc..c072ff27 100644 --- a/src/items/Inventories.cpp +++ b/src/items/Inventories.cpp @@ -1,4 +1,7 @@ #include "Inventories.h" + +#include + #include "../world/Level.h" #include "../world/World.h" @@ -18,7 +21,7 @@ std::shared_ptr Inventories::create(size_t size) { std::shared_ptr Inventories::createVirtual(size_t size) { int64_t id; do { - id = -std::max(1L, std::abs(random.rand64())); + id = -std::max(1LL, std::llabs(random.rand64())); } while (map.find(id) != map.end()); auto inv = std::make_shared(id, size);