frame-of-mind/src/logic-scenes/misc/skip_control.gd

47 lines
1.1 KiB
GDScript3
Raw Normal View History

2023-08-01 08:52:08 +00:00
extends Control
signal skip
@export var skip_delay: float = 0.5
@export var costum_owner: NodePath
var time_pressed: float = 0
@onready var button: Button = $"Skip Button"
@onready var progress: ProgressBar = $ProgressBar
var pressed: bool
func _ready():
2024-09-15 09:30:31 +00:00
owner = get_node(costum_owner)
if owner == null:
owner = get_parent().get_parent()
owner.connect("visibility_changed", Callable(self, "owner_visibility_changed"))
visible = owner.visible
2023-08-01 08:52:08 +00:00
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
2024-09-15 09:30:31 +00:00
if pressed and visible:
time_pressed += delta
progress.value = time_pressed / skip_delay
if time_pressed >= skip_delay:
emit_signal("skip")
pressed = false
time_pressed = 0
2023-08-01 08:52:08 +00:00
func _input(event):
2024-09-15 09:30:31 +00:00
if visible:
if event.is_action_pressed("skip"):
pressed = true
elif event.is_action_released("skip"):
pressed = false
time_pressed = 0
2023-08-01 08:52:08 +00:00
func owner_visibility_changed():
2024-09-15 09:30:31 +00:00
visible = owner.visible
2023-08-01 08:52:08 +00:00
func _on_skip_button_toggled(button_pressed):
2024-09-15 09:30:31 +00:00
if button_pressed:
pressed = true
else:
pressed = false
time_pressed = 0