Browse Source

Adding setting for enabling/disabling autosaves

pull/22/head
Ryan Reed 1 month ago
parent
commit
bbb3411065
5 changed files with 48 additions and 1 deletions
  1. +15
    -0
      addons/save_load_system/autoloads/save_game_manager.gd
  2. +6
    -0
      autoloads/game_settings_manager.gd
  3. +1
    -0
      resources/game_settings/game_options_settings_resource.gd
  4. +8
    -0
      scenes/ui/menus/settings_menu.gd
  5. +18
    -1
      scenes/ui/menus/settings_menu.tscn

+ 15
- 0
addons/save_load_system/autoloads/save_game_manager.gd View File

@ -15,6 +15,8 @@ signal create_autosave
signal create_save(save_name: String)
signal delete_save(filename: String)
signal delete_error(error_message: String)
signal disable_autosaves
signal enable_autosaves
signal load_complete
signal load_error(error_message: String)
signal load_save(filename: String) ## Loads the save into memory. Does NOT apply the load as this allows for other actions (such as resetting the levle/world).[br]Don't forget to run `apply_save` after loading
@ -28,6 +30,7 @@ signal quick_load
signal toggle_save_icon_generation(toggled: bool) ## Enable/Disable the generation of a screenshot during save for the save icon.
var _autosaves_enabled: bool = true
var _autosave_timer: Timer = Timer.new()
var _enable_save_icon_generation: bool = true
var _loaded_save_resource: SaveGameDataResource = SaveGameDataResource.new()
@ -39,6 +42,8 @@ func _ready() -> void:
apply_save.connect(_on_apply_save)
create_save.connect(_on_save_game_as_resource)
delete_save.connect(_on_delete_save)
disable_autosaves.connect(_on_disable_autosaves)
enable_autosaves.connect(_on_enable_autosaves)
load_save.connect(_on_load_game_save)
quick_load.connect(_on_quick_load)
quick_save.connect(_on_quick_save)
@ -250,6 +255,7 @@ func _on_apply_save() -> void:
apply_complete.emit()
func _on_autosave_timer_timeout() -> void:
if not _autosaves_enabled: return
_create_autosave()
## Delete both the save file and the related screenshot
@ -262,6 +268,13 @@ func _on_delete_save(filename: String) -> void:
DirAccess.remove_absolute(save_file_path)
DirAccess.remove_absolute(save_file_path.replace(".tres", ".png")) # Delete icon
func _on_disable_autosaves() -> void:
_autosaves_enabled = false
stop_autosave.emit()
func _on_enable_autosaves() -> void:
_autosaves_enabled = true
func _on_load_game_save(resource_filename: String) -> void:
_load_game_resource(resource_filename)
@ -286,6 +299,8 @@ func _on_save_game_as_resource(save_name: String) -> void:
save_complete.emit()
func _on_start_autosave() -> void:
if not _autosaves_enabled: return
if _save_game_settings == null:
_load_save_settings()
_autosave_timer.start(_save_game_settings.autosave_duration)


+ 6
- 0
autoloads/game_settings_manager.gd View File

@ -2,6 +2,7 @@ extends Node
#region Game Options Signals
signal game_options_autosaves_changed(autosaves_enabled: bool)
signal game_options_block_highlight_changed(block_highlight_enabled: bool)
signal game_options_held_block_ui_changed(held_block_enabled: bool)
signal game_options_quickslots_ui_changed(quickslots_enabled: bool)
@ -34,6 +35,7 @@ var settings: GameSettingsResource = GameSettingsResource.new()
func _init() -> void:
game_options_autosaves_changed.connect(_on_game_options_autosaves_changed)
game_options_block_highlight_changed.connect(_on_game_options_block_highlight_changed)
game_options_held_block_ui_changed.connect(_on_game_options_held_block_ui_changed)
game_options_quickslots_ui_changed.connect(_on_game_options_quickslots_ui_changed)
@ -51,6 +53,10 @@ func _init() -> void:
#region Game Option Settings
func _on_game_options_autosaves_changed(autosaves_enabled: bool) -> void:
settings.game_options.enable_autosaves = autosaves_enabled
save_settings()
func _on_game_options_block_highlight_changed(highlight_enabled: bool) -> void:
settings.game_options.enable_block_highlight = highlight_enabled
save_settings()


+ 1
- 0
resources/game_settings/game_options_settings_resource.gd View File

@ -7,3 +7,4 @@ extends Resource
@export var enable_quickslots_ui: bool = true
@export var enable_held_block: bool = true
@export var enable_save_screenshots: bool = true ## Take a screenshot during save to use as the save icon
@export var enable_autosaves: bool = true

+ 8
- 0
scenes/ui/menus/settings_menu.gd View File

@ -3,6 +3,7 @@ extends Panel
@export_group("Game Option Nodes")
@export var autosaves_input: CheckButton
@export var block_highlight_input: CheckButton
@export var held_block_ui_input: CheckButton
@export var quick_slots_ui_input: CheckButton
@ -24,6 +25,7 @@ func _ready() -> void:
## Sets the default values of all the inputs
func apply_default_values() -> void:
#region Game Options
autosaves_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_autosaves)
block_highlight_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_block_highlight)
held_block_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_held_block)
quick_slots_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_quickslots_ui)
@ -58,6 +60,12 @@ func _on_enable_waila_toggled(toggled_on: bool) -> void:
func _on_screenshot_icon_button_toggled(toggled_on: bool) -> void:
GameSettingsManager.game_options_screenshot_saves_changed.emit(toggled_on)
SaveGameManager.toggle_save_icon_generation.emit(toggled_on)
func _on_autosaves_button_toggled(toggled_on: bool) -> void:
if toggled_on:
SaveGameManager.enable_autosaves.emit()
else:
SaveGameManager.disable_autosaves.emit()
#endregion
#region Graphics Settings


+ 18
- 1
scenes/ui/menus/settings_menu.tscn View File

@ -14,7 +14,7 @@ corner_radius_top_right = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
[node name="SettingsMenu" type="Panel" node_paths=PackedStringArray("block_highlight_input", "held_block_ui_input", "quick_slots_ui_input", "screenshot_icon_input", "waila_input", "resolution_input", "fullscreen_input", "vsync_input", "fov_slider", "fov_value_label")]
[node name="SettingsMenu" type="Panel" node_paths=PackedStringArray("autosaves_input", "block_highlight_input", "held_block_ui_input", "quick_slots_ui_input", "screenshot_icon_input", "waila_input", "resolution_input", "fullscreen_input", "vsync_input", "fov_slider", "fov_value_label")]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
@ -22,6 +22,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_qwcqe")
autosaves_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/Autosaves/CheckButton")
block_highlight_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton")
held_block_ui_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI/CheckButton")
quick_slots_ui_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/QuickslotsUI/CheckButton")
@ -142,6 +143,21 @@ layout_mode = 2
tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon."
button_pressed = true
[node name="Autosaves" type="HBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game"]
layout_mode = 2
[node name="Label" type="Label" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/Autosaves"]
layout_mode = 2
size_flags_horizontal = 3
tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon."
mouse_filter = 1
text = "Enable Autosaves"
[node name="CheckButton" type="CheckButton" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/Autosaves"]
layout_mode = 2
tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon."
button_pressed = true
[node name="Graphics" type="VBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
@ -261,6 +277,7 @@ text = "Close Settings"
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/QuickslotsUI/CheckButton" to="." method="_on_quickslots_ui_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI/CheckButton" to="." method="_on_held_block_ui_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/ScreenshotIcon/CheckButton" to="." method="_on_screenshot_icon_button_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/Autosaves/CheckButton" to="." method="_on_autosaves_button_toggled"]
[connection signal="value_changed" from="Background/MarginContainer/VBoxContainer/TabContainer/Graphics/FOV/HSlider" to="." method="_on_fov_slider_changed"]
[connection signal="pressed" from="Background/MarginContainer/VBoxContainer/TabContainer/Graphics/CenterContainer/ApplyButton" to="." method="_on_graphics_apply_button_pressed"]
[connection signal="pressed" from="Background/BottomRow/CloseButton" to="." method="_on_close_button_pressed"]

Loading…
Cancel
Save