From f47367dfdf295ddfc6e7e620214d5c3ba36310d8 Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Thu, 27 Mar 2025 09:58:45 -0400 Subject: [PATCH] Adding setting for disabling/enabling save screenshots --- autoloads/game_settings_manager.gd | 6 ++++++ .../game_options_settings_resource.gd | 1 + save_load/autoloads/save_game_manager.gd | 13 ++++++++++++- scenes/ui/menus/settings_menu.gd | 6 ++++++ scenes/ui/menus/settings_menu.tscn | 19 ++++++++++++++++++- 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/autoloads/game_settings_manager.gd b/autoloads/game_settings_manager.gd index c17bc8f..cdf377f 100644 --- a/autoloads/game_settings_manager.gd +++ b/autoloads/game_settings_manager.gd @@ -5,6 +5,7 @@ extends Node 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) +signal game_options_screenshot_saves_changed(screenshots_enabled: bool) signal game_options_waila_changed(waila_enabled: bool) #endregion @@ -36,6 +37,7 @@ func _init() -> void: 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) + game_options_screenshot_saves_changed.connect(_on_game_options_screenshot_saves_changed) game_options_waila_changed.connect(_on_game_options_waila_changed) graphics_fov_changed.connect(_on_graphics_fov_changed) @@ -61,6 +63,10 @@ func _on_game_options_quickslots_ui_changed(quickslots_enabled: bool) -> void: settings.game_options.enable_quickslots_ui = quickslots_enabled save_settings() +func _on_game_options_screenshot_saves_changed(screenshots_enabled: bool) -> void: + settings.game_options.enable_save_screenshots = screenshots_enabled + save_settings() + func _on_game_options_waila_changed(waila_enabled: bool) -> void: settings.game_options.enable_waila = waila_enabled save_settings() diff --git a/resources/game_settings/game_options_settings_resource.gd b/resources/game_settings/game_options_settings_resource.gd index bd78936..7c9a5c6 100644 --- a/resources/game_settings/game_options_settings_resource.gd +++ b/resources/game_settings/game_options_settings_resource.gd @@ -6,3 +6,4 @@ extends Resource @export var enable_block_highlight: bool = true @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 diff --git a/save_load/autoloads/save_game_manager.gd b/save_load/autoloads/save_game_manager.gd index 96c64b8..86d1274 100644 --- a/save_load/autoloads/save_game_manager.gd +++ b/save_load/autoloads/save_game_manager.gd @@ -17,12 +17,15 @@ signal quick_save signal quick_load signal open_save_list_ui signal close_save_list_ui +signal toggle_save_icon_generation(toggled: bool) ## Enable/Disable the generation of a screenshot during save for the save icon. var _game_data_resource: SaveGameDataResource = SaveGameDataResource.new() var _save_icon_size: Vector2i = Vector2i(896, 504) ## If Vector2.ZERO, uses the user's resolution var _save_level_data_component: SaveLevelDataComponent ## Contains the save paths and filenames +var _enable_save_icon_generation: bool = true + func _ready() -> void: quick_load.connect(quick_load_game) @@ -30,6 +33,7 @@ func _ready() -> void: create_save_file.connect(_on_save_game_as_resource) load_save_file.connect(load_game_save) delete_save_file.connect(_on_delete_save_file) + toggle_save_icon_generation.connect(_on_toggle_save_icon_generation) func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("quick_save"): @@ -177,10 +181,14 @@ func _save_node_data() -> void: ## Takes a screenshot and saves next to the save file[br] ## The icon utilizes the same filename as the save file, replacing `.tres` with `.png` func _take_save_screenshot(save_game_file_path: String) -> void: - # TODO: Hide the UI before taking the screenshot + if !_enable_save_icon_generation: return + var _icon_filepath: String = save_game_file_path.replace(".tres", ".png") + # TODO: Hide the UI before taking the screenshot var _icon: Image = get_viewport().get_texture().get_image() + # TODO: Show the UI after taking the screenshot + if _save_icon_size != Vector2i.ZERO: _icon.resize(_save_icon_size.x, _save_icon_size.y) @@ -205,3 +213,6 @@ func _on_delete_save_file(filename: String) -> void: var save_file_path: String = _save_level_data_component.settings.save_game_data_path + filename DirAccess.remove_absolute(save_file_path) DirAccess.remove_absolute(save_file_path.replace(".tres", ".png")) # Delete icon + +func _on_toggle_save_icon_generation(toggled: bool) -> void: + _enable_save_icon_generation = toggled diff --git a/scenes/ui/menus/settings_menu.gd b/scenes/ui/menus/settings_menu.gd index b192ce9..f1369ec 100644 --- a/scenes/ui/menus/settings_menu.gd +++ b/scenes/ui/menus/settings_menu.gd @@ -6,6 +6,7 @@ extends Panel @export var block_highlight_input: CheckButton @export var held_block_ui_input: CheckButton @export var quick_slots_ui_input: CheckButton +@export var screenshot_icon_input: CheckButton @export var waila_input: CheckButton @export_group("Graphics Settings Nodes") @@ -26,6 +27,7 @@ func apply_default_values() -> void: 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) + screenshot_icon_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_save_screenshots) waila_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_waila) #endregion @@ -52,6 +54,10 @@ func _on_quickslots_ui_toggled(toggled_on: bool) -> void: func _on_enable_waila_toggled(toggled_on: bool) -> void: GameSettingsManager.game_options_waila_changed.emit(toggled_on) + +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) #endregion #region Graphics Settings diff --git a/scenes/ui/menus/settings_menu.tscn b/scenes/ui/menus/settings_menu.tscn index 9a6250e..6db6aa4 100644 --- a/scenes/ui/menus/settings_menu.tscn +++ b/scenes/ui/menus/settings_menu.tscn @@ -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", "waila_input", "resolution_input", "fullscreen_input", "vsync_input", "fov_slider", "fov_value_label")] +[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")] process_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -25,6 +25,7 @@ script = ExtResource("1_qwcqe") 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") +screenshot_icon_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/ScreenshotIcon/CheckButton") waila_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/Waila/CheckButton") resolution_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Resolution/OptionButton") fullscreen_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Fullscreen/CheckBox") @@ -126,6 +127,21 @@ text = "Enable Player Held Block" layout_mode = 2 button_pressed = true +[node name="ScreenshotIcon" type="HBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/ScreenshotIcon"] +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 Save Screenshot" + +[node name="CheckButton" type="CheckButton" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/ScreenshotIcon"] +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 @@ -244,6 +260,7 @@ text = "Close Settings" [connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/Waila/CheckButton" to="." method="_on_enable_waila_toggled"] [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="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"]