From 48a22dd956015706901e385d480ffda35fca366f Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 08:43:56 +0500 Subject: [PATCH] Saving some parameters --- project.godot | 3 +- scenes/main_menu.tscn | 9 ++++-- scripts/SettingsSerializer.cs | 43 ++++++++++++++++++++++++++++ scripts/SettingsSerializer.cs.uid | 1 + scripts/Utility.cs | 1 + scripts/gui/PrototypeWindow.cs | 12 ++++++++ scripts/gui/PrototypeWindow.cs.uid | 1 + scripts/gui/menu_buttons.gd | 6 +++- scripts/gui/prototype_window.gd | 9 ------ scripts/gui/prototype_window.gd.uid | 1 - translations/gui.csv | 1 + translations/gui.en.translation | Bin 1666 -> 1686 bytes translations/gui.ru.translation | Bin 2729 -> 2757 bytes 13 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 scripts/SettingsSerializer.cs create mode 100644 scripts/SettingsSerializer.cs.uid create mode 100644 scripts/gui/PrototypeWindow.cs create mode 100644 scripts/gui/PrototypeWindow.cs.uid delete mode 100644 scripts/gui/prototype_window.gd delete mode 100644 scripts/gui/prototype_window.gd.uid diff --git a/project.godot b/project.godot index 3576068..eb23521 100644 --- a/project.godot +++ b/project.godot @@ -27,8 +27,9 @@ config/windows_native_icon="res://icon.ico" LevelController="*res://scripts/LevelController.cs" Cursor="*res://scripts/Cursor.cs" GameRegistry="*res://scripts/systems/GameRegistry.cs" -Cheats="*res://scripts/debug/Cheats.cs" +Cheats="res://scripts/debug/Cheats.cs" AudioSequencer="*res://scenes/audio_sequencer.tscn" +SettingsSerializer="*res://scripts/SettingsSerializer.cs" [display] diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index f47d938..437bba9 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_jk1qb"] [ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/gui/main_menu_rich_text.gd" id="2_5dd4i"] -[ext_resource type="Script" uid="uid://dgevhrbucpwrs" path="res://scripts/gui/prototype_window.gd" id="2_lgwnu"] +[ext_resource type="Script" uid="uid://cghu4i3bnyavg" path="res://scripts/gui/PrototypeWindow.cs" id="2_flqon"] [ext_resource type="Texture2D" uid="uid://c37pvdhol2x02" path="res://assets/sprites/menu_bg.png" id="3_lgwnu"] [ext_resource type="Theme" uid="uid://btulhvgwclket" path="res://resources/themes/MainMenu.tres" id="4_flqon"] [ext_resource type="Script" uid="uid://c06k4k3ww48ev" path="res://scripts/gui/menu_buttons.gd" id="5_rcqid"] @@ -63,7 +63,7 @@ borderless = true theme_override_styles/panel = SubResource("StyleBoxTexture_jl0ue") ok_button_text = "close" dialog_close_on_escape = false -script = ExtResource("2_lgwnu") +script = ExtResource("2_flqon") [node name="ScrollContainer" type="ScrollContainer" parent="PrototypeWindow"] offset_left = 6.0 @@ -151,6 +151,10 @@ offset_bottom = 235.0 layout_mode = 2 text = "about" +[node name="SplashButton" type="Button" parent="Buttons/InfoButtons"] +layout_mode = 2 +text = "splash" + [node name="AlmanachButton" type="Button" parent="Buttons/InfoButtons"] layout_mode = 2 icon = ExtResource("7_flqon") @@ -207,6 +211,7 @@ script = SubResource("GDScript_flqon") [connection signal="pressed" from="Buttons/GameButtons/PlayButton" to="Buttons" method="_on_play_button_pressed"] [connection signal="pressed" from="Buttons/GameButtons/ExitButton" to="Buttons" method="_on_exit_button_pressed"] [connection signal="pressed" from="Buttons/InfoButtons/AboutButton" to="Buttons" method="_on_button_pressed"] +[connection signal="pressed" from="Buttons/InfoButtons/SplashButton" to="Buttons" method="_on_splash_button_pressed"] [connection signal="pressed" from="Buttons/InfoButtons/AlmanachButton" to="Buttons" method="_on_almanach_button_pressed"] [connection signal="close_requested" from="Buttons/SACRIFICE/CONFIRM" to="Buttons/SACRIFICE" method="_on_confirm_close_requested"] [connection signal="confirmed" from="Buttons/SACRIFICE/CONFIRM" to="Buttons/SACRIFICE" method="_on_confirm_confirmed"] diff --git a/scripts/SettingsSerializer.cs b/scripts/SettingsSerializer.cs new file mode 100644 index 0000000..35b7caa --- /dev/null +++ b/scripts/SettingsSerializer.cs @@ -0,0 +1,43 @@ +using Godot; +using Newlon; +using System; + +public partial class SettingsSerializer : Node +{ + const string CFG_PATH = "user://config.cfg"; + public override void _EnterTree() + { + GetTree().AutoAcceptQuit = false; + if (FileAccess.FileExists(CFG_PATH) == false) return; + + var access = FileAccess.Open(CFG_PATH, FileAccess.ModeFlags.Read); + + Utility.SFX = float.Parse(access.GetLine().Split(" ")[1]); + Utility.Music = float.Parse(access.GetLine().Split(" ")[1]); + Utility.Splash = bool.Parse(access.GetLine().Split(" ")[1]); + + AudioServer.SetBusVolumeDb(0, Mathf.LinearToDb((float)Utility.SFX)); + AudioServer.SetBusVolumeDb(1, Mathf.LinearToDb((float)Utility.Music)); + + access.Close(); + } + public override void _ExitTree() + { + var access = FileAccess.Open(CFG_PATH, FileAccess.ModeFlags.Write); + access.Resize(0); + access.StoreString(string.Format("SFX {0}\nMusic {1}\nSplash {2}\n", Utility.SFX,Utility.Music,Utility.Splash)); + + access.Close(); + } + + public override void _Notification(int what) + { + if (what == NotificationWMCloseRequest) + { + _ExitTree(); + GetTree().Quit(); + } + } + + +} diff --git a/scripts/SettingsSerializer.cs.uid b/scripts/SettingsSerializer.cs.uid new file mode 100644 index 0000000..2b68752 --- /dev/null +++ b/scripts/SettingsSerializer.cs.uid @@ -0,0 +1 @@ +uid://bflvotmed7jfy diff --git a/scripts/Utility.cs b/scripts/Utility.cs index ae804ac..50a4eab 100644 --- a/scripts/Utility.cs +++ b/scripts/Utility.cs @@ -31,6 +31,7 @@ public class Utility public static double SFX = 1.0f; public static double Music = 1.0f; + public static bool Splash = false; } diff --git a/scripts/gui/PrototypeWindow.cs b/scripts/gui/PrototypeWindow.cs new file mode 100644 index 0000000..39ba7d9 --- /dev/null +++ b/scripts/gui/PrototypeWindow.cs @@ -0,0 +1,12 @@ +using Godot; +using Newlon; + +public partial class PrototypeWindow : AcceptDialog +{ + public override void _Ready() + { + if (Utility.Splash) return; + Utility.Splash = true; + PopupCentered(); + } +} diff --git a/scripts/gui/PrototypeWindow.cs.uid b/scripts/gui/PrototypeWindow.cs.uid new file mode 100644 index 0000000..3b3182a --- /dev/null +++ b/scripts/gui/PrototypeWindow.cs.uid @@ -0,0 +1 @@ +uid://cghu4i3bnyavg diff --git a/scripts/gui/menu_buttons.gd b/scripts/gui/menu_buttons.gd index 9c89ded..8f62543 100644 --- a/scripts/gui/menu_buttons.gd +++ b/scripts/gui/menu_buttons.gd @@ -7,6 +7,7 @@ func _on_play_button_pressed() -> void: func _on_exit_button_pressed() -> void: + get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) get_tree().quit() $ChannelPlayer.call("Play") @@ -15,7 +16,10 @@ func _on_button_pressed() -> void: $"../AboutWindow".popup_centered() $ChannelPlayer.call("Play") - func _on_almanach_button_pressed() -> void: $"../Almanach".visible = true $ChannelPlayer.call("Play") + + +func _on_splash_button_pressed() -> void: + $"../PrototypeWindow".popup_centered() diff --git a/scripts/gui/prototype_window.gd b/scripts/gui/prototype_window.gd deleted file mode 100644 index 24cc614..0000000 --- a/scripts/gui/prototype_window.gd +++ /dev/null @@ -1,9 +0,0 @@ -extends AcceptDialog - -static var seen = false - -func _ready() -> void: - if seen: - return - seen = true - popup_centered() diff --git a/scripts/gui/prototype_window.gd.uid b/scripts/gui/prototype_window.gd.uid deleted file mode 100644 index dece4b3..0000000 --- a/scripts/gui/prototype_window.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dgevhrbucpwrs diff --git a/translations/gui.csv b/translations/gui.csv index c0462a2..11e08c3 100644 --- a/translations/gui.csv +++ b/translations/gui.csv @@ -53,3 +53,4 @@ close,Close,Закрыть sfx,SFX,Звуки music,Music,Музыка paused,Paused,Игра на паузе +splash,Splash,Сплэш diff --git a/translations/gui.en.translation b/translations/gui.en.translation index 0c1052f282bdbcb8854bd9868d36247f55a81a2c..ca9e4a3315627ccb6957822d54a88a8e2f5399a5 100644 GIT binary patch delta 115 zcmZqToyNPNk5N;Pfq~&a60kwyI|13OK&$}79+S5-PL^W=vKWDQxAcv_K#GAKiuafp in9gOM9Klq@xMcHXrUlHx!38;q#Tj4)APqsmLCye>ASOfr delta 95 zcmbQn+r+z}k5N;Lfq~&a60ktx+X30EK&$}7E|a%2PUd3-vOsvZ^o_p^43jgMsu<^P Te$2FhnI9;~4wVcF4sr$n)rld> diff --git a/translations/gui.ru.translation b/translations/gui.ru.translation index ed37c92e7cb796e2a466fb021b993010ea139741..a5d2c9f545333fc7d291db0fb2d769faadc16038 100644 GIT binary patch delta 128 zcmZ1}dQ^17Tt-bj1_p-zNWcb(?*wGC00e9Y7hN0uJ`#&sB delta 100 zcmX>qx>9t*Tt-bT1_p-zNWcP#ZwF+v05s-?Y;2>uJl-(lB