## HomeButton — tappable button that navigates between the hospital and the garden area.
## go_to_garden = true calls RoomNavigator.go_to_home(); false calls RoomNavigator.go_to_hospital().
class_name HomeButton extends Node2D

const BUTTON_HALF_SIZE: float = 32.0

@export var go_to_garden: bool = true

var _busy: bool = false


func _input(event: InputEvent) -> void:
	if _busy:
		return
	if not event is InputEventScreenTouch:
		return
	var touch: InputEventScreenTouch = event as InputEventScreenTouch
	if not touch.pressed:
		return
	var local: Vector2 = to_local(touch.position)
	if abs(local.x) > BUTTON_HALF_SIZE or abs(local.y) > BUTTON_HALF_SIZE:
		return
	if not is_instance_valid(RoomNavigator):
		return
	_busy = true
	if go_to_garden:
		RoomNavigator.home_entered.connect(_on_transition_done, CONNECT_ONE_SHOT)
		RoomNavigator.go_to_home()
	else:
		RoomNavigator.hospital_entered.connect(_on_transition_done, CONNECT_ONE_SHOT)
		RoomNavigator.go_to_hospital()


func _on_transition_done() -> void:
	_busy = false
