diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-20 22:33:14 +0100 | 
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-20 22:33:14 +0100 | 
| commit | 48f69cedaf16038d980071d43d32e22caae44c17 (patch) | |
| tree | d52db1e10dc82eb02c7d22dbe3fa8648c457c2ce /src/crepe/api/Event.h | |
| parent | 6808307cf65a4b686621f08a58effecc0a9c6bb8 (diff) | |
| parent | da379a58033c0ef3c9c854326a3fca25d6e54319 (diff) | |
merge `loek/scripts` into `loek/collision-system`
Diffstat (limited to 'src/crepe/api/Event.h')
| -rw-r--r-- | src/crepe/api/Event.h | 78 | 
1 files changed, 67 insertions, 11 deletions
| diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index bd6a541..9923a05 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -1,59 +1,115 @@ +// TODO discussing the location of these events  #pragma once -#include "KeyCodes.h" -#include <iostream> +  #include <string> -#include <typeindex> -#include "system/CollisionSystem.h" -class Event { -public: -}; +#include "../system/CollisionSystem.h" + +#include "KeyCodes.h" +/** + * \brief Base class for all event types in the system. + */ +class Event {}; + +/** + * \brief Event triggered when a key is pressed. + */  class KeyPressEvent : public Event {  public: -	int repeat = 0; +	//! false if first time press, true if key is repeated +	bool repeat = false; + +	//! The key that was pressed.  	Keycode key = Keycode::NONE;  }; +/** + * \brief Event triggered when a key is released. + */  class KeyReleaseEvent : public Event {  public: +	//! The key that was released.  	Keycode key = Keycode::NONE;  }; +/** + * \brief Event triggered when a mouse button is pressed. + */  class MousePressEvent : public Event {  public: +	//! X-coordinate of the mouse position at the time of the event.  	int mouse_x = 0; + +	//! Y-coordinate of the mouse position at the time of the event.  	int mouse_y = 0; + +	//! The mouse button that was pressed.  	MouseButton button = MouseButton::NONE;  }; +/** + * \brief Event triggered when a mouse button is clicked (press and release). + */  class MouseClickEvent : public Event {  public: +	//! X-coordinate of the mouse position at the time of the event.  	int mouse_x = 0; + +	//! Y-coordinate of the mouse position at the time of the event.  	int mouse_y = 0; + +	//! The mouse button that was clicked.  	MouseButton button = MouseButton::NONE;  }; + +/** + * \brief Event triggered when a mouse button is released. + */  class MouseReleaseEvent : public Event {  public: +	//! X-coordinate of the mouse position at the time of the event.  	int mouse_x = 0; + +	//! Y-coordinate of the mouse position at the time of the event.  	int mouse_y = 0; + +	//! The mouse button that was released.  	MouseButton button = MouseButton::NONE;  }; + +/** + * \brief Event triggered when the mouse is moved. + */  class MouseMoveEvent : public Event {  public: +	//! X-coordinate of the mouse position at the time of the event.  	int mouse_x = 0; + +	//! Y-coordinate of the mouse position at the time of the event.  	int mouse_y = 0;  }; + +/** + * \brief Event triggered during a collision between objects. + */  class CollisionEvent : public Event {  public:  	crepe::CollisionSystem::CollisionInfo info;  	CollisionEvent(const crepe::CollisionSystem::CollisionInfo& collisionInfo)          : info(collisionInfo) {}  }; + +/** + * \brief Event triggered when text is submitted, e.g., from a text input. + */  class TextSubmitEvent : public Event {  public: +	//! The submitted text.  	std::string text = "";  }; -class ShutDownEvent : public Event { -public: -}; + +/** + * \brief Event triggered to indicate the application is shutting down. + */ +class ShutDownEvent : public Event {}; |