diff --git a/scripts/objects/home_button.gd b/scripts/objects/home_button.gd index 300c0cd..d3fa1a1 100644 --- a/scripts/objects/home_button.gd +++ b/scripts/objects/home_button.gd @@ -1,21 +1,35 @@ ## 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 - if not (event as InputEventScreenTouch).pressed: + var touch: InputEventScreenTouch = event as InputEventScreenTouch + if not touch.pressed: return - var touch_pos: Vector2 = (event as InputEventScreenTouch).position - var local: Vector2 = to_local(touch_pos) + 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