Exemple #1
0
    def find_all_enemies_hit(self, pos):
        """
        Finds all enemies that would be hit by your attack if you chose the given position
        as your actionPosition in an ATTACK decision this turn.

        @param position: The position to test your attack at
        @return A List of Characters who would be hit by your attack
        """
        if isinstance(pos, position.Position):
            url = self.API_SERVER_URL + "findAllEnemiesHit"
            payload = api_pb2.APIFindAllEnemiesHitRequest()
            payload.gameState.CopyFrom(self.game_state)
            payload.position.CopyFrom(pos.build_proto_class())
            payload.player_name = self.player_name

            response = requests.post(
                url,
                headers={'Content-Type': 'application/octet-stream'},
                data=payload.SerializeToString())
            APIresponse = api_pb2.APIFindAllEnemiesHitResponse()
            APIresponse.ParseFromString(response.content)
            if APIresponse.status.status != 200:
                return APIresponse.status
            enemies = []
            for enemy in APIresponse.enemies_hit:
                enemies.append(character.Character(enemy))
            return enemies
        else:
            return None
Exemple #2
0
    def find_enemies_by_distance(self, pos):
        """
        Finds all enemies around a given position and sorts them by distance

        @param position: The center position to search around
        @return A List of Characters sorted by distance from the given position
        """
        if isinstance(pos, position.Position):
            url = self.API_SERVER_URL + "findEnemiesByDistance"
            payload = api_pb2.APIFindEnemiesByDistanceRequest()
            payload.gameState.CopyFrom(self.game_state)
            payload.position.CopyFrom(pos.build_proto_class())
            payload.player_name = self.player_name

            response = requests.post(
                url,
                headers={'Content-Type': 'application/octet-stream'},
                data=payload.SerializeToString())

            APIresponse = api_pb2.APIFindEnemiesByDistanceResponse()
            APIresponse.ParseFromString(response.content)
            if APIresponse.status.status != 200:
                return APIresponse.status

            enemies = []
            for enemy in APIresponse.enemies:
                enemies.append(character.Character(enemy))
            return enemies
        else:
            return None
Exemple #3
0
    def find_enemies_in_range_of_attack_by_distance(self, pos):
        """
        Finds a list of enemies that would be in range of an attack from your current weapon if you were at the given position

        @param position: The position to assume you are at
        @return A List of Characters sorted by distance.
        """
        if isinstance(pos, position.Position):
            url = self.API_SERVER_URL + "findEnemiesInRangeOfAttackByDistance"
            payload = api_pb2.APIFindEnemiesInRangeOfAttackByDistanceRequest()
            payload.gameState.CopyFrom(self.game_state)
            payload.position.CopyFrom(pos.build_proto_class())
            payload.player_name = self.player_name

            response = requests.post(
                url,
                headers={'Content-Type': 'application/octet-stream'},
                data=payload.SerializeToString())
            APIresponse = api_pb2.APIFindEnemiesInRangeOfAttackByDistanceResponse(
            )
            APIresponse.ParseFromString(response.content)
            if APIresponse.status.status != 200:
                return APIresponse.status
            enemies = []
            for enemy in APIresponse.enemies:
                enemies.append(character.Character(enemy))
            return enemies
        else:
            return None