aboutsummaryrefslogtreecommitdiff
path: root/mwe/events/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/events/src/main.cpp')
-rw-r--r--mwe/events/src/main.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/mwe/events/src/main.cpp b/mwe/events/src/main.cpp
new file mode 100644
index 0000000..3940c60
--- /dev/null
+++ b/mwe/events/src/main.cpp
@@ -0,0 +1,50 @@
+#include <SDL2/SDL.h>
+#include <iostream>
+#include <memory>
+#include "loopManager.h"
+#include "event.h"
+
+class PlayerDamagedEvent : public Event {
+public:
+ PlayerDamagedEvent(int damage, int playerID)
+ : Event("PlayerDamaged"), damage(damage), playerID(playerID) {}
+
+ REGISTER_EVENT_TYPE(PlayerDamagedEvent);
+
+ int getDamage() const { return damage; }
+ int getPlayerID() const { return playerID; }
+
+private:
+ int damage;
+ int playerID;
+};
+void onPlayerDamaged(const PlayerDamagedEvent& e) {
+ std::cout << "Player " << e.getPlayerID() << " took " << e.getDamage() << " damage." << std::endl;
+}
+
+void onKeyPressed(const KeyPressedEvent& e)
+{
+ const int keyCode = e.getKeyCode();
+ fprintf(stderr,"KeyCode %d\n",keyCode);
+}
+int main(int argc, char* args[]) {
+ LoopManager gameLoop;
+ // Create an event handler for KeyPressedEvent
+ // EventHandler<KeyPressedEvent> callback = [](const KeyPressedEvent& e) {
+ // onKeyPressed(e);
+ // };
+ // custom event class poc
+ EventHandler<PlayerDamagedEvent> playerDamagedHandler = onPlayerDamaged;
+ subscribe<PlayerDamagedEvent>(playerDamagedHandler);
+
+ triggerEvent(PlayerDamagedEvent(50, 1));
+ //EventHandler<KeyPressedEvent> callback = onKeyPressed;
+ //subscribe<KeyPressedEvent>(callback,false);
+ std::unique_ptr<Event> anotherKeyPressEvent = std::make_unique<KeyPressedEvent>(65);
+ queueEvent(std::move(anotherKeyPressEvent));
+ triggerEvent(KeyPressedEvent(42));
+ EventManager::getInstance().dispatchEvents();
+ gameLoop.setup();
+ gameLoop.loop();
+ return 0;
+}