diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-25 21:21:27 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-25 21:21:27 +0200 |
commit | 7d8af5f56f9359fff792470fbb55154268b36458 (patch) | |
tree | 139729ca86274eeb7b64d55bce7cd0194ace3286 | |
parent | f1b2c5a38f49bb319babf11bf64c420a63e104f2 (diff) |
`make format`
-rw-r--r-- | mwe/events/include/customTypes.h | 55 | ||||
-rw-r--r-- | mwe/events/include/event.h | 12 | ||||
-rw-r--r-- | mwe/events/include/eventManager.h | 12 | ||||
-rw-r--r-- | mwe/events/src/event.cpp | 8 | ||||
-rw-r--r-- | mwe/events/src/eventManager.cpp | 200 | ||||
-rw-r--r-- | mwe/events/src/main.cpp | 48 |
6 files changed, 182 insertions, 153 deletions
diff --git a/mwe/events/include/customTypes.h b/mwe/events/include/customTypes.h index 7217f8a..a5d8dc9 100644 --- a/mwe/events/include/customTypes.h +++ b/mwe/events/include/customTypes.h @@ -1,39 +1,38 @@ #pragma once #include <cmath> struct Vector2 { - float x; // X component of the vector - float y; // Y component of the vector + float x; // X component of the vector + float y; // Y component of the vector - // Vector subtraction - Vector2 operator-(const Vector2& other) const { - return {x - other.x, y - other.y}; - } + // Vector subtraction + Vector2 operator-(const Vector2 & other) const { + return {x - other.x, y - other.y}; + } - // Vector addition - Vector2 operator+(const Vector2& other) const { - return {x + other.x, y + other.y}; - } + // Vector addition + Vector2 operator+(const Vector2 & other) const { + return {x + other.x, y + other.y}; + } - // Scalar multiplication - Vector2 operator*(float scalar) const { - return {x * scalar, y * scalar}; - } + // Scalar multiplication + Vector2 operator*(float scalar) const { return {x * scalar, y * scalar}; } - // Normalize the vector - Vector2 normalize() const { - float length = std::sqrt(x * x + y * y); - if (length == 0) return {0, 0}; // Prevent division by zero - return {x / length, y / length}; - } + // Normalize the vector + Vector2 normalize() const { + float length = std::sqrt(x * x + y * y); + if (length == 0) return {0, 0}; // Prevent division by zero + return {x / length, y / length}; + } }; struct Collision { - int objectIdA; // ID of the first object - int objectIdB; // ID of the second object - Vector2 contactPoint; // Point of contact - Vector2 contactNormal; // Normal vector at the contact point - - // Constructor to initialize a Collision - Collision(int idA, int idB, const Vector2& point, const Vector2& normal, float depth) - : objectIdA(idA), objectIdB(idB), contactPoint(point), contactNormal(normal) {} + int objectIdA; // ID of the first object + int objectIdB; // ID of the second object + Vector2 contactPoint; // Point of contact + Vector2 contactNormal; // Normal vector at the contact point + // Constructor to initialize a Collision + Collision(int idA, int idB, const Vector2 & point, const Vector2 & normal, + float depth) + : objectIdA(idA), objectIdB(idB), contactPoint(point), + contactNormal(normal) {} }; diff --git a/mwe/events/include/event.h b/mwe/events/include/event.h index 0208085..730ee4b 100644 --- a/mwe/events/include/event.h +++ b/mwe/events/include/event.h @@ -1,12 +1,11 @@ #pragma once +#include "customTypes.h" #include "keyCodes.h" #include <cstdint> #include <iostream> #include <string> #include <unordered_map> #include <variant> -#include "keyCodes.h" -#include "customTypes.h" class UUIDGenerator { public: @@ -93,13 +92,12 @@ private: }; class CollisionEvent : public Event { public: - CollisionEvent(Collision); + CollisionEvent(Collision); - REGISTER_EVENT_TYPE(CollisionEvent) + REGISTER_EVENT_TYPE(CollisionEvent) - Collision getCollisionData() const; + Collision getCollisionData() const; private: - Collision collisionData; - + Collision collisionData; }; diff --git a/mwe/events/include/eventManager.h b/mwe/events/include/eventManager.h index 61e8c01..508a5e2 100644 --- a/mwe/events/include/eventManager.h +++ b/mwe/events/include/eventManager.h @@ -28,10 +28,14 @@ public: void dispatchEvents(); private: - EventManager() = default; - std::vector<std::pair<std::unique_ptr<Event>, int>> eventsQueue; - std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> subscribers; - std::unordered_map<int, std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>> subscribersByEventId; + EventManager() = default; + std::vector<std::pair<std::unique_ptr<Event>, int>> eventsQueue; + std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> + subscribers; + std::unordered_map< + int, std::unordered_map< + int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>> + subscribersByEventId; }; template <typename EventType> diff --git a/mwe/events/src/event.cpp b/mwe/events/src/event.cpp index 38ff62a..c9201d0 100644 --- a/mwe/events/src/event.cpp +++ b/mwe/events/src/event.cpp @@ -44,11 +44,9 @@ std::pair<int, int> MousePressedEvent::getMousePosition() const { } //Collision event -CollisionEvent::CollisionEvent(Collision collision) : collisionData(collision), Event("CollisionEvent") { +CollisionEvent::CollisionEvent(Collision collision) + : collisionData(collision), Event("CollisionEvent") {} -} - -Collision CollisionEvent::getCollisionData() const -{ +Collision CollisionEvent::getCollisionData() const { return this->collisionData; } diff --git a/mwe/events/src/eventManager.cpp b/mwe/events/src/eventManager.cpp index c37dcb0..34a093d 100644 --- a/mwe/events/src/eventManager.cpp +++ b/mwe/events/src/eventManager.cpp @@ -1,98 +1,130 @@ #include "eventManager.h" -void EventManager::shutdown() -{ - subscribers.clear(); -} +void EventManager::shutdown() { subscribers.clear(); } -void EventManager::subscribe(int eventType, std::unique_ptr<IEventHandlerWrapper>&& handler, int eventId) -{ - if (eventId) { - std::unordered_map<int, std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>::iterator subscribers = subscribersByEventId.find(eventType); +void EventManager::subscribe(int eventType, + std::unique_ptr<IEventHandlerWrapper> && handler, + int eventId) { + if (eventId) { + std::unordered_map< + int, std::unordered_map< + int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>:: + iterator subscribers + = subscribersByEventId.find(eventType); - if (subscribers != subscribersByEventId.end()) { - std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>& handlersMap = subscribers->second; - std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator handlers = handlersMap.find(eventId); - if (handlers != handlersMap.end()) { - handlers->second.emplace_back(std::move(handler)); - return; - } - } - subscribersByEventId[eventType][eventId].emplace_back(std::move(handler)); + if (subscribers != subscribersByEventId.end()) { + std::unordered_map< + int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> & + handlersMap + = subscribers->second; + std::unordered_map< + int, + std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator + handlers + = handlersMap.find(eventId); + if (handlers != handlersMap.end()) { + handlers->second.emplace_back(std::move(handler)); + return; + } + } + subscribersByEventId[eventType][eventId].emplace_back( + std::move(handler)); - } else { - auto& handlers = subscribers[eventType]; - handlers.emplace_back(std::move(handler)); - } + } else { + auto & handlers = subscribers[eventType]; + handlers.emplace_back(std::move(handler)); + } } -void EventManager::unsubscribe(int eventType, const std::string& handlerName, int eventId) -{ - if (eventId) { - std::unordered_map<int, std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>::iterator subscriberList = subscribersByEventId.find(eventType); - if (subscriberList != subscribersByEventId.end()) { - std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>& handlersMap = subscriberList->second; - std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator handlers = handlersMap.find(eventId); - if (handlers != handlersMap.end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>>& callbacks = handlers->second; - for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it = callbacks.begin(); it != callbacks.end(); ++it) { - if (it->get()->getType() == handlerName) { - it = callbacks.erase(it); - return; - } - } - } - } - } else { - std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator handlersIt = subscribers.find(eventType); - if (handlersIt != subscribers.end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>>& handlers = handlersIt->second; - for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it = handlers.begin(); it != handlers.end(); ++it) { - if (it->get()->getType() == handlerName) { - it = handlers.erase(it); - return; - } - } - } - } +void EventManager::unsubscribe(int eventType, const std::string & handlerName, + int eventId) { + if (eventId) { + std::unordered_map< + int, std::unordered_map< + int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>:: + iterator subscriberList + = subscribersByEventId.find(eventType); + if (subscriberList != subscribersByEventId.end()) { + std::unordered_map< + int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> & + handlersMap + = subscriberList->second; + std::unordered_map< + int, + std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator + handlers + = handlersMap.find(eventId); + if (handlers != handlersMap.end()) { + std::vector<std::unique_ptr<IEventHandlerWrapper>> & callbacks + = handlers->second; + for (std::vector< + std::unique_ptr<IEventHandlerWrapper>>::iterator it + = callbacks.begin(); + it != callbacks.end(); ++it) { + if (it->get()->getType() == handlerName) { + it = callbacks.erase(it); + return; + } + } + } + } + } else { + std::unordered_map< + int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator + handlersIt + = subscribers.find(eventType); + if (handlersIt != subscribers.end()) { + std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers + = handlersIt->second; + for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it + = handlers.begin(); + it != handlers.end(); ++it) { + if (it->get()->getType() == handlerName) { + it = handlers.erase(it); + return; + } + } + } + } } -void EventManager::triggerEvent(const Event& event_, int eventId) -{ - if (eventId > 0) { - auto handlersIt = subscribersByEventId[event_.getEventType()].find(eventId); - if (handlersIt != subscribersByEventId[event_.getEventType()].end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>>& callbacks = handlersIt->second; - for (auto it = callbacks.begin(); it != callbacks.end();) { - (*it)->exec(event_); - if ((*it)->isDestroyOnSuccess()) { - it = callbacks.erase(it); - } else { - ++it; - } - } - } - } else { - auto& handlers = subscribers[event_.getEventType()]; - for (std::unique_ptr<IEventHandlerWrapper>& handler : handlers) { - handler->exec(event_); - } - } +void EventManager::triggerEvent(const Event & event_, int eventId) { + if (eventId > 0) { + auto handlersIt + = subscribersByEventId[event_.getEventType()].find(eventId); + if (handlersIt != subscribersByEventId[event_.getEventType()].end()) { + std::vector<std::unique_ptr<IEventHandlerWrapper>> & callbacks + = handlersIt->second; + for (auto it = callbacks.begin(); it != callbacks.end();) { + (*it)->exec(event_); + if ((*it)->isDestroyOnSuccess()) { + it = callbacks.erase(it); + } else { + ++it; + } + } + } + } else { + auto & handlers = subscribers[event_.getEventType()]; + for (std::unique_ptr<IEventHandlerWrapper> & handler : handlers) { + handler->exec(event_); + } + } } -void EventManager::queueEvent(std::unique_ptr<Event>&& event_, int eventId) -{ - eventsQueue.emplace_back(std::move(event_), eventId); +void EventManager::queueEvent(std::unique_ptr<Event> && event_, int eventId) { + eventsQueue.emplace_back(std::move(event_), eventId); } -void EventManager::dispatchEvents() -{ - for (std::vector<std::pair<std::unique_ptr<Event>, int>>::iterator eventIt = eventsQueue.begin(); eventIt != eventsQueue.end();) { - if (!eventIt->first.get()->getHandled()) { - triggerEvent(*eventIt->first.get(), eventIt->second); - eventIt = eventsQueue.erase(eventIt); - } else { - ++eventIt; - } - } +void EventManager::dispatchEvents() { + for (std::vector<std::pair<std::unique_ptr<Event>, int>>::iterator eventIt + = eventsQueue.begin(); + eventIt != eventsQueue.end();) { + if (!eventIt->first.get()->getHandled()) { + triggerEvent(*eventIt->first.get(), eventIt->second); + eventIt = eventsQueue.erase(eventIt); + } else { + ++eventIt; + } + } } diff --git a/mwe/events/src/main.cpp b/mwe/events/src/main.cpp index d056f85..f7e0766 100644 --- a/mwe/events/src/main.cpp +++ b/mwe/events/src/main.cpp @@ -1,11 +1,9 @@ +#include "customTypes.h" #include "event.h" #include "loopManager.h" #include <SDL2/SDL.h> #include <iostream> #include <memory> -#include "loopManager.h" -#include "event.h" -#include "customTypes.h" class PlayerDamagedEvent : public Event { public: PlayerDamagedEvent(int damage, int playerID) @@ -13,9 +11,9 @@ public: REGISTER_EVENT_TYPE(PlayerDamagedEvent); - int getDamage() const { return damage; } - int getPlayerID() const { return playerID; } - + int getDamage() const { return damage; } + int getPlayerID() const { return playerID; } + private: int damage; int playerID; @@ -25,22 +23,22 @@ void onPlayerDamaged(const PlayerDamagedEvent & e) { << " damage." << std::endl; } -void onKeyPressed1(const KeyPressedEvent& e) -{ - int keyCode = e.getKeyCode(); - fprintf(stderr,"first function KeyCode %d\n",keyCode); +void onKeyPressed1(const KeyPressedEvent & e) { + int keyCode = e.getKeyCode(); + fprintf(stderr, "first function KeyCode %d\n", keyCode); } -void onKeyPressed(const KeyPressedEvent& e) -{ - int keyCode = e.getKeyCode(); - fprintf(stderr,"second function KeyCode %d\n",keyCode); +void onKeyPressed(const KeyPressedEvent & e) { + int keyCode = e.getKeyCode(); + fprintf(stderr, "second function KeyCode %d\n", keyCode); } -void CollisionHandler(const CollisionEvent& e){ - std::cout << "collision betwee object id: "<< e.getCollisionData().objectIdA << " and id: " << e.getCollisionData().objectIdB << std::endl; +void CollisionHandler(const CollisionEvent & e) { + std::cout << "collision betwee object id: " + << e.getCollisionData().objectIdA + << " and id: " << e.getCollisionData().objectIdB << std::endl; } void testCollisionEvent() { Collision testCollision(1, 2, {3, 4}, {5, 6}, 7.8f); - subscribe<CollisionEvent>(CollisionHandler,1); + subscribe<CollisionEvent>(CollisionHandler, 1); // EventHandler<PlayerDamagedEvent> triggerEvent(CollisionEvent(testCollision), 1); } @@ -53,15 +51,15 @@ int main(int argc, char * args[]) { // custom event class poc subscribe<PlayerDamagedEvent>(onPlayerDamaged); triggerEvent(PlayerDamagedEvent(50, 1)); - subscribe<KeyPressedEvent>(onKeyPressed,1,false); - subscribe<KeyPressedEvent>(onKeyPressed1,false); - // queueEvent(std::move(anotherKeyPressEvent)); - triggerEvent(KeyPressedEvent(42), 1); - + subscribe<KeyPressedEvent>(onKeyPressed, 1, false); + subscribe<KeyPressedEvent>(onKeyPressed1, false); + // queueEvent(std::move(anotherKeyPressEvent)); + triggerEvent(KeyPressedEvent(42), 1); + EventManager::getInstance().dispatchEvents(); //collision event call testCollisionEvent(); - + gameLoop.setup(); gameLoop.loop(); return 0; @@ -76,9 +74,9 @@ int main(int argc, char * args[]) { // triggerEvent(CollisionEvent(1,2),1); // triggerEvent(CollisionEvent(1,2),2); // } - + // } // int main(){ - + // return 0; // } |