From 5e19c6807ca017228e85bcba60c8161d347c9827 Mon Sep 17 00:00:00 2001 From: Stepanov Igor Date: Sun, 5 Oct 2025 19:09:24 +0300 Subject: [PATCH] final, but buuugs --- src/window/detail/input_sdl.cpp | 1 + src/window/detail/window_sdl.cpp | 4 ++-- src/window/input.cpp | 27 +++++++-------------------- src/window/input.hpp | 5 ----- src/window/window.hpp | 3 +++ 5 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/window/detail/input_sdl.cpp b/src/window/detail/input_sdl.cpp index 410fdc02b..673b1d690 100644 --- a/src/window/detail/input_sdl.cpp +++ b/src/window/detail/input_sdl.cpp @@ -89,6 +89,7 @@ void input_sdl::pollEvents() { cursor = {event.motion.x, event.motion.y}; break; case SDL_EVENT_WINDOW_RESIZED: + window.setSize({event.window.data1, event.window.data2}); break; case SDL_EVENT_TEXT_INPUT: std::vector vec( diff --git a/src/window/detail/window_sdl.cpp b/src/window/detail/window_sdl.cpp index 3059b6f62..93af4f514 100644 --- a/src/window/detail/window_sdl.cpp +++ b/src/window/detail/window_sdl.cpp @@ -344,12 +344,12 @@ void window_sdl::resetScissor() { } double window_sdl::time() { - return static_cast(SDL_GetTicks()) / 1000; + return static_cast(SDL_GetTicksNS()) / 1'000'000'000; } void window_sdl::setFramerate(int framerate) { /*todo*/ - if (!SDL_GL_SetSwapInterval(1)) { + if (!SDL_GL_SetSwapInterval(framerate)) { logger.error() << "Failed to set framerate: " << SDL_GetError(); } } diff --git a/src/window/input.cpp b/src/window/input.cpp index c774c6209..04cb6df42 100644 --- a/src/window/input.cpp +++ b/src/window/input.cpp @@ -8,7 +8,6 @@ debug::Logger logger("input"); -static std::unordered_map keynames {}; static std::unordered_map buttonsnames {}; static std::unordered_map mousecodes { @@ -19,22 +18,6 @@ static std::unordered_map mousecodes { {"side2", SDL_BUTTON_X2}, }; -std::string input_util::get_name(Mousecode code) { - const auto found = buttonsnames.find(static_cast(code)); - if (found == buttonsnames.end()) { - return "unknown"; - } - return found->second; -} - -std::string input_util::get_name(Keycode code) { - const auto found = keynames.find(static_cast(code)); - if (found == keynames.end()) { - return "unknown"; - } - return found->second; -} - void Binding::reset(InputType type, int code) { this->type = type; this->code = code; @@ -49,7 +32,11 @@ void Binding::reset(Mousecode code) { } Mousecode input_util::mousecode_from(const std::string& name) { - return {}; + const auto& found = mousecodes.find(name); + if (found == mousecodes.end()) { + return Mousecode::UNKNOWN; + } + return static_cast(found->second); } void input_util::initialize() { @@ -139,12 +126,12 @@ std::string Bindings::write() const { case InputType::KEYBOARD: value = "key:" + - input_util::get_name(static_cast(binding.code)); + input_util::to_string(static_cast(binding.code)); break; case InputType::MOUSE: value = "mouse:" + - input_util::get_name(static_cast(binding.code)); + input_util::to_string(static_cast(binding.code)); break; default: throw std::runtime_error("unsupported control type"); diff --git a/src/window/input.hpp b/src/window/input.hpp index c8a100f21..a6fdcb355 100644 --- a/src/window/input.hpp +++ b/src/window/input.hpp @@ -133,11 +133,6 @@ namespace input_util { std::string to_string(Keycode code); /// @return Mouse button label by keycode std::string to_string(Mousecode code); - - /// @return Key name by keycode - std::string get_name(Keycode code); - /// @return Mouse button name by keycode - std::string get_name(Mousecode code); } enum class InputType { diff --git a/src/window/window.hpp b/src/window/window.hpp index d19ab5087..976f74dc5 100644 --- a/src/window/window.hpp +++ b/src/window/window.hpp @@ -43,6 +43,9 @@ public: virtual const glm::ivec2& getSize() const { return size; } + virtual void setSize(const glm::ivec2& s) { + size = std::move(s); + } static std::tuple, std::unique_ptr> initialize(DisplaySettings* settings, std::string title);