frame-of-mind/src/base-environments/youth_room/Collectable.gd

49 lines
1.1 KiB
GDScript3
Raw Normal View History

2024-10-06 09:31:47 +00:00
class_name InteractiveSprite extends Area3D
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()
var has_mouse: bool = false
2024-09-15 09:30:31 +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)
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
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)