diff --git a/autoloads/game_settings_manager.gd b/autoloads/game_settings_manager.gd index e3b72e8..b189866 100644 --- a/autoloads/game_settings_manager.gd +++ b/autoloads/game_settings_manager.gd @@ -1,6 +1,11 @@ extends Node +#region Game Options Signals +signal game_options_block_highlight_changed(block_highlight_enabled: bool) +signal game_options_waila_changed(waila_enabled: bool) +#endregion + #region Graphics Settings Signals signal apply_graphics_settings signal graphics_resolution_changed(resolution: Vector2i) @@ -9,6 +14,7 @@ signal graphics_vsync_changed(vsync_enabled: bool) signal graphics_fov_changed(fov: int) #endregion + ## See documentation to where this path is: https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html#accessing-persistent-user-data-user[br][br] ## Default Paths:[br] ## * Windows: %APPDATA%\Godot\app_userdata\[project_name][br] @@ -22,6 +28,9 @@ var settings: GameSettingsResource = GameSettingsResource.new() func _init() -> void: + game_options_block_highlight_changed.connect(_on_game_options_block_highlight_changed) + game_options_waila_changed.connect(_on_game_options_waila_changed) + graphics_fov_changed.connect(_on_graphics_fov_changed) graphics_fullscreen_changed.connect(_on_graphics_fullscreen_changed) graphics_resolution_changed.connect(_on_graphics_resolution_changed) @@ -29,6 +38,16 @@ func _init() -> void: apply_graphics_settings.connect(_on_apply_graphics_settings) +#region Game Option Settings +func _on_game_options_block_highlight_changed(highlight_enabled: bool) -> void: + settings.game_options.enable_block_highlight = highlight_enabled + save_settings() + +func _on_game_options_waila_changed(waila_enabled: bool) -> void: + settings.game_options.enable_waila = waila_enabled + save_settings() +#endregion + #region Graphics Settings func _on_apply_graphics_settings() -> void: if settings.graphics.fullscreen: diff --git a/resources/game_settings/game_options_settings_resource.gd b/resources/game_settings/game_options_settings_resource.gd new file mode 100644 index 0000000..5b06441 --- /dev/null +++ b/resources/game_settings/game_options_settings_resource.gd @@ -0,0 +1,6 @@ +class_name GameOptionsSettingsResource +extends Resource + + +@export var enable_waila: bool = true ## Enable `What Am I Looking At` UI +@export var enable_block_highlight: bool = true diff --git a/resources/game_settings/game_options_settings_resource.gd.uid b/resources/game_settings/game_options_settings_resource.gd.uid new file mode 100644 index 0000000..d8bbb33 --- /dev/null +++ b/resources/game_settings/game_options_settings_resource.gd.uid @@ -0,0 +1 @@ +uid://7yv740somgqf diff --git a/resources/game_settings/game_options_settings_resource.tres b/resources/game_settings/game_options_settings_resource.tres new file mode 100644 index 0000000..24c323d --- /dev/null +++ b/resources/game_settings/game_options_settings_resource.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="GameOptionsSettingsResource" load_steps=2 format=3 uid="uid://cnpou521v2v8p"] + +[ext_resource type="Script" uid="uid://7yv740somgqf" path="res://resources/game_settings/game_options_settings_resource.gd" id="1_wnf6r"] + +[resource] +script = ExtResource("1_wnf6r") +enable_waila = true +enable_block_highlight = true +metadata/_custom_type_script = "uid://7yv740somgqf" diff --git a/resources/game_settings/game_settings_resource.gd b/resources/game_settings/game_settings_resource.gd index 5befa64..9ce9b62 100644 --- a/resources/game_settings/game_settings_resource.gd +++ b/resources/game_settings/game_settings_resource.gd @@ -5,4 +5,6 @@ extends Resource @export var game_version: String = ProjectSettings.get_setting("application/config/version") + +@export var game_options: GameOptionsSettingsResource = GameOptionsSettingsResource.new() @export var graphics: GraphicsSettingsResource = GraphicsSettingsResource.new() diff --git a/resources/game_settings/graphics_settings.gd b/resources/game_settings/graphics_settings_resource.gd similarity index 100% rename from resources/game_settings/graphics_settings.gd rename to resources/game_settings/graphics_settings_resource.gd diff --git a/resources/game_settings/graphics_settings.gd.uid b/resources/game_settings/graphics_settings_resource.gd.uid similarity index 100% rename from resources/game_settings/graphics_settings.gd.uid rename to resources/game_settings/graphics_settings_resource.gd.uid diff --git a/resources/game_settings/graphics_settings.tres b/resources/game_settings/graphics_settings_resource.tres similarity index 83% rename from resources/game_settings/graphics_settings.tres rename to resources/game_settings/graphics_settings_resource.tres index 5898ec0..18de223 100644 --- a/resources/game_settings/graphics_settings.tres +++ b/resources/game_settings/graphics_settings_resource.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="GraphicsSettingsResource" load_steps=2 format=3 uid="uid://b07gyfa776057"] -[ext_resource type="Script" uid="uid://mfghfem8im6o" path="res://resources/game_settings/graphics_settings.gd" id="1_3m2to"] +[ext_resource type="Script" uid="uid://mfghfem8im6o" path="res://resources/game_settings/graphics_settings_resource.gd" id="1_3m2to"] [resource] script = ExtResource("1_3m2to") diff --git a/scenes/blocks/block.gd b/scenes/blocks/block.gd index ef98bc7..2af5087 100644 --- a/scenes/blocks/block.gd +++ b/scenes/blocks/block.gd @@ -22,7 +22,7 @@ func get_id() -> String: return id func hook() -> void: - if not Globals.enable_block_highlight: return + if not GameSettingsManager.settings.game_options.enable_block_highlight: return highlight_mesh.visible = true diff --git a/scenes/ui/menus/settings_menu.gd b/scenes/ui/menus/settings_menu.gd index 97b3e6e..5cc8c46 100644 --- a/scenes/ui/menus/settings_menu.gd +++ b/scenes/ui/menus/settings_menu.gd @@ -12,10 +12,10 @@ extends Panel #region Game Settings func _on_block_highlighting_toggled(toggled_on: bool) -> void: - Globals.enable_block_highlight = toggled_on + GameSettingsManager.game_options_block_highlight_changed.emit(toggled_on) func _on_enable_waila_toggled(toggled_on: bool) -> void: - Globals.enable_waila = toggled_on + GameSettingsManager.game_options_waila_changed.emit(toggled_on) #endregion #region Graphics Settings diff --git a/scenes/ui/waila.gd b/scenes/ui/waila.gd index d70c0aa..cb9b19b 100644 --- a/scenes/ui/waila.gd +++ b/scenes/ui/waila.gd @@ -29,7 +29,7 @@ func get_target() -> Block: return _target func hook_target(id: String) -> void: - if not Globals.enable_waila: return + if not GameSettingsManager.settings.game_options.enable_waila: return if not id: return var item: ItemResource = DBItems.data[id]