From 278cddcf22735f55196acbb0006553c7f37a5cb3 Mon Sep 17 00:00:00 2001 From: Tabby <41929769+tabby-cat-nya@users.noreply.github.com> Date: Mon, 1 Jun 2026 17:10:16 +1000 Subject: [PATCH] more options yippeee!! --- Data.gd | 7 +++++ Tools.gd | 1 + main.tscn | 56 ++++++++++++++++++++++++++++++++---- options_window.gd | 71 +++++++++++++++++++++++++++++++++++++--------- sleepyclockSave.gd | 5 ++++ 5 files changed, 120 insertions(+), 20 deletions(-) diff --git a/Data.gd b/Data.gd index a5c004b..2f167fc 100644 --- a/Data.gd +++ b/Data.gd @@ -10,6 +10,13 @@ enum Position { Left, } +enum Styles { + Filling, + Filling_Reversed, + Emptying, + Emptying_Reversed, +} + # Called when the node enters the scene tree for the first time. func _ready() -> void: print("looking for save...") diff --git a/Tools.gd b/Tools.gd index ec6fac8..055ea67 100644 --- a/Tools.gd +++ b/Tools.gd @@ -3,6 +3,7 @@ extends Node func time_to_seconds(hours_value : int, minutes_value : int) -> int: var hour_seconds : int = hours_value * 60 * 60 var minutes_seconds : int = minutes_value * 60 + #print(hour_seconds + minutes_seconds) return hour_seconds + minutes_seconds func seconds_to_time(seconds : int) -> Dictionary: diff --git a/main.tscn b/main.tscn index 302a156..fa37ebc 100644 --- a/main.tscn +++ b/main.tscn @@ -128,7 +128,7 @@ grow_vertical = 2 text = "12:34 Remaining Until Sleepy time, there is alot of space for text you can work with here meow meow meow meow" label_settings = SubResource("LabelSettings_h2yge") -[node name="Options Window" type="Window" parent="." unique_id=1651073981 node_paths=PackedStringArray("sleep_h", "sleep_m", "duration_h", "duration_m", "size_label", "size_slider", "bar_color", "background_color", "warning_color", "trans_label", "trans_slider")] +[node name="Options Window" type="Window" parent="." unique_id=1651073981 node_paths=PackedStringArray("sleep_h", "sleep_m", "duration_h", "duration_m", "size_label", "size_slider", "bar_color", "background_color", "warning_color", "trans_label", "trans_slider", "warning_h", "warning_m", "flash_check", "before_h", "before_m", "after_h", "after_m", "style_dropdown", "position_dropdown")] oversampling_override = 1.0 title = "SleepyClock Options" initial_position = 1 @@ -149,6 +149,15 @@ background_color = NodePath("MarginContainer/VBoxContainer/GridContainer/backgro warning_color = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer4/warningColor") trans_label = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer7/transLabel") trans_slider = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer7/transSlider") +warning_h = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer4/warningH") +warning_m = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer4/warningM") +flash_check = NodePath("MarginContainer/VBoxContainer/GridContainer/flashCheck") +before_h = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer5/beforeH") +before_m = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer5/beforeM") +after_h = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer6/afterH") +after_m = NodePath("MarginContainer/VBoxContainer/GridContainer/HBoxContainer6/afterM") +style_dropdown = NodePath("MarginContainer/VBoxContainer/GridContainer/styleDropdown") +position_dropdown = NodePath("MarginContainer/VBoxContainer/GridContainer/positionDropdown") [node name="MarginContainer" type="MarginContainer" parent="Options Window" unique_id=426909220] anchors_preset = 15 @@ -317,7 +326,6 @@ layout_mode = 2 size_flags_horizontal = 3 max_value = 23.0 value = 1.0 -editable = false suffix = "h" select_all_on_focus = true @@ -325,7 +333,6 @@ select_all_on_focus = true layout_mode = 2 size_flags_horizontal = 3 max_value = 59.0 -editable = false suffix = "m" select_all_on_focus = true @@ -338,7 +345,6 @@ text = "flash bar when time ends 🛈" [node name="flashCheck" type="CheckButton" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=1168112585] layout_mode = 2 size_flags_horizontal = 4 -disabled = true [node name="Label8" type="Label" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=280072151] layout_mode = 2 @@ -349,11 +355,17 @@ text = "Display before time starts 🛈" [node name="HBoxContainer5" type="HBoxContainer" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=2104802150] layout_mode = 2 +[node name="beforeH" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer5" unique_id=239006734] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 23.0 +suffix = "h" +select_all_on_focus = true + [node name="beforeM" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer5" unique_id=157077084] layout_mode = 2 size_flags_horizontal = 3 max_value = 59.0 -editable = false suffix = "m" select_all_on_focus = true @@ -366,14 +378,39 @@ text = "Display after time ends 🛈" [node name="HBoxContainer6" type="HBoxContainer" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=1503325100] layout_mode = 2 +[node name="afterH" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer6" unique_id=514335276] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 23.0 +suffix = "h" +select_all_on_focus = true + [node name="afterM" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer6" unique_id=1517063919] layout_mode = 2 size_flags_horizontal = 3 max_value = 59.0 -editable = false suffix = "m" select_all_on_focus = true +[node name="Label12" type="Label" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=900821531] +layout_mode = 2 +tooltip_text = "Filling or Emptying changed weather the bar grows or shrinks over time. Reversed swaps the diretion of the bars movement" +mouse_filter = 1 +text = "Progress Style 🛈" + +[node name="styleDropdown" type="OptionButton" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=1485870511] +layout_mode = 2 +selected = 0 +item_count = 4 +popup/item_0/text = "Filling" +popup/item_0/id = 0 +popup/item_1/text = "Filling Reversed" +popup/item_1/id = 1 +popup/item_2/text = "Emptying" +popup/item_2/id = 2 +popup/item_3/text = "Emptying Reversed" +popup/item_3/id = 3 + [node name="Label2" type="Label" parent="Options Window/MarginContainer/VBoxContainer" unique_id=201796106] layout_mode = 2 text = "todo: @@ -410,5 +447,12 @@ text = "Save" [connection signal="color_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/barColor" to="Options Window" method="_on_bar_color_color_changed"] [connection signal="color_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/backgroundColor" to="Options Window" method="_on_background_color_color_changed"] [connection signal="color_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer4/warningColor" to="Options Window" method="_on_warning_color_color_changed"] +[connection signal="value_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer4/warningH" to="Options Window" method="_on_warning_value_changed"] +[connection signal="toggled" from="Options Window/MarginContainer/VBoxContainer/GridContainer/flashCheck" to="Options Window" method="_on_flash_check_toggled"] +[connection signal="value_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer5/beforeH" to="Options Window" method="_on_before_value_changed"] +[connection signal="value_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer5/beforeM" to="Options Window" method="_on_before_value_changed"] +[connection signal="value_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer6/afterH" to="Options Window" method="_on_after_value_changed"] +[connection signal="value_changed" from="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer6/afterM" to="Options Window" method="_on_after_value_changed"] +[connection signal="item_selected" from="Options Window/MarginContainer/VBoxContainer/GridContainer/styleDropdown" to="Options Window" method="_on_style_dropdown_item_selected"] [connection signal="pressed" from="Options Window/MarginContainer/VBoxContainer/HBoxContainer/cancelButton" to="Options Window" method="_on_cancel_button_pressed"] [connection signal="pressed" from="Options Window/MarginContainer/VBoxContainer/HBoxContainer/saveButton" to="Options Window" method="_on_save_button_pressed"] diff --git a/options_window.gd b/options_window.gd index 591ba5d..061212d 100644 --- a/options_window.gd +++ b/options_window.gd @@ -13,6 +13,15 @@ signal options_changed @export var warning_color: ColorPickerButton @export var trans_label: Label @export var trans_slider: HSlider +@export var warning_h: SpinBox +@export var warning_m: SpinBox +@export var flash_check: CheckButton +@export var before_h: SpinBox +@export var before_m: SpinBox +@export var after_h: SpinBox +@export var after_m: SpinBox +@export var style_dropdown: OptionButton +@export var position_dropdown: OptionButton func _init() -> void: @@ -57,32 +66,38 @@ func _on_save_button_pressed() -> void: func _on_visibility_changed() -> void: #populate form #print(Data.save.end_time) - sleep_h.value = int(Data.save.end_time/(60*60)) - sleep_m.value = int((Data.save.end_time-sleep_h.value*60*60)/60) - duration_h.value = int(Data.save.duration/(60*60)) - duration_m.value = int((Data.save.duration-duration_h.value*60*60)/60) + var sleep_dict : Dictionary = Tools.seconds_to_time(int(Data.save.end_time)) + sleep_h.value = sleep_dict.get("h") + sleep_m.value = sleep_dict.get("m") + var duration_dict : Dictionary = Tools.seconds_to_time(int(Data.save.duration)) + duration_h.value = duration_dict.get("h") + duration_m.value = duration_dict.get("m") + var warning_time_dict : Dictionary = Tools.seconds_to_time(int(Data.save.warning_time)) + warning_h.value = warning_time_dict.get("h") + warning_m.value = warning_time_dict.get("m") + var before_time_dict : Dictionary = Tools.seconds_to_time(int(Data.save.before_time)) + before_h.value = before_time_dict.get("h") + before_m.value = before_time_dict.get("m") + var after_time_dict : Dictionary = Tools.seconds_to_time(int(Data.save.after_time)) + after_h.value = after_time_dict.get("h") + after_m.value = after_time_dict.get("m") size_slider.value = Data.save.size bar_color.color = Data.save.bar_color background_color.color = Data.save.background_color warning_color.color = Data.save.warning_color trans_slider.value = Data.save.bar_transparency + flash_check.button_pressed = Data.save.flashing + position_dropdown.select(Data.save.position) + style_dropdown.select(Data.save.progress_style) pass # Replace with function body. func _on_duration_value_changed(value: float) -> void: - var duration_seconds : float = 0 - duration_seconds += duration_h.value * 60 * 60 - duration_seconds += duration_m.value * 60 - Data.save.duration = duration_seconds - pass # Replace with function body. + Data.save.duration = Tools.time_to_seconds(int(duration_h.value),int(duration_m.value)) func _on_sleep_value_changed(value: float) -> void: - var end_seconds : float = 0 - end_seconds += sleep_h.value * 60 * 60 - end_seconds += sleep_m.value * 60 - Data.save.end_time = end_seconds - pass # Replace with function body. + Data.save.end_time = Tools.time_to_seconds(int(sleep_h.value),int(sleep_m.value)) func _on_size_slider_value_changed(value: float) -> void: @@ -116,3 +131,31 @@ func _on_warning_color_color_changed(color: Color) -> void: func _on_trans_slider_value_changed(value: float) -> void: Data.save.bar_transparency = value options_changed.emit() + + +func _on_warning_value_changed(value: float) -> void: + Data.save.warning_time = Tools.time_to_seconds(int(warning_h.value),int(warning_m.value)) + + +func _on_flash_check_toggled(toggled_on: bool) -> void: + Data.save.flashing = toggled_on + + +func _on_before_value_changed(value: float) -> void: + Data.save.before_time = Tools.time_to_seconds(int(before_h.value),int(before_m.value)) + + +func _on_after_value_changed(value: float) -> void: + Data.save.after_time = Tools.time_to_seconds(int(after_h.value),int(after_m.value)) + + +func _on_style_dropdown_item_selected(index: int) -> void: + if index == 0: + Data.save.progress_style = Data.Styles.Filling + elif index == 1: + Data.save.progress_style = Data.Styles.Filling_Reversed + elif index == 2: + Data.save.progress_style = Data.Styles.Emptying + elif index == 3: + Data.save.progress_style = Data.Styles.Emptying_Reversed + options_changed.emit() diff --git a/sleepyclockSave.gd b/sleepyclockSave.gd index 2b33f3b..04d7a05 100644 --- a/sleepyclockSave.gd +++ b/sleepyclockSave.gd @@ -10,3 +10,8 @@ class_name SleepyclockSave @export var bar_color : Color = Color.DODGER_BLUE @export var warning_color : Color = Color.RED @export var bar_transparency : float = 0.5 +@export var warning_time : float = 3600 +@export var before_time : float = 86340 +@export var after_time : float = 86340 +@export var flashing : bool = true +@export var progress_style : Data.Styles = Data.Styles.Filling