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.cpp54
1 files changed, 45 insertions, 9 deletions
diff --git a/mwe/events/src/main.cpp b/mwe/events/src/main.cpp
index 8d8567d..3940c60 100644
--- a/mwe/events/src/main.cpp
+++ b/mwe/events/src/main.cpp
@@ -1,14 +1,50 @@
#include <SDL2/SDL.h>
-#include <stdio.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) {}
-int main(int argc, char * args[]) {
-
- KeyPressedEvent keyEvent(1,1);
- KeyReleasedEvent keyRelease(1);
- std::cout << keyEvent.GetEventType() << std::endl;
- std::cout << keyRelease.GetEventType() << std::endl;
- std::cin;
- return 0;
+ 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;
}