def handle_message(self, message): if message['action'] == 'player_connect': player = Player( 1, 1, message['player_id'], message['socket'], message['client_address'], ) self.players[player.id] = player self.last_message_ts_from_player[player.id] = 0 if self.light_player is None: self.light_player = player.id elif self.dark_player is None: self.dark_player = player.id if len(self.players) == NUM_WAIT_PLAYERS: self.send_map_init_message(self.current_map) elif message['action'] == 'change_map': if message['player_id'] != self.light_player: print 'NON-LIGHT PLAYER TRIED TO CHANGE MAP' return direction = message['direction'] index = message.get('index', None) if direction == 'next': self.current_map += 1 self.current_map = min(self.current_map, len(self.maps) - 1) elif direction == 'previous': self.current_map -= 1 self.current_map = max(self.current_map, 0) if index is not None and index > -1 and index < len(self.maps): self.current_map = index self.send_map_init_message(self.current_map) else: player_id = message['player_id'] ts = message['timestamp'] if ts < self.last_message_ts_from_player[player_id]: return else: self.last_message_ts_from_player[player_id] = ts for player in self.players.values(): network_component = player.get_component(CUDPNetworkPlayer.component_id) network_component.send_message(message)
def handle_message(self, message): if message['type'] == 'player_connect': player = Player( message['player_id'], message['websocket'], ) self.players[player.id] = player elif message['type'] == 'player_disconnect': self.players.pop(message['player_id']) print self.players if message['type'] not in ECHO_IGNORED_MESSAGE_TYPES: player = self.players[message['player_id']] network_component = player.get_component(CNetworkPlayer.component_id) print '***** Sending message to [Player {}]:\n {}'.format(message['player_id'], message) network_component.send_message(message)