diff options
-rw-r--r-- | mwe/events/CMakeLists.txt | 5 | ||||
-rw-r--r-- | mwe/events/include/event.h | 13 | ||||
-rw-r--r-- | mwe/events/include/iKeyListener.h | 2 | ||||
-rw-r--r-- | mwe/events/include/iMouseListener.h | 26 | ||||
-rw-r--r-- | mwe/events/include/keyListenerTest.h | 12 | ||||
-rw-r--r-- | mwe/events/include/mouseListenerTest.h | 14 | ||||
-rw-r--r-- | mwe/events/src/event.cpp | 24 | ||||
-rw-r--r-- | mwe/events/src/keyListenerTest.cpp | 17 | ||||
-rw-r--r-- | mwe/events/src/main.cpp | 11 | ||||
-rw-r--r-- | mwe/events/src/mouseListenerTest.cpp | 25 |
10 files changed, 111 insertions, 38 deletions
diff --git a/mwe/events/CMakeLists.txt b/mwe/events/CMakeLists.txt index e429516..096b8ad 100644 --- a/mwe/events/CMakeLists.txt +++ b/mwe/events/CMakeLists.txt @@ -13,13 +13,16 @@ find_package(SDL2 REQUIRED) add_executable(gameloop src/window.cpp src/main.cpp - #src/eventHandler.cpp src/eventManager.cpp src/event.cpp src/loopManager.cpp src/timer.cpp src/keyCodes.cpp src/eventHandler.cpp + src/iMouseListener.cpp + src/iKeyListener.cpp + src/mouseListenerTest.cpp + src/keyListenerTest.cpp ) add_subdirectory(../../lib/SDL_ttf SDL_ttf) # Link the SDL2 library to your project diff --git a/mwe/events/include/event.h b/mwe/events/include/event.h index 8968c6c..65560a1 100644 --- a/mwe/events/include/event.h +++ b/mwe/events/include/event.h @@ -67,15 +67,14 @@ public: class MouseClickEvent : public Event { public: MouseClickEvent(int x, int y, MouseButton button); - + REGISTER_EVENT_TYPE("KeyClickedEvent"); - int getX() const { return x; } - int getY() const { return y; } + std::pair<int, int> getMousePosition() const; MouseButton getButton() const { return button; } private: - int x; - int y; + int mouseX = 0; + int mouseY = 0; MouseButton button; }; // KeyReleasedEvent class @@ -147,9 +146,7 @@ public: REGISTER_EVENT_TYPE(TextSubmitEvent) - std::string getText() const { - return text; - } + std::string getText() const; private: std::string text; diff --git a/mwe/events/include/iKeyListener.h b/mwe/events/include/iKeyListener.h index 87ee1d5..5f39ece 100644 --- a/mwe/events/include/iKeyListener.h +++ b/mwe/events/include/iKeyListener.h @@ -11,6 +11,8 @@ public: protected: void subscribeEvents(int listenerId = 0); void unsubscribeEvents(int listenerId = 0); + void activate(int listenerId = 0) { subscribeEvents(listenerId); } + void deactivate(int listenerId = 0) { unsubscribeEvents(listenerId); } private: EventHandler<KeyPressedEvent> keyPressedHandler; diff --git a/mwe/events/include/iMouseListener.h b/mwe/events/include/iMouseListener.h index 7ae371c..03fd4c3 100644 --- a/mwe/events/include/iMouseListener.h +++ b/mwe/events/include/iMouseListener.h @@ -1,36 +1,18 @@ +#pragma once #include "event.h" #include "eventManager.h" #include "eventHandler.h" class IMouseListener { public: - virtual ~IMouseListener() { - unsubscribeEvents(); - } + virtual ~IMouseListener(); virtual void onMouseClicked(const MouseClickEvent& event) = 0; virtual void onMousePressed(const MousePressedEvent& event) = 0; virtual void onMouseReleased(const MouseReleasedEvent& event) = 0; virtual void onMouseMoved(const MouseMovedEvent& event) = 0; - protected: - void subscribeEvents(int listenerId = 0) { - mouseClickHandler = [this](const MouseClickEvent& event) { this->onMouseClicked(event); }; - mousePressHandler = [this](const MousePressedEvent& event) { this->onMousePressed(event); }; - mouseReleaseHandler = [this](const MouseReleasedEvent& event) { this->onMouseReleased(event); }; - mouseMoveHandler = [this](const MouseMovedEvent& event) { this->onMouseMoved(event); }; - - subscribe<MouseClickEvent>(mouseClickHandler, listenerId); - subscribe<MousePressedEvent>(mousePressHandler, listenerId); - subscribe<MouseReleasedEvent>(mouseReleaseHandler, listenerId); - subscribe<MouseMovedEvent>(mouseMoveHandler, listenerId); - } - - void unsubscribeEvents(int listenerId = 0) { - unsubscribe<MouseClickEvent>(mouseClickHandler, listenerId); - unsubscribe<MousePressedEvent>(mousePressHandler, listenerId); - unsubscribe<MouseReleasedEvent>(mouseReleaseHandler, listenerId); - unsubscribe<MouseMovedEvent>(mouseMoveHandler, listenerId); - } + void subscribeEvents(int listenerId = 0); + void unsubscribeEvents(int listenerId = 0); private: EventHandler<MouseClickEvent> mouseClickHandler; diff --git a/mwe/events/include/keyListenerTest.h b/mwe/events/include/keyListenerTest.h new file mode 100644 index 0000000..5990cd1 --- /dev/null +++ b/mwe/events/include/keyListenerTest.h @@ -0,0 +1,12 @@ +#pragma once +#include "iKeyListener.h" +#include <iostream> + +class KeyListenerTest : public IKeyListener { +public: + KeyListenerTest(int listenerId); + ~KeyListenerTest(); + + void onKeyPressed(const KeyPressedEvent& event) override; + void onKeyReleased(const KeyReleasedEvent& event) override; +}; diff --git a/mwe/events/include/mouseListenerTest.h b/mwe/events/include/mouseListenerTest.h new file mode 100644 index 0000000..dae04f5 --- /dev/null +++ b/mwe/events/include/mouseListenerTest.h @@ -0,0 +1,14 @@ +#pragma once +#include "iMouseListener.h" +#include <iostream> + +class MouseListenerTest : public IMouseListener { +public: + MouseListenerTest(int listenerId); + ~MouseListenerTest(); + + void onMouseClicked(const MouseClickEvent& event) override; + void onMousePressed(const MousePressedEvent& event) override; + void onMouseReleased(const MouseReleasedEvent& event) override; + void onMouseMoved(const MouseMovedEvent& event) override; +}; diff --git a/mwe/events/src/event.cpp b/mwe/events/src/event.cpp index 2509088..fc8eec9 100644 --- a/mwe/events/src/event.cpp +++ b/mwe/events/src/event.cpp @@ -53,10 +53,28 @@ Collision CollisionEvent::getCollisionData() const return this->collisionData; } -TextSubmitEvent::TextSubmitEvent(std::string text) : Event("TextSubmitEvent"){ +TextSubmitEvent::TextSubmitEvent(std::string text) + : text(text), Event("TextSubmitEvent") {} +std::string TextSubmitEvent::getText() const { + return this->text; } -std::string TextSubmitEvent::getText() const{ - return this->text; + +MouseReleasedEvent::MouseReleasedEvent(int x, int y, MouseButton button) : mouseX(x), mouseY(y), button(button),Event("MouseReleased"){ + +} +std::pair<int, int> MouseReleasedEvent::getMousePosition() const{ + return {mouseX,mouseY}; +} +MouseClickEvent::MouseClickEvent(int x,int y,MouseButton button) : mouseX(x), mouseY(y), button(button),Event("MouseClickEvent"){ + } +MouseMovedEvent::MouseMovedEvent(int x, int y) : mouseX(x), mouseY(y),Event("MouseMovedEvent"){ +} +std::pair<int, int> MouseClickEvent::getMousePosition() const { + return {mouseX, mouseY}; +} +std::pair<int, int> MouseMovedEvent::getMousePosition() const { + return {mouseX, mouseY}; +} diff --git a/mwe/events/src/keyListenerTest.cpp b/mwe/events/src/keyListenerTest.cpp new file mode 100644 index 0000000..90b92a5 --- /dev/null +++ b/mwe/events/src/keyListenerTest.cpp @@ -0,0 +1,17 @@ +#include "keyListenerTest.h" + +KeyListenerTest::KeyListenerTest(int listenerId) { + subscribeEvents(listenerId); +} + +KeyListenerTest::~KeyListenerTest() { + unsubscribeEvents(); +} + +void KeyListenerTest::onKeyPressed(const KeyPressedEvent& event) { + std::cout << "Key pressed: " << event.getKeyCode() << std::endl; +} + +void KeyListenerTest::onKeyReleased(const KeyReleasedEvent& event) { + std::cout << "Key released: " << event.getKeyCode() << std::endl; +} diff --git a/mwe/events/src/main.cpp b/mwe/events/src/main.cpp index d056f85..03dff16 100644 --- a/mwe/events/src/main.cpp +++ b/mwe/events/src/main.cpp @@ -6,6 +6,10 @@ #include "loopManager.h" #include "event.h" #include "customTypes.h" +#include "iKeyListener.h" +#include "iMouseListener.h" +#include "keyListenerTest.h" +#include "mouseListenerTest.h" class PlayerDamagedEvent : public Event { public: PlayerDamagedEvent(int damage, int playerID) @@ -46,10 +50,9 @@ void testCollisionEvent() { } int main(int argc, char * args[]) { LoopManager gameLoop; - // Create an event handler for KeyPressedEvent - // EventHandler<KeyPressedEvent> callback = [](const KeyPressedEvent& e) { - // onKeyPressed(e); - // }; + int testListenerId = 0; + KeyListenerTest keyListener(testListenerId); + MouseListenerTest mouseListener(testListenerId); // custom event class poc subscribe<PlayerDamagedEvent>(onPlayerDamaged); triggerEvent(PlayerDamagedEvent(50, 1)); diff --git a/mwe/events/src/mouseListenerTest.cpp b/mwe/events/src/mouseListenerTest.cpp new file mode 100644 index 0000000..4b3aa3e --- /dev/null +++ b/mwe/events/src/mouseListenerTest.cpp @@ -0,0 +1,25 @@ +#include "mouseListenerTest.h" + +MouseListenerTest::MouseListenerTest(int listenerId) { + subscribeEvents(listenerId); +} + +MouseListenerTest::~MouseListenerTest() { + unsubscribeEvents(); +} + +void MouseListenerTest::onMouseClicked(const MouseClickEvent& event) { + std::cout << "Mouse clicked at: (" << event.getMousePosition().first << ", " << event.getMousePosition().second << ")" << std::endl; +} + +void MouseListenerTest::onMousePressed(const MousePressedEvent& event) { + std::cout << "Mouse button pressed at: (" << event.getMousePosition().first << ", " << event.getMousePosition().second << ")" << std::endl; +} + +void MouseListenerTest::onMouseReleased(const MouseReleasedEvent& event) { + std::cout << "Mouse button released at: (" << event.getMousePosition().first << ", " << event.getMousePosition().second << ")" << std::endl; +} + +void MouseListenerTest::onMouseMoved(const MouseMovedEvent& event) { + std::cout << "Mouse moved to: (" << event.getMousePosition().first << ", " << event.getMousePosition().second << ")" << std::endl; +} |