/* * Author: Patrick-Christopher Mattulat * Company: Lynar Studios * E-Mail: webmaster@lynarstudios.com * Created: 2020-11-27 * Changed: 2023-01-06 * * */ #include #include #include #include ls::std::event::EventManager::EventManager() : ls::std::core::Class("EventManager") {} void ls::std::event::EventManager::subscribe(const ls::std::event::type::event_id &_id, const ::std::function& _listener) { if (_id.empty() || _listener == nullptr) { throw ls::std::core::IllegalArgumentException{}; } ::std::list<::std::function> listeners = this->eventHandler.at(_id); if (!listeners.empty()) //null check needed? { listeners.push_back(_listener); } } void ls::std::event::EventManager::unsubscribe(const ls::std::event::type::event_id &_id, const ::std::function &_listener) { if (_id.empty() || _listener == nullptr) { throw ls::std::core::IllegalArgumentException{}; } ::std::list<::std::function> listeners = this->eventHandler.at(_id); //listeners.remove(_listener); } void ls::std::event::EventManager::fire(ls::std::event::Event _event) { ::std::list<::std::function> listeners = this->eventHandler.at(_event.getId()); if (!listeners.empty()) { for (::std::function &listener : listeners) { listener(_event); } } }