extends MovementBehaviour class_name MovementBehaviourMosquito @export var max_movement_reach: int = 1 func simulate_move_recursive(start: Vector4i, max_num: int, map: HexGrid, visited_cells: Array[Vector4i] = []) -> Array[Vector4i]: var visited = visited_cells.duplicate() var possible: Array[Vector4i] = [] visited.append(start) if max_num < 1: return [start] for neighbour in map.get_neighbours(start, true): if neighbour in visited: continue # can reach... can_reach should only apply to our current level #if not map.can_reach(start, neighbour): # continue visited.append(neighbour) possible.append_array(simulate_move_recursive(neighbour, max_num - 1, map, visited)) return possible func get_available_spaces(pos: Vector4i, map: HexGrid) -> Array[Vector4i]: if pos.w == 0: return [] var possible_places: Array[Vector4i] = [] possible_places = simulate_move_recursive(pos, max_movement_reach, map) return possible_places #var target_spaces: Array[Vector4i] = [] # #for neighbour in map.get_neighbours(pos): #if map.is_cell_empty(neighbour): #continue # #target_spaces.append_array(map.get_tile(neighbour).resource.movement_behaviour.get_available_spaces(pos, map)) # #return target_spaces