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