diff options
Diffstat (limited to 'src/crepe/api')
| -rw-r--r-- | src/crepe/api/Button.cpp | 6 | ||||
| -rw-r--r-- | src/crepe/api/Button.h | 49 | ||||
| -rw-r--r-- | src/crepe/api/Event.h | 12 | ||||
| -rw-r--r-- | src/crepe/api/LoopManager.h | 19 | ||||
| -rw-r--r-- | src/crepe/api/Script.cpp | 3 | ||||
| -rw-r--r-- | src/crepe/api/Script.h | 10 | 
6 files changed, 45 insertions, 54 deletions
diff --git a/src/crepe/api/Button.cpp b/src/crepe/api/Button.cpp index 305922c..40153c9 100644 --- a/src/crepe/api/Button.cpp +++ b/src/crepe/api/Button.cpp @@ -2,9 +2,7 @@  namespace crepe { -Button::Button(game_object_id_t id, const vec2 & dimensions, const vec2 & offset, -			   const std::function<void()> & on_click) -	: UIObject(id, dimensions, offset), -	  on_click(on_click) {} +Button::Button(game_object_id_t id, const vec2 & dimensions, const vec2 & offset) +	: UIObject(id, dimensions, offset) {}  } // namespace crepe diff --git a/src/crepe/api/Button.h b/src/crepe/api/Button.h index 08f5dec..d42527e 100644 --- a/src/crepe/api/Button.h +++ b/src/crepe/api/Button.h @@ -2,11 +2,23 @@  #include <functional> +#include "Event.h"  #include "UIObject.h"  namespace crepe { -//! Represents a clickable UI button, derived from the UiObject class. +/** + * \brief Button component. + *  + * This component creates a clickable surface at the transform location with the specified width and height. + *  + * The Button can be used in scripts by subscribing a EventHandler to the following events: + * - ButtonPressEvent + * - ButtonEnterEvent + * - ButtonExitEvent + * \see EventManager + *  + */  class Button : public UIObject {  public:  	/** @@ -15,43 +27,22 @@ public:  	 * \param id The unique ID of the game object associated with this button.  	 * \param dimensions The width and height of the UIObject  	 * \param offset The offset relative this GameObjects Transform -	 * \param on_click callback function that will be invoked when the button is clicked.  	 */ -	Button(game_object_id_t id, const vec2 & dimensions, const vec2 & offset, -		   const std::function<void()> & on_click); - -	// TODO: create separate toggle button class -	/** -	 * \brief The callback function to be executed when the button is clicked. -	 * -	 * This function is invoked whenever the button is clicked. It can be set to any -	 * function that matches the signature `void()`. -	 */ -	std::function<void()> on_click = nullptr; - +	Button(game_object_id_t id, const vec2 & dimensions, const vec2 & offset);  	/** -	 * \brief Callback function to be executed when the mouse enters the button's boundaries. +	 * \brief Get the maximum number of instances for this component  	 * -	 * This function is triggered when the mouse cursor moves over the button, allowing -	 * custom actions like visual effects, highlighting, or sound effects. +	 * Since the button Event transfers the GameObject Metadata it will be the same for each button so only one button is allowed per GameObject	 +	 *  +	 * \return 1  	 */ -	std::function<void()> on_mouse_enter = nullptr; - -	/** -	 * \brief Callback function to be executed when the mouse exits the button's boundaries. -	 * -	 * This function is triggered when the mouse cursor moves out of the button's area, -	 * allowing custom actions like resetting visual effects or playing exit-related effects. -	 */ -	std::function<void()> on_mouse_exit = nullptr; +	virtual int get_instances_max() const { return 1; }  private: -	//! friend relation for is_pressed and hover variables +	//! friend relation hover variable  	friend class InputSystem;  	//! Indicates whether the mouse is currently hovering over the button  	bool hover = false; - -public:  };  } // namespace crepe diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index 73bf461..8e38280 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -3,9 +3,10 @@  #include <string> -#include "api/KeyCodes.h"  #include "types.h" +#include "KeyCodes.h" +  namespace crepe {  /** @@ -95,15 +96,6 @@ public:  };  /** - * \brief Event triggered when text is submitted, e.g., from a text input. - */ -class TextSubmitEvent : public Event { -public: -	//! The submitted text. -	std::string text = ""; -}; - -/**   * \brief Event triggered to indicate the application is shutting down.   */  class ShutDownEvent : public Event {}; diff --git a/src/crepe/api/LoopManager.h b/src/crepe/api/LoopManager.h index 1d23cbf..124cd3a 100644 --- a/src/crepe/api/LoopManager.h +++ b/src/crepe/api/LoopManager.h @@ -71,9 +71,19 @@ private:  private:  	//! Global context  	Mediator mediator; +	/** +	 * \brief Collection of System instances +	 * +	 * This map holds System instances indexed by the system's class typeid. It is filled in the +	 * constructor of LoopManager using LoopManager::load_system. +	 */ +	std::unordered_map<std::type_index, std::unique_ptr<System>> systems;  	//! SDLContext instance  	SDLContext sdl_context{mediator}; +	//! Resource manager instance +	ResourceManager resource_manager{mediator}; +  	//! Component manager instance  	ComponentManager component_manager{mediator};  	//! Scene manager instance @@ -82,8 +92,6 @@ private:  	LoopTimerManager loop_timer{mediator};  	//! EventManager instance  	EventManager event_manager{mediator}; -	//! Resource manager instance -	ResourceManager resource_manager{mediator};  	//! Save manager instance  	SaveManager save_manager{mediator}; @@ -95,13 +103,6 @@ private:  	 */  	bool on_shutdown(const ShutDownEvent & e);  	/** -	 * \brief Collection of System instances -	 * -	 * This map holds System instances indexed by the system's class typeid. It is filled in the -	 * constructor of LoopManager using LoopManager::load_system. -	 */ -	std::unordered_map<std::type_index, std::unique_ptr<System>> systems; -	/**  	 * \brief Initialize a system  	 * \tparam T System type (must be derivative of \c System)  	 */ diff --git a/src/crepe/api/Script.cpp b/src/crepe/api/Script.cpp index 583c04f..85016f5 100644 --- a/src/crepe/api/Script.cpp +++ b/src/crepe/api/Script.cpp @@ -26,6 +26,8 @@ void Script::set_next_scene(const string & name) {  SaveManager & Script::get_save_manager() const { return this->mediator->save_manager; } +LoopTimerManager & Script::get_loop_timer() const { return this->mediator->loop_timer; } +  const keyboard_state_t & Script::get_keyboard_state() const {  	SDLContext & sdl_context = this->mediator->sdl_context;  	return sdl_context.get_keyboard_state(); @@ -38,3 +40,4 @@ bool Script::get_key_state(Keycode key) const noexcept {  		return false;  	}  } + diff --git a/src/crepe/api/Script.h b/src/crepe/api/Script.h index 65306cd..a87af4e 100644 --- a/src/crepe/api/Script.h +++ b/src/crepe/api/Script.h @@ -4,6 +4,7 @@  #include "../api/KeyCodes.h"  #include "../manager/EventManager.h" +#include "../manager/LoopTimerManager.h"  #include "../manager/Mediator.h"  #include "../system/CollisionSystem.h"  #include "../types.h" @@ -47,10 +48,12 @@ protected:  	/**  	 * \brief Script update function (empty by default)  	 * +	 * \param delta_time Time since last fixed update +	 *  	 * This function is called during the ScriptSystem::update() routine if the \c BehaviorScript  	 * component holding this script instance is active.  	 */ -	virtual void update() {} +	virtual void update(duration_t delta_time) {}  	//! \}  	//! ScriptSystem calls \c init() and \c update() @@ -135,6 +138,10 @@ protected:  	//! Retrieve SaveManager reference  	SaveManager & get_save_manager() const; + +	//! Retrieve LoopTimerManager reference +	LoopTimerManager & get_loop_timer() const; +  	/**  	 * \brief Utility function to retrieve the keyboard state  	 * \see SDLContext::get_keyboard_state @@ -151,7 +158,6 @@ protected:  	 *   	 */  	bool get_key_state(Keycode key) const noexcept; -	//! \}  private:  	/**  |