diff options
| author | 2017-12-26 10:32:36 +0000 | |
|---|---|---|
| committer | 2017-12-26 10:32:36 +0000 | |
| commit | 0cc72d5d66bc3a6abf7757c7202905bd656ddf1d (patch) | |
| tree | a2591a46c4e25f359b7ed6990f31d91be22d4d1d /EventManager.py | |
| parent | NR: 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.py | 12 |
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: |
