class_name Interactable
extends Area2D

signal interacted(by: Node)

@export var prompt: String = "Interact"
var player_in_range: bool = false
var current_player: Node = null

func _ready() -> void:
	body_entered.connect(_on_body_entered)
	body_exited.connect(_on_body_exited)

func _on_body_entered(body: Node) -> void:
	if body.is_in_group("player"):
		player_in_range = true
		current_player = body

func _on_body_exited(body: Node) -> void:
	if body.is_in_group("player"):
		player_in_range = false
		if current_player == body:
			current_player = null

func interact(by: Node) -> void:
	interacted.emit(by)

func _unhandled_input(event: InputEvent) -> void:
	if player_in_range and event.is_action_pressed("interact"):
		interact(current_player)
		get_viewport().set_input_as_handled()
