pgfw/pgfw/EventDelegate.py

42 lines
1.2 KiB
Python
Raw Normal View History

2012-07-05 04:21:49 -04:00
from pygame import event
from pygame.locals import *
from GameChild import *
class EventDelegate(GameChild):
def __init__(self, game):
GameChild.__init__(self, game)
self.subscribers = dict()
self.disable()
def enable(self):
self.enabled = True
def disable(self):
self.enabled = False
def dispatch_events(self):
if self.enabled:
subscribers = self.subscribers
for evt in event.get():
kind = evt.type
if kind in subscribers:
for subscriber in subscribers[kind]:
2012-12-23 05:20:36 -05:00
self.print_debug("Passing %s to %s" %\
(evt, subscriber))
2012-07-05 04:21:49 -04:00
subscriber(evt)
else:
event.pump()
def add_subscriber(self, kind, callback):
2012-12-23 05:20:36 -05:00
self.print_debug("Subscribing %s to %s" %\
(callback, kind))
2012-07-05 04:21:49 -04:00
subscribers = self.subscribers
if kind not in subscribers:
subscribers[kind] = list()
subscribers[kind].append(callback)
def remove_subscriber(self, kind, callback):
self.subscribers[kind].remove(callback)