Beispiel #1
0
    def _update_time(self, msg):
        """Update time and turns."""
        number = csfind.find_number_after("time:", msg)
        self.sprt.time.choose_index(number, self.active_turn)

        if "next_turn" in msg:
            self.turn_digit = csfind.find_number_after("next_turn:", msg)
            self.sprt.next_turn.activate()
            self.active_player.activate_skills()
Beispiel #2
0
    def _wait_for_all_players(self, msg):
        """Wait for new game's connections.

        when the server has all its players, it send:
        - the player's number
        - the active turn
        - the number of players.
        """
        if "players_infos_ok:" in msg:
            self.player_digit = fd.find_number_after('player_digit:', msg)
            self.active_turn = fd.find_number_after("active_turn:", msg)
            self.nb_players = fd.find_number_after("nb_players:", msg)

            self.connection.send('synchro_ok')
            self._step = 3

        else:
            self.connection.send('players_informations?')
Beispiel #3
0
    def _update_teleport(self, msg):
        """Update the teleportation."""
        if "end" in msg:
            self.in_action = False
            self.active_player.define_key_images("breath")
            return

        if "teleportNow:" in msg:
            coords = csfind.find_and_get_coords_after('teleportNow:', msg)
            self.active_player.teleport(coords=coords)
        else:
            key = 'starting' if 'starting' in msg else 'landed'
            index = csfind.find_number_after(f"{key}:", msg, size=2)
            self.active_player.teleport(key, index)
Beispiel #4
0
    def test_find_number_after(self):
        """Test the function find_number_after."""
        var_list = [
            'feizgtreio number:1',
            'number:9',
            'fajfeiufgtergzhrnumber:4ofr0',
            'fnumber:888',
        ]
        good_numbers = [1, 9, 4, 8]

        substring = 'number:'

        for text, good_number in zip(var_list, good_numbers):
            number = csfind.find_number_after(substring, text)

            self.assertIsInstance(number, int)
            self.assertEqual(good_number, number)
Beispiel #5
0
    def _deal(self, client):
        """Inspect the client's message.

        If the client want to create a game,
        the go_to variable will change to 'init_game'.
        """
        msg = client.recv(1024)
        msg = msg.decode()

        if not msg or 'players?' in msg:
            return

        print("Received: {0}".format(msg))

        if "create_game" in msg:
            self.nb_players = fd.find_number_after('nb_players:', msg)
            self.map_content = fd.find_text_after('map:', msg)
            self.host_player = client
            self.go_to = 'init_game'
Beispiel #6
0
    def _update_transform(self, msg):
        """Update the transform action."""
        if "transform: activated" in msg:
            self.in_action = True
            self.active_player.define_key_images("transform")
            coords = csfind.find_and_get_coords_after("coords:", msg)
            self.sprt.transform_anim.define_coords(coords)

        elif "index:" in msg:
            index = csfind.find_number_after("index:", msg)
            self.sprt.transform_anim.play_animation(index=index)

        if "transfNow:" in msg:
            coords = csfind.find_and_get_coords_after('transfNow:', msg)
            self.sprt.cases_group[coords].transform()

        if "end" in msg:
            self.in_action = False
            self.sprt.transform_anim.play_animation(end=True)
            self.active_player.define_key_images("breath")
Beispiel #7
0
    def _define_players(self, msg):
        """Define the players lists if 'players_list in msg.

        We create one list per player, who contains his:
        - digit
        - name (and type)
        - membership
        - spawn
        """
        if 'players_list:' not in msg:
            return

        for i in range(self.nb_players):
            i += 1

            is_yours = True if self.player_digit == i else False
            name = 'superstar' if i == 1 else 'superalien'

            spawn = fd.find_number_after(f"player{i}_place:", msg, size=3)
            print("in g_i. player's spawn: ", spawn)

            self.players.append([i, name, is_yours, spawn])

        self._step = 4