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

47 lines
1.2 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():
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
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
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
func _input(event):
if visible:
if event.is_action_pressed("skip"):
pressed = true
elif event.is_action_released("skip"):
pressed = false
time_pressed = 0
func owner_visibility_changed():
visible = owner.visible
func _on_skip_button_toggled(button_pressed):
if button_pressed:
pressed = true
else:
pressed = false
time_pressed = 0