|
@@ -60,6 +60,29 @@ def cleanANSI(line):
|
|
|
# return re.sub(r'\x1b\[([0-9,A-Z]{1,2}(;[0-9]{1,2})?(;[0-9]{3})?)?[m|K]?', '', line)
|
|
|
|
|
|
|
|
|
+class Observer(object):
|
|
|
+ def __init__(self):
|
|
|
+ self.dispatch = {}
|
|
|
+
|
|
|
+ def emit(signal, message):
|
|
|
+ if signal in dispatch:
|
|
|
+ # something to do
|
|
|
+ for listener in dispatch[signal]:
|
|
|
+ reactor.callLater(0, listener, message)
|
|
|
+ return True
|
|
|
+ return False
|
|
|
+
|
|
|
+ def connect(signal, func):
|
|
|
+ if not signal in dispatch:
|
|
|
+ dispatch[signal] = []
|
|
|
+
|
|
|
+ dispatch[signal].append(func)
|
|
|
+
|
|
|
+ def disconnect(signal, func):
|
|
|
+ if signal in dispatch:
|
|
|
+ dispatch[signal].remove(func)
|
|
|
+
|
|
|
+
|
|
|
class Game(protocol.Protocol):
|
|
|
def __init__(self):
|
|
|
self.buffer = ""
|
|
@@ -69,6 +92,7 @@ class Game(protocol.Protocol):
|
|
|
log.msg("Connected to Game Server")
|
|
|
self.queue_player = self.factory.queue_player
|
|
|
self.queue_game = self.factory.queue_game
|
|
|
+ self.observer = self.factory.observer
|
|
|
self.setPlayerReceived()
|
|
|
|
|
|
def setPlayerReceived(self):
|
|
@@ -167,6 +191,7 @@ class GlueFactory(protocol.ClientFactory):
|
|
|
self.player = player
|
|
|
self.queue_player = player.queue_player
|
|
|
self.queue_game = player.queue_game
|
|
|
+ self.observer = player.observer
|
|
|
|
|
|
def closeIt(self):
|
|
|
log.msg("closeIt")
|
|
@@ -194,6 +219,7 @@ class Player(protocol.Protocol):
|
|
|
def __init__(self):
|
|
|
self.buffer = ""
|
|
|
self.user = None
|
|
|
+ self.observer = Observer()
|
|
|
|
|
|
def connectionMade(self):
|
|
|
""" connected, setup queues.
|