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
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
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