extends ActionBehaviour class_name ActionBehaviourMosquito func do_action(source_tile: InsectTile, action_tile: InsectTile, map: HexGrid) -> void: # if target only has move, just do move as #source_tile.temporary_action_behaviour = action_tile.resource.action_behaviour #source_tile.temporary_movement_behaviour = action_tile.resource.movement_behaviour source_tile.temporary_resource = action_tile.resource GameEvents.insect_tile_selected.emit(source_tile) #if action_tile.resource.action_behaviour == null: # map.do_move_as(source_tile, action_tile) #else: # Copy and offer MOVE and Action (basically pillbug) # Starting to think it would be easier to temporarily change action_behaviour resource # pass # GameEvents.insect_tiles_selected_for_action func get_targets(source_pos: Vector4i, map: HexGrid) -> Array[InsectTile]: # if on the hive, i.e. layer > 0, we always move like a beetle # so we can't use our action unless we're on layer 0 # TODO: Update movement selection if source_pos.w > 0: return [] var can_move: bool = map.can_hive_exist_without_tile(map.get_tile(source_pos)) var neighbours = map.get_neighbours(source_pos) # Filter out other mosquitos var possible_action_targets: Array[InsectTile] = [] for neighbour in neighbours: var tile = map.get_tile(neighbour) if tile != null: # TODO: Find better way to see what tile we have... if tile.resource.movement_behaviour is MovementBehaviourMosquito: continue if tile.resource.action_behaviour != null: possible_action_targets.push_back(tile) elif tile.resource.movement_behaviour.get_available_spaces(source_pos, map).size() > 0: if can_move: possible_action_targets.push_back(tile) #GameEvents.insect_tiles_selected_for_action.emit(source_pos, possible_action_targets) return possible_action_targets