final, but buuugs

This commit is contained in:
Stepanov Igor 2025-10-05 19:09:24 +03:00
parent 82562300ff
commit 5e19c6807c
5 changed files with 13 additions and 27 deletions

View file

@ -89,6 +89,7 @@ void input_sdl::pollEvents() {
cursor = {event.motion.x, event.motion.y}; cursor = {event.motion.x, event.motion.y};
break; break;
case SDL_EVENT_WINDOW_RESIZED: case SDL_EVENT_WINDOW_RESIZED:
window.setSize({event.window.data1, event.window.data2});
break; break;
case SDL_EVENT_TEXT_INPUT: case SDL_EVENT_TEXT_INPUT:
std::vector<char> vec( std::vector<char> vec(

View file

@ -344,12 +344,12 @@ void window_sdl::resetScissor() {
} }
double window_sdl::time() { double window_sdl::time() {
return static_cast<double>(SDL_GetTicks()) / 1000; return static_cast<double>(SDL_GetTicksNS()) / 1'000'000'000;
} }
void window_sdl::setFramerate(int framerate) { void window_sdl::setFramerate(int framerate) {
/*todo*/ /*todo*/
if (!SDL_GL_SetSwapInterval(1)) { if (!SDL_GL_SetSwapInterval(framerate)) {
logger.error() << "Failed to set framerate: " << SDL_GetError(); logger.error() << "Failed to set framerate: " << SDL_GetError();
} }
} }

View file

@ -8,7 +8,6 @@
debug::Logger logger("input"); debug::Logger logger("input");
static std::unordered_map<int, std::string> keynames {};
static std::unordered_map<int, std::string> buttonsnames {}; static std::unordered_map<int, std::string> buttonsnames {};
static std::unordered_map<std::string, int> mousecodes { static std::unordered_map<std::string, int> mousecodes {
@ -19,22 +18,6 @@ static std::unordered_map<std::string, int> mousecodes {
{"side2", SDL_BUTTON_X2}, {"side2", SDL_BUTTON_X2},
}; };
std::string input_util::get_name(Mousecode code) {
const auto found = buttonsnames.find(static_cast<int>(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<int>(code));
if (found == keynames.end()) {
return "unknown";
}
return found->second;
}
void Binding::reset(InputType type, int code) { void Binding::reset(InputType type, int code) {
this->type = type; this->type = type;
this->code = code; this->code = code;
@ -49,7 +32,11 @@ void Binding::reset(Mousecode code) {
} }
Mousecode input_util::mousecode_from(const std::string& name) { 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<Mousecode>(found->second);
} }
void input_util::initialize() { void input_util::initialize() {
@ -139,12 +126,12 @@ std::string Bindings::write() const {
case InputType::KEYBOARD: case InputType::KEYBOARD:
value = value =
"key:" + "key:" +
input_util::get_name(static_cast<Keycode>(binding.code)); input_util::to_string(static_cast<Keycode>(binding.code));
break; break;
case InputType::MOUSE: case InputType::MOUSE:
value = value =
"mouse:" + "mouse:" +
input_util::get_name(static_cast<Mousecode>(binding.code)); input_util::to_string(static_cast<Mousecode>(binding.code));
break; break;
default: default:
throw std::runtime_error("unsupported control type"); throw std::runtime_error("unsupported control type");

View file

@ -133,11 +133,6 @@ namespace input_util {
std::string to_string(Keycode code); std::string to_string(Keycode code);
/// @return Mouse button label by keycode /// @return Mouse button label by keycode
std::string to_string(Mousecode code); 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 { enum class InputType {

View file

@ -43,6 +43,9 @@ public:
virtual const glm::ivec2& getSize() const { virtual const glm::ivec2& getSize() const {
return size; return size;
} }
virtual void setSize(const glm::ivec2& s) {
size = std::move(s);
}
static std::tuple<std::unique_ptr<Window>, std::unique_ptr<Input>> static std::tuple<std::unique_ptr<Window>, std::unique_ptr<Input>>
initialize(DisplaySettings* settings, std::string title); initialize(DisplaySettings* settings, std::string title);