key binding now fully works

This commit is contained in:
Persephone Bubblegum-Holidy 2025-05-24 12:26:01 -07:00
parent d75221dc1b
commit 90043c8e6f
3 changed files with 51 additions and 3 deletions

View file

@ -1,8 +1,15 @@
[gd_scene load_steps=3 format=3 uid="uid://dtkqaw5533rxy"] [gd_scene load_steps=4 format=3 uid="uid://dtkqaw5533rxy"]
[ext_resource type="StyleBox" uid="uid://d17amc25o63p1" path="res://UI/Themes/MovementsPanelOverride.tres" id="1_d1xev"] [ext_resource type="StyleBox" uid="uid://d17amc25o63p1" path="res://UI/Themes/MovementsPanelOverride.tres" id="1_d1xev"]
[ext_resource type="Script" uid="uid://tn3aaldu7mm2" path="res://Scripts/MovementRow.gd" id="1_rm5t0"] [ext_resource type="Script" uid="uid://tn3aaldu7mm2" path="res://Scripts/MovementRow.gd" id="1_rm5t0"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm5t0"]
bg_color = Color(0, 1, 0, 1)
corner_radius_top_left = 4
corner_radius_top_right = 4
corner_radius_bottom_right = 4
corner_radius_bottom_left = 4
[node name="Row" type="Panel"] [node name="Row" type="Panel"]
anchors_preset = 10 anchors_preset = 10
anchor_right = 1.0 anchor_right = 1.0
@ -10,6 +17,15 @@ offset_bottom = 40.0
grow_horizontal = 2 grow_horizontal = 2
script = ExtResource("1_rm5t0") script = ExtResource("1_rm5t0")
[node name="ActiveBG" type="Panel" parent="."]
visible = false
layout_mode = 0
offset_left = 4.0
offset_top = 4.0
offset_right = 260.0
offset_bottom = 36.0
theme_override_styles/panel = SubResource("StyleBoxFlat_rm5t0")
[node name="Button" type="Button" parent="."] [node name="Button" type="Button" parent="."]
layout_mode = 0 layout_mode = 0
offset_left = 4.0 offset_left = 4.0

View file

@ -2,9 +2,12 @@ extends Control
@export var value : float = 1.0 @export var value : float = 1.0
signal value_updated(new_value: float)
func _ready() -> void: func _ready() -> void:
$Panel/Slider.value = self.value $Panel/Slider.value = self.value
func _on_slider_value_changed(value: float) -> void: func _on_slider_value_changed(value: float) -> void:
self.value = $Panel/Slider.value self.value = $Panel/Slider.value
$Panel/ValueLabel.text = str(self.value) $Panel/ValueLabel.text = str(self.value)
value_updated.emit(value)

View file

@ -4,9 +4,14 @@ extends Panel
@export var movement_name : String = "Name" @export var movement_name : String = "Name"
@export var flow_path : String = "../../../../../../HelenHouseFlyout/FlowControls/" @export var flow_path : String = "../../../../../../HelenHouseFlyout/FlowControls/"
@export var recording : bool = false @export var recording : bool = false
@export var current_index : int = 0;
var in_flow : float = 1.0
var out_flow : float = 1.0
var key_binding : InputEventKey = InputEventKey.new() var key_binding : InputEventKey = InputEventKey.new()
var binding : bool = false var binding : bool = false
var held_on_previous_frame : bool = false
signal movement_in(movement, rate) signal movement_in(movement, rate)
signal movement_out(movement, rate) signal movement_out(movement, rate)
@ -14,19 +19,43 @@ signal movement_out(movement, rate)
func update_text() -> void: func update_text() -> void:
$Button.text = "%d - %s (%s)" % [movement_bit, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"] $Button.text = "%d - %s (%s)" % [movement_bit, movement_name, key_binding.as_text() if key_binding.keycode != 0 else "Unbound"]
func _update_in_flow(new_value: float) -> void:
in_flow = new_value
func _update_out_flow(new_value: float) -> void:
out_flow = new_value
func _ready() -> void: func _ready() -> void:
var animatronic = get_node("../../../../../../SubViewport/HelenHouse/3stHelen") var animatronic = get_node("../../../../../../SubViewport/HelenHouse/3stHelen")
if (flow_path != "None"):
var if_node = get_node(flow_path + "InFlows/" + movement_name.replace(" ", "") + "Flow")
var of_node = get_node(flow_path + "OutFlows/" + movement_name.replace(" ", "") + "Flow")
if_node.value_updated.connect(self._update_in_flow)
of_node.value_updated.connect(self._update_out_flow)
in_flow = if_node.value
out_flow = of_node.value
movement_in.connect(animatronic._movement_in) movement_in.connect(animatronic._movement_in)
movement_out.connect(animatronic._movement_out) movement_out.connect(animatronic._movement_out)
movement_in.connect(self._movement_in) movement_in.connect(self._movement_in)
movement_out.connect(self._movement_out) movement_out.connect(self._movement_out)
update_text() update_text()
func _process(delta: float) -> void:
if (binding): return
if (Input.is_key_pressed(key_binding.keycode)):
if (!held_on_previous_frame):
movement_in.emit(movement_name, in_flow)
held_on_previous_frame = true;
else:
if (held_on_previous_frame):
movement_out.emit(movement_name, out_flow)
held_on_previous_frame = false;
func _movement_in(movement, rate): func _movement_in(movement, rate):
pass $ActiveBG.visible = true
func _movement_out(movement, rate): func _movement_out(movement, rate):
pass $ActiveBG.visible = false
func _on_button_pressed() -> void: func _on_button_pressed() -> void:
if (recording): return if (recording): return