diff --git a/src/logic-scenes/misc/skip_control.gd b/src/logic-scenes/misc/skip_control.gd new file mode 100644 index 0000000..ccf74b2 --- /dev/null +++ b/src/logic-scenes/misc/skip_control.gd @@ -0,0 +1,46 @@ +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 diff --git a/src/logic-scenes/misc/skip_control.tscn b/src/logic-scenes/misc/skip_control.tscn new file mode 100644 index 0000000..7f575ea --- /dev/null +++ b/src/logic-scenes/misc/skip_control.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=2 format=3 uid="uid://dvwuhobhka78d"] + +[ext_resource type="Script" path="res://logic-scenes/misc/skip_control.gd" id="1_s6riu"] + +[node name="skip_control" type="Control"] +layout_mode = 3 +anchors_preset = 0 +size_flags_horizontal = 4 +size_flags_vertical = 8 +script = ExtResource("1_s6riu") + +[node name="ProgressBar" type="ProgressBar" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -160.0 +offset_top = -19.5 +offset_right = 160.0 +offset_bottom = 19.5 +grow_horizontal = 2 +grow_vertical = 2 +max_value = 1.0 +show_percentage = false + +[node name="Skip Button" type="Button" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -108.0 +offset_top = -21.5 +offset_right = 108.0 +offset_bottom = 21.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "hold x or [ ] to skip" + +[connection signal="toggled" from="Skip Button" to="." method="_on_skip_button_toggled"]