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 0c1052f..ca9e4a3 100644 Binary files a/translations/gui.en.translation and b/translations/gui.en.translation differ diff --git a/translations/gui.ru.translation b/translations/gui.ru.translation index ed37c92..a5d2c9f 100644 Binary files a/translations/gui.ru.translation and b/translations/gui.ru.translation differ