From 90043c8e6fbafdaa8ad09076053271ced353525b Mon Sep 17 00:00:00 2001 From: Persephone Bubblegum-Holiday Date: Sat, 24 May 2025 12:26:01 -0700 Subject: [PATCH] key binding now fully works --- Scenes/GUI/Controls/MovementRow.tscn | 18 ++++++++++++++- Scripts/FlowSlider.gd | 3 +++ Scripts/MovementRow.gd | 33 ++++++++++++++++++++++++++-- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/Scenes/GUI/Controls/MovementRow.tscn b/Scenes/GUI/Controls/MovementRow.tscn index e68d738..46c820a 100644 --- a/Scenes/GUI/Controls/MovementRow.tscn +++ b/Scenes/GUI/Controls/MovementRow.tscn @@ -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="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"] anchors_preset = 10 anchor_right = 1.0 @@ -10,6 +17,15 @@ offset_bottom = 40.0 grow_horizontal = 2 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="."] layout_mode = 0 offset_left = 4.0 diff --git a/Scripts/FlowSlider.gd b/Scripts/FlowSlider.gd index 0c85b45..3bc2838 100644 --- a/Scripts/FlowSlider.gd +++ b/Scripts/FlowSlider.gd @@ -2,9 +2,12 @@ extends Control @export var value : float = 1.0 +signal value_updated(new_value: float) + func _ready() -> void: $Panel/Slider.value = self.value func _on_slider_value_changed(value: float) -> void: self.value = $Panel/Slider.value $Panel/ValueLabel.text = str(self.value) + value_updated.emit(value) diff --git a/Scripts/MovementRow.gd b/Scripts/MovementRow.gd index a14fabe..65d3ccd 100644 --- a/Scripts/MovementRow.gd +++ b/Scripts/MovementRow.gd @@ -4,9 +4,14 @@ extends Panel @export var movement_name : String = "Name" @export var flow_path : String = "../../../../../../HelenHouseFlyout/FlowControls/" @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 binding : bool = false +var held_on_previous_frame : bool = false signal movement_in(movement, rate) signal movement_out(movement, rate) @@ -14,19 +19,43 @@ signal movement_out(movement, rate) func update_text() -> void: $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: 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_out.connect(animatronic._movement_out) movement_in.connect(self._movement_in) movement_out.connect(self._movement_out) 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): - pass + $ActiveBG.visible = true func _movement_out(movement, rate): - pass + $ActiveBG.visible = false func _on_button_pressed() -> void: if (recording): return