aboutsummaryrefslogtreecommitdiff
path: root/EventManager.py
diff options
context:
space:
mode:
authorGravatar jesopo2017-12-26 10:32:36 +0000
committerGravatar jesopo2017-12-26 10:32:36 +0000
commit0cc72d5d66bc3a6abf7757c7202905bd656ddf1d (patch)
treea2591a46c4e25f359b7ed6990f31d91be22d4d1d /EventManager.py
parentNR: Indicate interesting activity at locations (diff)
signature
Added a "replay" system to EventManager hooks, to replay missed .calls
Diffstat (limited to 'EventManager.py')
-rw-r--r--EventManager.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/EventManager.py b/EventManager.py
index 307b2e2e..486cc0ec 100644
--- a/EventManager.py
+++ b/EventManager.py
@@ -44,11 +44,17 @@ class EventHook(object):
self._hook_notify = None
self._child_notify = None
self._call_notify = None
- def hook(self, function, **kwargs):
+ self._stored_events = []
+ def hook(self, function, replay=False, **kwargs):
callback = EventCallback(function, self.bot, **kwargs)
if self._hook_notify:
self._hook_notify(self, callback)
self._hooks.append(callback)
+
+ if replay:
+ for event in self._stored_events:
+ callback.call(event)
+ self._stored_events = None
def _unhook(self, hook):
self._hooks.remove(hook)
def on(self, subevent, *extra_subevents):
@@ -59,10 +65,12 @@ class EventHook(object):
return multiple_event_hook
return self.get_child(subevent)
def call(self, max=None, **kwargs):
- if "data" in kwargs: kwargs.update(kwargs["data"].map())
event = Event(self.bot, self.name, **kwargs)
if self._call_notify:
self._call_notify(self, event)
+
+ if not self._stored_events == None:
+ self._stored_events.append(event)
called = 0
returns = []
for hook in self._hooks: