From c083791b9aaa0cdeb516ebc82ddaa18583ba9ff0 Mon Sep 17 00:00:00 2001 From: Tabby <41929769+tabby-cat-nya@users.noreply.github.com> Date: Sun, 31 May 2026 20:56:40 +1000 Subject: [PATCH] options menu progress --- Data.gd | 47 +++++++++++++ Data.gd.uid | 1 + main.tscn | 150 ++++++++++++++++++++++++++++++++--------- project.godot | 4 ++ sleepyclockSave.gd | 5 ++ sleepyclockSave.gd.uid | 1 + sleepyclockSave.tres | 6 ++ 7 files changed, 183 insertions(+), 31 deletions(-) create mode 100644 Data.gd create mode 100644 Data.gd.uid create mode 100644 sleepyclockSave.gd create mode 100644 sleepyclockSave.gd.uid create mode 100644 sleepyclockSave.tres diff --git a/Data.gd b/Data.gd new file mode 100644 index 0000000..21c88f8 --- /dev/null +++ b/Data.gd @@ -0,0 +1,47 @@ +extends Node + +@export var save : SleepyclockSave +@export var path : String = "user://sleepyclockSave.tres" + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + print("looking for save...") + if not load_data(): + print ("no save detected... creating new save") + new_data() + else: + print("found it! loading now...") + load_data() + + + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + +# returns true if new data created and saved +func new_data() -> bool: + save = SleepyclockSave.new() + var error = ResourceSaver.save(save,path) + if error != OK: + print(error) + return false + return true + +# returns true if data successfully loaded into save +func load_data() -> bool: + if not FileAccess.file_exists(path): + return false + else: + save = ResourceLoader.load(path) + return true + +# returns true if data successfully saved +func save_data() -> bool: + var error = ResourceSaver.save(save,path) + if error != OK: + print(error) + return false + return true diff --git a/Data.gd.uid b/Data.gd.uid new file mode 100644 index 0000000..9e078e1 --- /dev/null +++ b/Data.gd.uid @@ -0,0 +1 @@ +uid://dhp4epdaeuqug diff --git a/main.tscn b/main.tscn index 614cca4..d022814 100644 --- a/main.tscn +++ b/main.tscn @@ -14,6 +14,9 @@ gradient = SubResource("Gradient_h2yge") [sub_resource type="LabelSettings" id="LabelSettings_h2yge"] font_size = 11 +[sub_resource type="LabelSettings" id="LabelSettings_1bvp3"] +font_color = Color(0.63375676, 0.6337568, 0.63375676, 1) + [node name="Control" type="Control" unique_id=577067945 node_paths=PackedStringArray("bar", "label")] modulate = Color(1, 1, 1, 0.42745098) top_level = true @@ -28,7 +31,39 @@ grow_vertical = 0 script = ExtResource("1_h2yge") bar = NodePath("VBoxContainer/MainContent/bar") label = NodePath("VBoxContainer/MainContent/Label") -bar_position = 1 + +[node name="Bar" type="Window" parent="." unique_id=714499816] +transparent_bg = true +oversampling_override = 1.0 +visible = false +borderless = true +always_on_top = true +transparent = true +unfocusable = true + +[node name="StatusIndicator" type="StatusIndicator" parent="." unique_id=1039426600] +icon = ExtResource("3_h2yge") +menu = NodePath("PopupMenu") + +[node name="PopupMenu" type="PopupMenu" parent="StatusIndicator" unique_id=1255435033] +item_count = 6 +item_0/text = "Exit" +item_0/id = 0 +item_1/id = 1 +item_1/separator = true +item_2/text = "Smaller" +item_2/checkable = 2 +item_2/id = 5 +item_3/text = "Small" +item_3/checkable = 2 +item_3/checked = true +item_3/id = 2 +item_4/text = "Medium" +item_4/checkable = 2 +item_4/id = 3 +item_5/text = "Large" +item_5/checkable = 2 +item_5/id = 4 [node name="Background" type="ColorRect" parent="." unique_id=641703216] layout_mode = 1 @@ -101,46 +136,99 @@ 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="StatusIndicator" type="StatusIndicator" parent="." unique_id=1039426600] -icon = ExtResource("3_h2yge") -menu = NodePath("PopupMenu") - -[node name="PopupMenu" type="PopupMenu" parent="StatusIndicator" unique_id=1255435033] -item_count = 6 -item_0/text = "Exit" -item_0/id = 0 -item_1/id = 1 -item_1/separator = true -item_2/text = "Smaller" -item_2/checkable = 2 -item_2/id = 5 -item_3/text = "Small" -item_3/checkable = 2 -item_3/checked = true -item_3/id = 2 -item_4/text = "Medium" -item_4/checkable = 2 -item_4/id = 3 -item_5/text = "Large" -item_5/checkable = 2 -item_5/id = 4 - [node name="Options Window" type="Window" parent="." unique_id=1651073981] oversampling_override = 1.0 title = "SleepClock Options" initial_position = 1 size = Vector2i(450, 300) +visible = false +unresizable = true always_on_top = true +minimize_disabled = true +maximize_disabled = true -[node name="Label" type="Label" parent="Options Window" unique_id=201796106] -offset_right = 40.0 -offset_bottom = 23.0 +[node name="MarginContainer" type="MarginContainer" parent="Options Window" unique_id=426909220] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_top = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 + +[node name="VBoxContainer" type="VBoxContainer" parent="Options Window/MarginContainer" unique_id=254348110] +layout_mode = 2 + +[node name="GridContainer" type="GridContainer" parent="Options Window/MarginContainer/VBoxContainer" unique_id=974042207] +layout_mode = 2 +size_flags_vertical = 3 +columns = 2 + +[node name="Label" type="Label" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=2012826546] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Sleep Time (24 hour time):" + +[node name="HBoxContainer" type="HBoxContainer" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=34542284] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SpinBox" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer" unique_id=53115223] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 23.0 +suffix = "h" + +[node name="SpinBox2" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer" unique_id=1582897710] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 59.0 +suffix = "m" + +[node name="Label3" type="Label" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=1956355233] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Bar/Clock Duration:" + +[node name="HBoxContainer2" type="HBoxContainer" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=650035341] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SpinBox" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer2" unique_id=1511471443] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 23.0 +suffix = "h" + +[node name="SpinBox2" type="SpinBox" parent="Options Window/MarginContainer/VBoxContainer/GridContainer/HBoxContainer2" unique_id=1155242421] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 59.0 +suffix = "m" + +[node name="Label2" type="Label" parent="Options Window/MarginContainer/VBoxContainer/GridContainer" unique_id=201796106] +layout_mode = 2 text = "Things that will go here: - bar end time - bar duration -- text to display inside bar -" +- text to display inside bar" +label_settings = SubResource("LabelSettings_1bvp3") + +[node name="HBoxContainer" type="HBoxContainer" parent="Options Window/MarginContainer/VBoxContainer" unique_id=2066769118] +layout_mode = 2 + +[node name="Button" type="Button" parent="Options Window/MarginContainer/VBoxContainer/HBoxContainer" unique_id=1764524981] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Cancel" + +[node name="Button2" type="Button" parent="Options Window/MarginContainer/VBoxContainer/HBoxContainer" unique_id=1904551975] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Save" -[connection signal="gui_input" from="VBoxContainer/TitleBar" to="VBoxContainer/TitleBar" method="_on_TitleBar_gui_input"] [connection signal="id_pressed" from="StatusIndicator/PopupMenu" to="." method="_on_popup_menu_id_pressed"] [connection signal="id_pressed" from="StatusIndicator/PopupMenu" to="VBoxContainer/TitleBar" method="_on_popup_menu_id_pressed"] +[connection signal="gui_input" from="VBoxContainer/TitleBar" to="VBoxContainer/TitleBar" method="_on_TitleBar_gui_input"] diff --git a/project.godot b/project.godot index 5270ed9..7547174 100644 --- a/project.godot +++ b/project.godot @@ -22,6 +22,10 @@ run/low_processor_mode=true config/icon="uid://j8lswk62w1d3" config/windows_native_icon="res://Logo/logo taskbar.ico" +[autoload] + +Data="*uid://dhp4epdaeuqug" + [display] window/size/viewport_width=2560 diff --git a/sleepyclockSave.gd b/sleepyclockSave.gd new file mode 100644 index 0000000..84cb79e --- /dev/null +++ b/sleepyclockSave.gd @@ -0,0 +1,5 @@ +extends Resource +class_name SleepyclockSave + +@export var end_time : int = 0 # number of seconds past midnight the clock bar should fill up +@export var duration : int = 7200 # number of seconds the clock bar should progress for (end_time - duration = "start_time") diff --git a/sleepyclockSave.gd.uid b/sleepyclockSave.gd.uid new file mode 100644 index 0000000..42a34a0 --- /dev/null +++ b/sleepyclockSave.gd.uid @@ -0,0 +1 @@ +uid://sm57mtdvlwap diff --git a/sleepyclockSave.tres b/sleepyclockSave.tres new file mode 100644 index 0000000..694037e --- /dev/null +++ b/sleepyclockSave.tres @@ -0,0 +1,6 @@ +[gd_resource type="Resource" script_class="SleepyclockSave" format=3] + +[ext_resource type="Script" path="res://sleepyclockSave.gd" id="1_m4nhg"] + +[resource] +script = ExtResource("1_m4nhg")