-
Notifications
You must be signed in to change notification settings - Fork 3
/
EventHandler.cpp
37 lines (27 loc) · 892 Bytes
/
EventHandler.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "Pch.h"
#include "Interfaces.h"
#include "Formula.h"
#include "Actions.h"
#include "TokenPool.h"
#include "PropertyBag.h"
#include "EventHandler.h"
#include "Scriptable.h"
#include "ScriptWorld.h"
void EventHandlerSet::AddHandler (unsigned eventToken, ActionSet && actions) {
assert(m_eventHandlers.find(eventToken) == m_eventHandlers.end());
m_eventHandlers.emplace(eventToken, std::move(actions));
}
void EventHandlerSet::TriggerHandlers (ScriptWorld * world, unsigned eventToken, Scriptable * target, const IFormulaPropertyBag * paramBag) const {
auto iter = m_eventHandlers.find(eventToken);
if (iter != m_eventHandlers.end()) {
unsigned magic = world->GetMagicTokenForEvent();
iter->second.Execute(world, target, magic, paramBag);
}
}
void EventHandlerSet::IncRef() {
++m_refCount;
}
void EventHandlerSet::DecRef() {
if (--m_refCount == 0)
delete this;
}