6#include "fifechan/backends/sdl3/input.hpp"
14#include <utf8cpp/utf8.h>
17#include "fifechan/exception.hpp"
84 case SDL_EVENT_KEY_DOWN:
85 case SDL_EVENT_KEY_UP: {
87 keyInput.
setKey(Key(
static_cast<int>(event.key.key)));
88 keyInput.
setType(event.type == SDL_EVENT_KEY_DOWN ? KeyInput::Type::Pressed : KeyInput::Type::Released);
98 case SDL_EVENT_MOUSE_BUTTON_DOWN: {
100 mouseInput.
setX(
static_cast<int>(event.button.x));
101 mouseInput.
setY(
static_cast<int>(event.button.y));
103 mouseInput.
setType(MouseInput::Type::Pressed);
109 case SDL_EVENT_MOUSE_BUTTON_UP: {
111 mouseInput.
setX(
static_cast<int>(event.button.x));
112 mouseInput.
setY(
static_cast<int>(event.button.y));
114 mouseInput.
setType(MouseInput::Type::Released);
120 case SDL_EVENT_MOUSE_MOTION: {
121 mouseInput.
setX(
static_cast<int>(event.motion.x));
122 mouseInput.
setY(
static_cast<int>(event.motion.y));
123 mouseInput.
setButton(MouseInput::Button::Empty);
124 mouseInput.
setType(MouseInput::Type::Moved);
130 case SDL_EVENT_MOUSE_WHEEL: {
131 if (event.wheel.y > 0) {
132 mouseInput.
setType(MouseInput::Type::WheelMovedUp);
133 }
else if (event.wheel.y < 0) {
134 mouseInput.
setType(MouseInput::Type::WheelMovedDown);
136 if (event.wheel.x > 0) {
137 mouseInput.
setType(MouseInput::Type::WheelMovedRight);
138 }
else if (event.wheel.x < 0) {
139 mouseInput.
setType(MouseInput::Type::WheelMovedLeft);
143 SDL_GetMouseState(&x, &y);
144 mouseInput.
setX(
static_cast<int>(x));
145 mouseInput.
setY(
static_cast<int>(y));
153 case SDL_EVENT_TEXT_INPUT: {
154 std::string text(event.text.text);
161 case SDL_EVENT_WINDOW_MOUSE_ENTER: {
165 case SDL_EVENT_WINDOW_MOUSE_LEAVE: {
179 case SDL_BUTTON_LEFT:
180 return MouseInput::Button::Left;
182 case SDL_BUTTON_RIGHT:
183 return MouseInput::Button::Right;
185 case SDL_BUTTON_MIDDLE:
186 return MouseInput::Button::Middle;
189 return MouseInput::Button::X1;
192 return MouseInput::Button::X2;
195 return MouseInput::Button::Empty;
void throwException(std::string const &message, std::source_location location=std::source_location::current())
Throw an Exception capturing the current source location.