From 5a7c719c56a791838fd4e2e4b7bced528461bad7 Mon Sep 17 00:00:00 2001 From: lepshiy Date: Wed, 12 Nov 2025 16:36:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BD=D0=B8=D0=BC=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8=20"=D0=97=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D1=8F".=20=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/контроль/control_prd.gd | 65 ++++++++++++++++++++++++++++++ scenes/контроль/control_prd.gd.uid | 1 + scripts/.gd.uid | 1 + 3 files changed, 67 insertions(+) create mode 100644 scenes/контроль/control_prd.gd create mode 100644 scenes/контроль/control_prd.gd.uid create mode 100644 scripts/.gd.uid diff --git a/scenes/контроль/control_prd.gd b/scenes/контроль/control_prd.gd new file mode 100644 index 0000000..11f5d18 --- /dev/null +++ b/scenes/контроль/control_prd.gd @@ -0,0 +1,65 @@ +extends Button + +var base_style: StyleBoxFlat +var tween +var pulsing: bool = false +@onready var progress_bars := get_tree().get_nodes_in_group("control_progress") + + +func _ready(): + if get("theme_override_styles/disabled") == null: + base_style = StyleBoxFlat.new() + base_style.border_color = Color(1.0, 0.5, 0.0) + base_style.border_width_top = 4 + base_style.border_width_bottom = 4 + base_style.border_width_left = 4 + base_style.border_width_right = 4 + set("theme_override_styles/disabled", base_style) + else: + base_style = get("theme_override_styles/disabled") + connect("pressed", Callable(self, "_on_pressed")) + + +func _on_pressed(): + disabled = true + _start_pulse() + var callback = Callable(self, "_check_progress_end") + for pb in progress_bars: + if not pb.is_connected("value_changed", callback): + pb.connect("value_changed", callback) + + +func _start_pulse(): + if pulsing: + return + pulsing = true + tween = create_tween() + tween.set_loops() + var color1 = Color(1.0, 0.5, 0.0) # оранжевый + var color2 = Color(0.4, 0.4, 0.4) # серый + tween.tween_property(base_style, "border_color", color2, 0.5)\ + .set_trans(Tween.TRANS_SINE)\ + .set_ease(Tween.EASE_IN_OUT) + tween.tween_property(base_style, "border_color", color1, 0.5)\ + .set_trans(Tween.TRANS_SINE)\ + .set_ease(Tween.EASE_IN_OUT) + + +func _stop_pulse(): + if tween: + tween.kill() + tween = null + base_style.border_color = Color(1.0, 0.5, 0.0) + pulsing = false + disabled = false + var callback = Callable(self, "_check_progress_end") + for pb in progress_bars: + if pb.is_connected("value_changed", callback): + pb.disconnect("value_changed", callback) + + +func _check_progress_end(value): + for pb in progress_bars: + if pb.value < pb.max_value: + return + _stop_pulse() diff --git a/scenes/контроль/control_prd.gd.uid b/scenes/контроль/control_prd.gd.uid new file mode 100644 index 0000000..babdaa8 --- /dev/null +++ b/scenes/контроль/control_prd.gd.uid @@ -0,0 +1 @@ +uid://cjj7pbbhk8q7c diff --git a/scripts/.gd.uid b/scripts/.gd.uid new file mode 100644 index 0000000..2226e0a --- /dev/null +++ b/scripts/.gd.uid @@ -0,0 +1 @@ +uid://durllxmhtejp1