47 lines
1.2 KiB
GDScript3
47 lines
1.2 KiB
GDScript3
|
|
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
|