def playerResponse(self, player, response): """ Callback for handling network input """ self.playersResponded.add(player) if response not in self.repsonses: #TODO:Network: Send client an error return self.playerResponses[player] = response EventManager.triggerEvent('poll.response', self, player, response)
def poll(self): """ Run the poll """ if self.running: raise PollRunningError, "This poll is already running" self.running = True self.playersResponded = set() EventManager.registerCallback('game.players.add', self.addPlayer) EventManager.registerCallback('game.players.del', self.delPlayer) for player in self.game.players: self.addPlayer(player)
def __init__(self, game, **kwargs): super(BoatAttackPhase, self).__init__(game, **kwargs) self.playersToAttack = [] self.playersResponded = [] self.currActions = [] self.weaponsAttacked = [] self.currPhase = self.subphases.poll self.poll = IdleTimeoutPoll(self.game, 'Attack with your boats?', ('yes', 'no'), 30.0) self.poll.poll() EventManager.registerCallback('poll.response', self.handlePollResponse) EventManager.registerCallback('poll.finish', self.pollFinished)
def stop(self): """ Stop the poll """ if not self.running: return self.running = False EventManager.unregisterCallback('game.players.add', self.addPlayer) EventManager.unregisterCallback('game.players.del', self.delPlayer) EventManager.triggerEvent('poll.finish', self, self.playerResponses) for player in self.game.players: #TODO: Send network activity: # Tell all the players the poll stopped. pass
def playerResponse(self, player, response): super(SimplePoll, self).playerResponse(player, response) if len(self.playersResponded) >= len(self.game.players): EventManager.triggerEvent('poll.finish', self, self.playerResponses)