diff options
Diffstat (limited to 'src/crepe/api')
| -rw-r--r-- | src/crepe/api/EventHandler.hpp | 3 | ||||
| -rw-r--r-- | src/crepe/api/EventManager.cpp | 24 | ||||
| -rw-r--r-- | src/crepe/api/EventManager.h | 11 | ||||
| -rw-r--r-- | src/crepe/api/EventManager.hpp | 11 | ||||
| -rw-r--r-- | src/crepe/api/IKeyListener.cpp | 17 | ||||
| -rw-r--r-- | src/crepe/api/IKeyListener.h | 6 | ||||
| -rw-r--r-- | src/crepe/api/IMouseListener.cpp | 26 | 
7 files changed, 46 insertions, 52 deletions
diff --git a/src/crepe/api/EventHandler.hpp b/src/crepe/api/EventHandler.hpp index 8d8136b..391dcca 100644 --- a/src/crepe/api/EventHandler.hpp +++ b/src/crepe/api/EventHandler.hpp @@ -7,7 +7,7 @@ namespace crepe {  // Implementation of EventHandlerWrapper constructor  template <typename EventType>  EventHandlerWrapper<EventType>::EventHandlerWrapper(const EventHandler<EventType> & handler) -	: handler(handler){} +	: handler(handler) {}  // Implementation of EventHandlerWrapper::call  template <typename EventType> @@ -15,5 +15,4 @@ bool EventHandlerWrapper<EventType>::call(const Event & e) {  	return this->handler(static_cast<const EventType &>(e));  } -  } //namespace crepe diff --git a/src/crepe/api/EventManager.cpp b/src/crepe/api/EventManager.cpp index 64d7c26..993db86 100644 --- a/src/crepe/api/EventManager.cpp +++ b/src/crepe/api/EventManager.cpp @@ -20,8 +20,7 @@ void EventManager::dispatch_events() {  		}  		std::vector<CallbackEntry> & handlers = handlers_it->second; -		for (auto handler_it = handlers.begin(); handler_it != handlers.end(); -				++handler_it) { +		for (auto handler_it = handlers.begin(); handler_it != handlers.end(); ++handler_it) {  			// If callback is executed and returns true, remove the event from the queue  			if ((*handler_it).callback->exec(*event)) {  				event_it = this->events_queue.erase(event_it); @@ -42,15 +41,14 @@ void EventManager::clear() {  }  void EventManager::unsubscribe(subscription_t event_id) { -    for (auto& [event_type, handlers] : this->subscribers) { -        for (auto it = handlers.begin(); it != handlers.end();) { -            if (it->id == event_id) { -                it = handlers.erase(it); -                return; -            } else { -                ++it; -            } -        } -    } +	for (auto & [event_type, handlers] : this->subscribers) { +		for (auto it = handlers.begin(); it != handlers.end();) { +			if (it->id == event_id) { +				it = handlers.erase(it); +				return; +			} else { +				++it; +			} +		} +	}  } - diff --git a/src/crepe/api/EventManager.h b/src/crepe/api/EventManager.h index 93e9ca2..bd9772a 100644 --- a/src/crepe/api/EventManager.h +++ b/src/crepe/api/EventManager.h @@ -48,7 +48,8 @@ public:  	 * \return A unique subscription ID associated with the registered callback.  	 */  	template <typename EventType> -	subscription_t subscribe(const EventHandler<EventType> & callback, int channel = CHANNEL_ALL); +	subscription_t subscribe(const EventHandler<EventType> & callback, +							 int channel = CHANNEL_ALL);  	/**  	 * \brief Unsubscribe a previously registered callback. @@ -112,8 +113,8 @@ private:  	 */  	struct QueueEntry {  		std::unique_ptr<Event> event; ///< The event instance. -		int channel = CHANNEL_ALL;    ///< The channel associated with the event. -		std::type_index type;         ///< The type of the event. +		int channel = CHANNEL_ALL; ///< The channel associated with the event. +		std::type_index type; ///< The type of the event.  	};  	/** @@ -122,8 +123,8 @@ private:  	 */  	struct CallbackEntry {  		std::unique_ptr<IEventHandlerWrapper> callback; ///< The callback function wrapper. -		int channel = CHANNEL_ALL;                      ///< The channel this callback listens to. -		subscription_t id = -1;                         ///< Unique subscription ID. +		int channel = CHANNEL_ALL; ///< The channel this callback listens to. +		subscription_t id = -1; ///< Unique subscription ID.  	};  	//! The queue of events to be processed during dispatch. diff --git a/src/crepe/api/EventManager.hpp b/src/crepe/api/EventManager.hpp index d7afa9f..b2a94bd 100644 --- a/src/crepe/api/EventManager.hpp +++ b/src/crepe/api/EventManager.hpp @@ -10,10 +10,7 @@ subscription_t EventManager::subscribe(const EventHandler<EventType> & callback,  		= std::make_unique<EventHandlerWrapper<EventType>>(callback);  	std::vector<CallbackEntry> & handlers = this->subscribers[event_type];  	handlers.emplace_back(CallbackEntry{ -		.callback = std::move(handler), -		.channel = channel, -		.id = subscription_counter -	}); +		.callback = std::move(handler), .channel = channel, .id = subscription_counter});  	return subscription_counter;  } @@ -25,9 +22,8 @@ void EventManager::queue_event(const EventType & event, int channel) {  	auto event_ptr = std::make_unique<EventType>(event); -	this->events_queue.push_back(QueueEntry{.event = std::move(event_ptr), -											.channel = channel, -											.type = event_type}); +	this->events_queue.push_back( +		QueueEntry{.event = std::move(event_ptr), .channel = channel, .type = event_type});  }  template <typename EventType> @@ -49,5 +45,4 @@ void EventManager::trigger_event(const EventType & event, int channel) {  	}  } -  } // namespace crepe diff --git a/src/crepe/api/IKeyListener.cpp b/src/crepe/api/IKeyListener.cpp index ebbf486..7aefaf7 100644 --- a/src/crepe/api/IKeyListener.cpp +++ b/src/crepe/api/IKeyListener.cpp @@ -3,15 +3,16 @@  using namespace crepe;  // Constructor with specified channel -IKeyListener::IKeyListener(int channel) : -	  event_manager(EventManager::get_instance()) { -	press_id = event_manager.subscribe<KeyPressEvent>([this](const KeyPressEvent & event) { return this->on_key_pressed(event); }, channel); -	release_id = event_manager.subscribe<KeyReleaseEvent>([this](const KeyReleaseEvent & event) { return this->on_key_released(event); }, channel); +IKeyListener::IKeyListener(int channel) : event_manager(EventManager::get_instance()) { +	this->press_id = event_manager.subscribe<KeyPressEvent>( +		[this](const KeyPressEvent & event) { return this->on_key_pressed(event); }, channel); +	this->release_id = event_manager.subscribe<KeyReleaseEvent>( +		[this](const KeyReleaseEvent & event) { return this->on_key_released(event); }, +		channel);  }  // Destructor, unsubscribe events -IKeyListener::~IKeyListener() {  -	event_manager.unsubscribe(press_id); -	event_manager.unsubscribe(release_id); +IKeyListener::~IKeyListener() { +	event_manager.unsubscribe(this->press_id); +	event_manager.unsubscribe(this->release_id);  } - diff --git a/src/crepe/api/IKeyListener.h b/src/crepe/api/IKeyListener.h index 4726aa7..2a89cbc 100644 --- a/src/crepe/api/IKeyListener.h +++ b/src/crepe/api/IKeyListener.h @@ -36,12 +36,14 @@ public:       * \return True if the event was handled, false otherwise.       */  	virtual bool on_key_released(const KeyReleaseEvent & event) = 0; +  private:  	//! Key press event id  	subscription_t press_id = -1; -	//!< Key release event id +	//! Key release event id  	subscription_t release_id = -1; -	EventManager & event_manager; +	//! EventManager reference +	EventManager & event_manager;;  };  } // namespace crepe diff --git a/src/crepe/api/IMouseListener.cpp b/src/crepe/api/IMouseListener.cpp index a6cb163..7d38280 100644 --- a/src/crepe/api/IMouseListener.cpp +++ b/src/crepe/api/IMouseListener.cpp @@ -2,29 +2,27 @@  using namespace crepe; -IMouseListener::IMouseListener(int channel) -	: event_manager(EventManager::get_instance()) { -	click_id =  event_manager.subscribe<MouseClickEvent>( +IMouseListener::IMouseListener(int channel) : event_manager(EventManager::get_instance()) { +	this->click_id = event_manager.subscribe<MouseClickEvent>(  		[this](const MouseClickEvent & event) { return this->on_mouse_clicked(event); },  		channel); -	press_id = event_manager.subscribe<MousePressEvent>( +	this->press_id = event_manager.subscribe<MousePressEvent>(  		[this](const MousePressEvent & event) { return this->on_mouse_pressed(event); },  		channel); -	release_id = event_manager.subscribe<MouseReleaseEvent>( +	this->release_id = event_manager.subscribe<MouseReleaseEvent>(  		[this](const MouseReleaseEvent & event) { return this->on_mouse_released(event); },  		channel); -	move_id = event_manager.subscribe<MouseMoveEvent>( -		[this](const MouseMoveEvent & event) { return this->on_mouse_moved(event); }, -		channel); +	this->move_id = event_manager.subscribe<MouseMoveEvent>( +		[this](const MouseMoveEvent & event) { return this->on_mouse_moved(event); }, channel);  }  IMouseListener::~IMouseListener() { -	 // Unsubscribe event handlers -	event_manager.unsubscribe(click_id); -	event_manager.unsubscribe(press_id); -	event_manager.unsubscribe(release_id); -	event_manager.unsubscribe(move_id); -	} +	// Unsubscribe event handlers +	event_manager.unsubscribe(this->click_id); +	event_manager.unsubscribe(this->press_id); +	event_manager.unsubscribe(this->release_id); +	event_manager.unsubscribe(this->move_id); +}  |