aboutsummaryrefslogtreecommitdiff
path: root/mwe/events/include/event.h
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/events/include/event.h')
-rw-r--r--mwe/events/include/event.h245
1 files changed, 57 insertions, 188 deletions
diff --git a/mwe/events/include/event.h b/mwe/events/include/event.h
index f5f426a..802140c 100644
--- a/mwe/events/include/event.h
+++ b/mwe/events/include/event.h
@@ -4,215 +4,84 @@
#include <string>
#include <unordered_map>
#include <variant>
-using Keycode = uint16_t;
-enum : Keycode {
- // From glfw3.h
- Space = 32,
- Apostrophe = 39, /* ' */
- Comma = 44, /* , */
- Minus = 45, /* - */
- Period = 46, /* . */
- Slash = 47, /* / */
-
- D0 = 48, /* 0 */
- D1 = 49, /* 1 */
- D2 = 50, /* 2 */
- D3 = 51, /* 3 */
- D4 = 52, /* 4 */
- D5 = 53, /* 5 */
- D6 = 54, /* 6 */
- D7 = 55, /* 7 */
- D8 = 56, /* 8 */
- D9 = 57, /* 9 */
-
- Semicolon = 59, /* ; */
- Equal = 61, /* = */
-
- A = 65,
- B = 66,
- C = 67,
- D = 68,
- E = 69,
- F = 70,
- G = 71,
- H = 72,
- I = 73,
- J = 74,
- K = 75,
- L = 76,
- M = 77,
- N = 78,
- O = 79,
- P = 80,
- Q = 81,
- R = 82,
- S = 83,
- T = 84,
- U = 85,
- V = 86,
- W = 87,
- X = 88,
- Y = 89,
- Z = 90,
-
- LeftBracket = 91, /* [ */
- Backslash = 92, /* \ */
- RightBracket = 93, /* ] */
- GraveAccent = 96, /* ` */
-
- World1 = 161, /* non-US #1 */
- World2 = 162, /* non-US #2 */
-
- /* Function keys */
- Escape = 256,
- Enter = 257,
- Tab = 258,
- Backspace = 259,
- Insert = 260,
- Delete = 261,
- Right = 262,
- Left = 263,
- Down = 264,
- Up = 265,
- PageUp = 266,
- PageDown = 267,
- Home = 268,
- End = 269,
- CapsLock = 280,
- ScrollLock = 281,
- NumLock = 282,
- PrintScreen = 283,
- Pause = 284,
- F1 = 290,
- F2 = 291,
- F3 = 292,
- F4 = 293,
- F5 = 294,
- F6 = 295,
- F7 = 296,
- F8 = 297,
- F9 = 298,
- F10 = 299,
- F11 = 300,
- F12 = 301,
- F13 = 302,
- F14 = 303,
- F15 = 304,
- F16 = 305,
- F17 = 306,
- F18 = 307,
- F19 = 308,
- F20 = 309,
- F21 = 310,
- F22 = 311,
- F23 = 312,
- F24 = 313,
- F25 = 314,
-
- /* Keypad */
- KP0 = 320,
- KP1 = 321,
- KP2 = 322,
- KP3 = 323,
- KP4 = 324,
- KP5 = 325,
- KP6 = 326,
- KP7 = 327,
- KP8 = 328,
- KP9 = 329,
- KPDecimal = 330,
- KPDivide = 331,
- KPMultiply = 332,
- KPSubtract = 333,
- KPAdd = 334,
- KPEnter = 335,
- KPEqual = 336,
-
- LeftShift = 340,
- LeftControl = 341,
- LeftAlt = 342,
- LeftSuper = 343,
- RightShift = 344,
- RightControl = 345,
- RightAlt = 346,
- RightSuper = 347,
- Menu = 348
-};
+#include "keyCodes.h"
class UUIDGenerator {
public:
- static std::uint32_t GetUniqueID()
- {
+ static std::uint32_t getUniqueID() {
static std::uint32_t id = 0;
return ++id;
}
};
-#define EVENT_TYPE(event_type) \
- static std::uint32_t GetStaticEventType() \
- { \
- static std::uint32_t type = UUIDGenerator::GetUniqueID(); \
- return type; \
- } \
- std::uint32_t GetEventId() const override \
- { \
- return GetStaticEventType(); \
+#define REGISTER_EVENT_TYPE(ClassName) \
+public: \
+ static std::uint32_t getStaticEventType() { \
+ static std::uint32_t typeID = UUIDGenerator::getUniqueID(); \
+ return typeID; \
+ } \
+ virtual std::uint32_t getEventType() const override { \
+ return getStaticEventType(); \
}
class Event {
- public:
- Event(std::string eventType) {
- eventData["eventType"] = eventType;
- }
- virtual ~Event() = default;
-
- virtual std::uint32_t GetEventId() const = 0;
- virtual std::string toString() const {
- return std::to_string(GetEventId());
- }
-
- void addArgument(const std::string& key, const std::variant<int, std::string, float>& value);
-
- std::variant<int, std::string, float> getArgument(const std::string& key) const;
-
- std::string getType() const;
- bool isHandled() const;
- void markHandled();
- private:
- std::unordered_map<std::string, std::variant<int, std::string, float>> eventData;
- bool isHandled = false;
+public:
+ Event(std::string eventType);
+ virtual ~Event() = default;
+ virtual std::uint32_t getEventType() const = 0;
+ virtual std::string toString() const;
+ void addArgument(const std::string& key, const std::variant<int, std::string, float>& value);
+
+ std::variant<int, std::string, float> getArgument(const std::string& key) const;
+
+ std::string getType() const;
+ bool getHandled() const;
+ void markHandled();
+
+private:
+ std::unordered_map<std::string, std::variant<int, std::string, float>> eventData;
+ bool isHandled = false;
};
+// KeyPressedEvent class
class KeyPressedEvent : public Event {
- public:
- EVENT_TYPE("KeyPressedEvent");
- KeyPressedEvent(int keyCode);
- Keycode getKeyCode() const;
- int getRepeatCount() const;
- private:
- Keycode keycode;
+public:
+ KeyPressedEvent(int keyCode);
+
+ REGISTER_EVENT_TYPE("KeyPressedEvent");
+
+ Keycode getKeyCode() const;
+ int getRepeatCount() const;
+
+private:
+ Keycode keycode;
+
public:
Keycode key = 0;
int repeatCount = 0;
};
+// KeyReleasedEvent class
class KeyReleasedEvent : public Event {
- public:
- EVENT_TYPE("KeyReleasedEvent");
- KeyReleasedEvent(int keyCode);
- Keycode getKeyCode();
- private:
- Keycode keycode;
public:
+ KeyReleasedEvent(int keyCode);
+
+ REGISTER_EVENT_TYPE(KeyReleasedEvent);
+
+ Keycode getKeyCode() const;
+
+private:
Keycode key = 0;
};
+// MousePressedEvent class
class MousePressedEvent : public Event {
- public:
- EVENT_TYPE("MousePressedEvent");
- MousePressedEvent(int mouseX,int mouseY);
- std::pair<int,int> getMousePosition();
- private:
- Keycode keycode;
- int mouseX = 0;
- int mouseY = 0;
-
+public:
+ MousePressedEvent(int mouseX, int mouseY);
+
+ REGISTER_EVENT_TYPE(MousePressedEvent)
+
+ std::pair<int, int> getMousePosition() const;
+
+private:
+ int mouseX = 0;
+ int mouseY = 0;
};