Browse Source

Adding setting for disabling/enabling save screenshots

pull/16/head
Ryan Reed 1 month ago
parent
commit
f47367dfdf
5 changed files with 43 additions and 2 deletions
  1. +6
    -0
      autoloads/game_settings_manager.gd
  2. +1
    -0
      resources/game_settings/game_options_settings_resource.gd
  3. +12
    -1
      save_load/autoloads/save_game_manager.gd
  4. +6
    -0
      scenes/ui/menus/settings_menu.gd
  5. +18
    -1
      scenes/ui/menus/settings_menu.tscn

+ 6
- 0
autoloads/game_settings_manager.gd View File

@ -5,6 +5,7 @@ extends Node
signal game_options_block_highlight_changed(block_highlight_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_held_block_ui_changed(held_block_enabled: bool)
signal game_options_quickslots_ui_changed(quickslots_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) signal game_options_waila_changed(waila_enabled: bool)
#endregion #endregion
@ -36,6 +37,7 @@ func _init() -> void:
game_options_block_highlight_changed.connect(_on_game_options_block_highlight_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_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_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) game_options_waila_changed.connect(_on_game_options_waila_changed)
graphics_fov_changed.connect(_on_graphics_fov_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 settings.game_options.enable_quickslots_ui = quickslots_enabled
save_settings() 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: func _on_game_options_waila_changed(waila_enabled: bool) -> void:
settings.game_options.enable_waila = waila_enabled settings.game_options.enable_waila = waila_enabled
save_settings() save_settings()


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

@ -6,3 +6,4 @@ extends Resource
@export var enable_block_highlight: bool = true @export var enable_block_highlight: bool = true
@export var enable_quickslots_ui: bool = true @export var enable_quickslots_ui: bool = true
@export var enable_held_block: 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

+ 12
- 1
save_load/autoloads/save_game_manager.gd View File

@ -17,12 +17,15 @@ signal quick_save
signal quick_load signal quick_load
signal open_save_list_ui signal open_save_list_ui
signal close_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 _game_data_resource: SaveGameDataResource = SaveGameDataResource.new()
var _save_icon_size: Vector2i = Vector2i(896, 504) ## If Vector2.ZERO, uses the user's resolution 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 _save_level_data_component: SaveLevelDataComponent ## Contains the save paths and filenames
var _enable_save_icon_generation: bool = true
func _ready() -> void: func _ready() -> void:
quick_load.connect(quick_load_game) quick_load.connect(quick_load_game)
@ -30,6 +33,7 @@ func _ready() -> void:
create_save_file.connect(_on_save_game_as_resource) create_save_file.connect(_on_save_game_as_resource)
load_save_file.connect(load_game_save) load_save_file.connect(load_game_save)
delete_save_file.connect(_on_delete_save_file) delete_save_file.connect(_on_delete_save_file)
toggle_save_icon_generation.connect(_on_toggle_save_icon_generation)
func _unhandled_input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("quick_save"): 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] ## 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` ## The icon utilizes the same filename as the save file, replacing `.tres` with `.png`
func _take_save_screenshot(save_game_file_path: String) -> void: 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") 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() var _icon: Image = get_viewport().get_texture().get_image()
# TODO: Show the UI after taking the screenshot
if _save_icon_size != Vector2i.ZERO: if _save_icon_size != Vector2i.ZERO:
_icon.resize(_save_icon_size.x, _save_icon_size.y) _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 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)
DirAccess.remove_absolute(save_file_path.replace(".tres", ".png")) # Delete icon 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

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

@ -6,6 +6,7 @@ extends Panel
@export var block_highlight_input: CheckButton @export var block_highlight_input: CheckButton
@export var held_block_ui_input: CheckButton @export var held_block_ui_input: CheckButton
@export var quick_slots_ui_input: CheckButton @export var quick_slots_ui_input: CheckButton
@export var screenshot_icon_input: CheckButton
@export var waila_input: CheckButton @export var waila_input: CheckButton
@export_group("Graphics Settings Nodes") @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) 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) 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) 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) waila_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_waila)
#endregion #endregion
@ -52,6 +54,10 @@ func _on_quickslots_ui_toggled(toggled_on: bool) -> void:
func _on_enable_waila_toggled(toggled_on: bool) -> void: func _on_enable_waila_toggled(toggled_on: bool) -> void:
GameSettingsManager.game_options_waila_changed.emit(toggled_on) 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 #endregion
#region Graphics Settings #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_right = 2
corner_radius_bottom_left = 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 process_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -25,6 +25,7 @@ script = ExtResource("1_qwcqe")
block_highlight_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton") block_highlight_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton")
held_block_ui_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI/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") 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") waila_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/Waila/CheckButton")
resolution_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Resolution/OptionButton") resolution_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Resolution/OptionButton")
fullscreen_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Fullscreen/CheckBox") fullscreen_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Fullscreen/CheckBox")
@ -126,6 +127,21 @@ text = "Enable Player Held Block"
layout_mode = 2 layout_mode = 2
button_pressed = true 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"] [node name="Graphics" type="VBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer"]
visible = false visible = false
layout_mode = 2 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/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/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/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="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/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"] [connection signal="pressed" from="Background/BottomRow/CloseButton" to="." method="_on_close_button_pressed"]

Loading…
Cancel
Save