Program Listing for File events.h¶
↰ Return to documentation for file (blam\components\events\events.h
)
#pragma once
#include <vector>
enum EventType
{
KeyPress,
CharacterInput
};
#include "events/Event.hpp"
#include "events/CharacterInputEvent.hpp"
#include "events/KeyPressEvent.hpp"
#ifndef BLAM
#define BLAM
#endif
namespace Blam::Events
{
class EventListener;
BLAM void ResortListeners(EventListener* requesting_listener);
class EventListener
{
private:
std::vector<EventType> subscribed_events;
int priority = 0;
public:
void Subscribe(EventType type)
{
subscribed_events.push_back(type);
}
std::vector<EventType> getSubscribedEvents()
{
return subscribed_events;
}
bool isSubscribed(EventType type)
{
for (int i = 0; i < subscribed_events.size(); i++)
{
if (subscribed_events.at(i) == type)
{
return true;
}
}
return false;
}
void SetPriority(int new_priority)
{
priority = new_priority;
Blam::Events::ResortListeners(this);
}
int GetPriority()
{
return priority;
}
virtual void onCharacterInputEvent(Blam::Events::CharacterInputEvent* event) {}
virtual void onKeyPressEvent(Blam::Events::KeyPressEvent* event) {}
};
BLAM void FireEvent(Event* event);
BLAM void RegisterListener(EventListener* listener);
BLAM void ResortListeners(EventListener* requesting_listener);
}