2024-10-06 09:31:47 +00:00
|
|
|
class_name InteractiveSprite extends Area3D
|
2023-04-22 13:11:10 +00:00
|
|
|
|
2025-03-23 13:32:24 +00:00
|
|
|
@onready var pass_to_actor = $UiWrapper/UiSprite/SubViewport/CollectableUi
|
2023-07-13 14:14:40 +00:00
|
|
|
@onready var wrapper = $UiWrapper
|
2025-03-23 13:32:24 +00:00
|
|
|
@onready var ui: CollectableUi = $UiWrapper/UiSprite/SubViewport.get_child(0)
|
|
|
|
|
@onready var viewport:= $UiWrapper/UiSprite/SubViewport
|
2023-07-13 14:14:40 +00:00
|
|
|
|
|
|
|
|
var revealed: bool = false:
|
2024-09-15 09:30:31 +00:00
|
|
|
set(reveal):
|
|
|
|
|
revealed = reveal
|
|
|
|
|
if reveal:
|
|
|
|
|
wrapper.show()
|
2025-03-23 13:32:24 +00:00
|
|
|
ui.reveal()
|
2024-09-15 09:30:31 +00:00
|
|
|
else:
|
2025-03-23 13:32:24 +00:00
|
|
|
ui.vanish()
|
2024-09-15 09:30:31 +00:00
|
|
|
await get_tree().create_timer(1).timeout
|
|
|
|
|
wrapper.hide()
|
|
|
|
|
|
2023-04-22 13:11:10 +00:00
|
|
|
var has_mouse: bool = false
|
2024-09-15 09:30:31 +00:00
|
|
|
|
2023-04-22 13:11:10 +00:00
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
|
|
|
func _ready():
|
2025-03-23 13:32:24 +00:00
|
|
|
mouse_entered.connect(_on_mouse_entered)
|
2023-04-22 13:11:10 +00:00
|
|
|
|
|
|
|
|
func _on_mouse_entered():
|
2024-09-15 09:30:31 +00:00
|
|
|
if not State.focus_locked:
|
|
|
|
|
input_ray_pickable = false
|
2025-03-23 13:32:24 +00:00
|
|
|
ui.is_collapsed = false
|
2024-09-15 09:30:31 +00:00
|
|
|
has_mouse = true
|
|
|
|
|
|
2023-04-22 13:11:10 +00:00
|
|
|
func _on_mouse_exited():
|
2024-09-15 09:30:31 +00:00
|
|
|
input_ray_pickable = true
|
2025-03-23 13:32:24 +00:00
|
|
|
ui.is_collapsed = true
|
2024-09-15 09:30:31 +00:00
|
|
|
has_mouse = false
|
2023-07-13 14:14:40 +00:00
|
|
|
|
|
|
|
|
func reveal():
|
2024-09-15 09:30:31 +00:00
|
|
|
revealed = true
|
2025-03-23 13:32:24 +00:00
|
|
|
# TODO: needs to check if it has mouse or player collider!
|
|
|
|
|
await get_tree().create_timer(10.0).timeout
|
2024-09-15 09:30:31 +00:00
|
|
|
if not has_mouse:
|
|
|
|
|
revealed = false
|
2023-07-18 16:27:30 +00:00
|
|
|
|
|
|
|
|
func collapse():
|
2024-09-15 09:30:31 +00:00
|
|
|
_on_mouse_exited()
|
|
|
|
|
revealed = false
|
2025-03-23 13:32:24 +00:00
|
|
|
|
|
|
|
|
func handle(event: InputEvent):
|
|
|
|
|
viewport.push_input(event)
|