aboutsummaryrefslogtreecommitdiff
path: root/mwe/events/src/inputSystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/events/src/inputSystem.cpp')
-rw-r--r--mwe/events/src/inputSystem.cpp39
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();
+ }
+ }
+}
+