class GameWorldService(service.Service): def __init__(self): self.clients = [] self.game = Game() self.mob = Actor("eeeeeeewwwwwww") self.game.place(self.mob, (1,1)) self.game.register(self.on_notify) reactor.callLater(1, self.tick) def tick(self): self.mob.cue() reactor.callLater(0.5, self.tick) def on_notify(self, source, event): self.ansiMap = renderANSI(self.game.map) #@TODO: clients should register directly with world for c in self.clients: c.on_notify(source, event) def getAnsiMap(self): return self.ansiMap def getAnsiFactory(self): f = protocol.ServerFactory() f.protocol = AnsiGameWorldProtocol f.service = self f.getAnsiMap = self.getAnsiMap return f
class GameWorldService(service.Service): def __init__(self): self.clients = [] self.game = Game() self.mob = Actor("eeeeeeewwwwwww") self.game.place(self.mob, (1, 1)) self.game.register(self.on_notify) reactor.callLater(1, self.tick) def tick(self): self.mob.cue() reactor.callLater(0.5, self.tick) def on_notify(self, source, event): self.ansiMap = renderANSI(self.game.map) #@TODO: clients should register directly with world for c in self.clients: c.on_notify(source, event) def getAnsiMap(self): return self.ansiMap def getAnsiFactory(self): f = protocol.ServerFactory() f.protocol = AnsiGameWorldProtocol f.service = self f.getAnsiMap = self.getAnsiMap return f
def test_observable(self): g = Game() a = Avatar() self.events = 0 def observer(*args): self.events += 1 g.register(observer) g.spawn(a, (5,5)) a.walk(Map.SOUTH) assert self.events == 2