aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/facade
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/facade')
-rw-r--r--src/crepe/facade/SDLContext.cpp86
-rw-r--r--src/crepe/facade/SDLContext.h4
2 files changed, 8 insertions, 82 deletions
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index 1ef222c..f87cc61 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -76,75 +76,6 @@ SDLContext::~SDLContext() {
SDL_Quit();
}
-void SDLContext::handle_events(bool &running) {
- EventManager& event_manager = EventManager::get_instance();
- SDL_Event event;
-
- while (SDL_PollEvent(&event)) {
- switch (event.type) {
- case SDL_QUIT:
- running = false;
- event_manager.trigger_event(ShutDownEvent{});
- break;
- case SDL_KEYDOWN:
- event_manager.trigger_event<KeyPressEvent>(KeyPressEvent{
- .repeat = (!event.key.repeat == 0),
- .key = this->sdl_to_keycode(event.key.keysym.scancode)
- });
- break;
-
- case SDL_KEYUP:
- event_manager.trigger_event<KeyReleaseEvent>(KeyReleaseEvent{
- .key = this->sdl_to_keycode(event.key.keysym.scancode),
- });
- break;
-
- case SDL_MOUSEBUTTONDOWN:
- {
- int x, y;
- SDL_GetMouseState(&x, &y);
- event_manager.trigger_event<MousePressEvent>(MousePressEvent{
- .mouse_x = x,
- .mouse_y = y,
- .button = this->sdl_to_mousebutton(event.button.button)
- });
- }
- break;
-
- case SDL_MOUSEBUTTONUP:
- {
- int x, y;
- SDL_GetMouseState(&x, &y);
- event_manager.trigger_event<MouseReleaseEvent>(MouseReleaseEvent{
- .mouse_x = x,
- .mouse_y = y,
- .button = this->sdl_to_mousebutton(event.button.button)
- });
- }
- break;
-
- case SDL_MOUSEMOTION:
- event_manager.trigger_event<MouseMoveEvent>(MouseMoveEvent{
- .mouse_x = event.motion.x,
- .mouse_y = event.motion.y,
- .rel_x = event.motion.xrel,
- .rel_y = event.motion.yrel
- });
- break;
-
- case SDL_MOUSEWHEEL:
- event_manager.trigger_event<MouseScrollEvent>(MouseScrollEvent{
- .scroll_x = event.wheel.x,
- .scroll_y = event.wheel.y,
- .direction = (event.wheel.direction == SDL_MOUSEWHEEL_FLIPPED ? -1 : 1)
- });
- break;
- }
- }
-}
-
-
-
Keycode SDLContext::sdl_to_keycode(SDL_Keycode sdl_key) {
static const std::array<Keycode, SDL_NUM_SCANCODES> LOOKUP_TABLE = [] {
std::array<Keycode, SDL_NUM_SCANCODES> table{};
@@ -259,8 +190,8 @@ Keycode SDLContext::sdl_to_keycode(SDL_Keycode sdl_key) {
return LOOKUP_TABLE[sdl_key];
}
MouseButton SDLContext::sdl_to_mousebutton(Uint8 sdl_button) {
- static const std::array<MouseButton, 8> MOUSE_BUTTON_LOOKUP_TABLE = [] {
- std::array<MouseButton, 8> table{};
+ static const std::array<MouseButton, 5> MOUSE_BUTTON_LOOKUP_TABLE = [] {
+ std::array<MouseButton, 5> table{};
table.fill(MouseButton::NONE);
table[SDL_BUTTON_LEFT] = MouseButton::LEFT_MOUSE;
@@ -409,7 +340,7 @@ std::vector<SDLContext::EventData> SDLContext::get_events(){
event_list.push_back(EventData{
.event_type = SDLContext::Event::MOUSEDOWN,
.mouse_button = sdl_to_mousebutton(event.button.button),
- .mouse_position = {x,y},
+ .mouse_position = {event.button.x,event.button.y},
});
}
break;
@@ -420,32 +351,27 @@ std::vector<SDLContext::EventData> SDLContext::get_events(){
event_list.push_back(EventData{
.event_type = SDLContext::Event::MOUSEUP,
.mouse_button = sdl_to_mousebutton(event.button.button),
- .mouse_position = {x,y},
+ .mouse_position = {event.button.x,event.button.y},
});
}
break;
case SDL_MOUSEMOTION:
{
- int x,y;
- SDL_GetMouseState(&x, &y);
event_list.push_back(EventData{
.event_type = SDLContext::Event::MOUSEMOVE,
- .mouse_position = {x,y},
+ .mouse_position = {event.button.x,event.button.y},
});
}
break;
case SDL_MOUSEWHEEL:
{
- int x, y;
- SDL_GetMouseState(&x, &y);
-
event_list.push_back(EventData{
.event_type = SDLContext::Event::MOUSEWHEEL,
.mouse_position = {event.motion.x,event.motion.y},
.wheel_delta = event.wheel.y,
- .rel_mouse_move {event.motion.yrel,event.motion.xrel},
+ .rel_mouse_move = {event.motion.yrel,event.motion.xrel},
});
}
break;
diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h
index 5b6b093..1b881d1 100644
--- a/src/crepe/facade/SDLContext.h
+++ b/src/crepe/facade/SDLContext.h
@@ -6,6 +6,7 @@
#include <SDL2/SDL_video.h>
#include <cmath>
#include <functional>
+#include <utility>
#include <memory>
#include <string>
@@ -43,7 +44,7 @@ public:
MOUSEWHEEL,
KEYUP,
KEYDOWN,
- SHUTDOWN
+ SHUTDOWN,
};
struct EventData {
@@ -73,7 +74,6 @@ private:
* \brief Handles SDL events such as window close and input.
* \param running Reference to a boolean flag that controls the main loop.
*/
- void handle_events(bool & running);
std::vector<SDLContext::EventData> get_events();
Keycode get_key();