Program Listing for File EventManager.hpp
↰ Return to documentation for file (engine/include/Cacao/EventManager.hpp
)
#pragma once
#include <map>
#include <vector>
#include "Event.hpp"
#include "EventConsumer.hpp"
#include "DllHelper.hpp"
namespace Cacao {
class CACAO_API EventManager {
public:
static EventManager& Get();
EventManager(const EventManager&) = delete;
EventManager(EventManager&&) = delete;
EventManager& operator=(const EventManager&) = delete;
EventManager& operator=(EventManager&&) = delete;
void SubscribeConsumer(std::string type, const EventConsumer& consumer);
void UnsubscribeConsumer(std::string type, const EventConsumer& consumer);
void UnsubscribeAllConsumers();
void Dispatch(Event& event);
private:
//Map of event types to list of consumers
std::map<std::string, std::vector<EventConsumer>> consumers;
EventManager() {}
~EventManager() {
UnsubscribeAllConsumers();
}
};
}