diff options
author | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-10-28 17:58:53 +0100 |
---|---|---|
committer | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-10-28 17:58:53 +0100 |
commit | 5e833bba513d97c39f4e0d26b45a9095c32812a6 (patch) | |
tree | 57c2c6dfdb977a60425c4ca25d21e79fd5f02cf2 /mwe/events/src/inputSystem.cpp | |
parent | f2136f836f9b9e9a6a6698f7bc6fba85a27ebebf (diff) |
button working
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(); + } + } +} + |