extends Node2D @export var visible_radius: float = 2600.0 @onready var fleet: Node2D = get_node("../Fleet") var delivery_script: Script = preload("res://VesselDelivery.gd") var active: Dictionary = {} func _process(_delta: float) -> void: var centre: Vector2 = fleet.get_centroid() for i in range(GameState.vessel_deliveries.size()): var delivery: Dictionary = GameState.vessel_deliveries[i] var pos := GameState.vessel_delivery_position(delivery) if pos.distance_to(centre) > visible_radius: _despawn(i) continue var node: Node2D = active.get(i) if node == null or not is_instance_valid(node): node = delivery_script.new() get_parent().add_child(node) active[i] = node node.vessel_type = String(delivery.type) node.position = pos var direction: Vector2 = (delivery.to as Vector2) - (delivery.from as Vector2) if direction.length() > 0.1: node.rotation = direction.angle() + PI / 2.0 node.queue_redraw() for key in active.keys(): if key >= GameState.vessel_deliveries.size(): _despawn(key) func _despawn(index: int) -> void: var node: Node2D = active.get(index) if node != null and is_instance_valid(node): node.queue_free() active.erase(index)