Пример #1
0
    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)
Пример #2
0
    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)