diff options
Diffstat (limited to 'mwe/events/src/inputSystem.cpp')
-rw-r--r-- | mwe/events/src/inputSystem.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/mwe/events/src/inputSystem.cpp b/mwe/events/src/inputSystem.cpp new file mode 100644 index 0000000..ffab84b --- /dev/null +++ b/mwe/events/src/inputSystem.cpp @@ -0,0 +1,39 @@ +#include "inputSystem.h" + +InputSystem::InputSystem() {} + +void InputSystem::registerButton(Button* button) { + buttons.push_back(button); +} + +void InputSystem::processInput() { + + SDL_Event event; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_QUIT: + triggerEvent(ShutDownEvent()); + break; + case SDL_KEYDOWN: + triggerEvent(KeyPressedEvent(getCustomKey(event.key.keysym.sym))); + break; + case SDL_MOUSEBUTTONDOWN: { + int mouseX, mouseY; + SDL_GetMouseState(&mouseX, &mouseY); + processMouseClick(mouseX, mouseY); + triggerEvent(MousePressedEvent(mouseX, mouseY)); + break; + } + } + } +} + +void InputSystem::processMouseClick(int mouseX, int mouseY) { + for (auto* button : buttons) { + if (mouseX >= button->x && mouseX <= (button->x + button->width) && + mouseY >= button->y && mouseY <= (button->y + button->height)) { + button->onClick(); + } + } +} + |