extends Node var _zones_in_range: Array[InteractiveLoadingZone] = [] # Public Methods func OnPlayerInteractScannerAreaEntered(area: Area2D) -> void: if area is not InteractiveLoadingZone or _zones_in_range.has(area): return _zones_in_range.append(area) func OnPlayerInteractScannerAreaExited(area: Area2D) -> void: if area is not InteractiveLoadingZone or !_zones_in_range.has(area): return _zones_in_range.erase(area) func OnPlayerInteractionActionTriggered() -> void: if _zones_in_range.is_empty(): return var zone := _zones_in_range[0] zone.Activate() # Private Methods func _ready() -> void: var all_players := get_tree().get_nodes_in_group("Player Group") if all_players == null or all_players.is_empty(): return for player_node in all_players: var player := player_node as PlayerCharacter player.InteractScannerAreaEntered.connect(OnPlayerInteractScannerAreaEntered) player.InteractScannerAreaExited.connect(OnPlayerInteractScannerAreaExited) player.InteractionActionTriggered.connect(OnPlayerInteractionActionTriggered)