Browse Source

Replacing Fullscreen with Window Mode

pull/23/head
Ryan Reed 4 weeks ago
parent
commit
23b303822f
4 changed files with 38 additions and 27 deletions
  1. +7
    -10
      autoloads/game_settings_manager.gd
  2. +3
    -2
      resources/game_settings/graphics_settings_resource.gd
  3. +10
    -7
      scenes/ui/pause_menu/settings_menu.gd
  4. +18
    -8
      scenes/ui/pause_menu/settings_menu.tscn

+ 7
- 10
autoloads/game_settings_manager.gd View File

@ -12,10 +12,10 @@ signal game_options_waila_changed(waila_enabled: bool)
#region Graphics Settings Signals
signal apply_graphics_settings
signal graphics_fov_changed(fov: int)
signal graphics_resolution_changed(resolution: Vector2i, id: int)
signal graphics_fullscreen_changed(fullscreen_enabled: bool)
signal graphics_vsync_changed(vsync_enabled: bool)
signal graphics_fov_changed(fov: int)
signal graphics_window_mode_changed(mode_id: int)
#endregion
signal load_game_settings
@ -43,8 +43,8 @@ func _init() -> void:
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)
graphics_window_mode_changed.connect(_on_graphics_window_mode_changed)
graphics_vsync_changed.connect(_on_graphics_vsync_changed)
apply_graphics_settings.connect(_on_apply_graphics_settings)
@ -80,10 +80,7 @@ func _on_game_options_waila_changed(waila_enabled: bool) -> void:
#region Graphics Settings
func _on_apply_graphics_settings() -> void:
if settings.graphics.fullscreen:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
else:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
DisplayServer.window_set_mode(settings.graphics.window_mode)
get_window().size = settings.graphics.resolution
@ -97,15 +94,15 @@ func _on_apply_graphics_settings() -> void:
func _on_graphics_fov_changed(fov: int) -> void:
settings.graphics.fov = fov
func _on_graphics_fullscreen_changed(fullscreen_enabled: bool) -> void:
settings.graphics.fullscreen = fullscreen_enabled
func _on_graphics_resolution_changed(resolution: Vector2i, id: int) -> void:
settings.graphics.resolution = resolution
settings.graphics.resolution_id = id
func _on_graphics_vsync_changed(vsync_enabled: bool) -> void:
settings.graphics.vsync = vsync_enabled
func _on_graphics_window_mode_changed(id: int) -> void:
settings.graphics.window_mode = id as DisplayServer.WindowMode
#endregion


+ 3
- 2
resources/game_settings/graphics_settings_resource.gd View File

@ -3,8 +3,9 @@
class_name GraphicsSettingsResource
extends Resource
@export var fov: int = 75
@export var resolution: Vector2i = Vector2i(1280, 720) ## Width, Height
@export var resolution_id: int = 0 ## The ID of the item in the OptionsButton list element
@export var fullscreen: bool = false
@export var vsync: bool = false
@export var fov: int = 75
@export var window_mode: DisplayServer.WindowMode = DisplayServer.WINDOW_MODE_WINDOWED

+ 10
- 7
scenes/ui/pause_menu/settings_menu.gd View File

@ -11,11 +11,11 @@ extends BaseMenu
@export var waila_input: CheckButton
@export_group("Graphics Settings Nodes")
@export var resolution_input: OptionButton
@export var fullscreen_input: CheckBox
@export var vsync_input: CheckBox
@export var fov_slider: HSlider
@export var fov_value_label: Label
@export var resolution_input: OptionButton
@export var vsync_input: CheckBox
@export var window_mode_input: OptionButton
func init() -> void:
@ -38,9 +38,11 @@ func apply_default_values() -> void:
#region Graphics Settings
# Changing the FOV value should trigger the value_changed signal which should update the camera and label automatically
fov_slider.value = GameSettingsManager.settings.graphics.fov
fullscreen_input.set_pressed_no_signal(GameSettingsManager.settings.graphics.fullscreen)
vsync_input.set_pressed_no_signal(GameSettingsManager.settings.graphics.vsync)
var current_mode_index: int = window_mode_input.get_item_index(GameSettingsManager.settings.graphics.window_mode)
window_mode_input.select(current_mode_index)
var current_resolution_index: int = resolution_input.get_item_index(GameSettingsManager.settings.graphics.resolution_id)
resolution_input.select(current_resolution_index)
#endregion
@ -79,10 +81,11 @@ func _on_fov_slider_changed(value: float) -> void:
func _on_graphics_apply_button_pressed() -> void:
var values: Array = resolution_input.text.split_floats("x")
var id: int = resolution_input.get_selected_id()
var resolution_id: int = resolution_input.get_selected_id()
var window_mode_id: int = window_mode_input.get_selected_id()
GameSettingsManager.graphics_resolution_changed.emit(Vector2i(values[0], values[1]), id)
GameSettingsManager.graphics_fullscreen_changed.emit(fullscreen_input.button_pressed)
GameSettingsManager.graphics_resolution_changed.emit(Vector2i(values[0], values[1]), resolution_id)
GameSettingsManager.graphics_window_mode_changed.emit(window_mode_id)
GameSettingsManager.graphics_vsync_changed.emit(vsync_input.button_pressed)
GameSettingsManager.apply_graphics_settings.emit()
#endregion


+ 18
- 8
scenes/ui/pause_menu/settings_menu.tscn View File

@ -14,7 +14,8 @@ corner_radius_top_right = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
[node name="SettingsMenu" 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") instance=ExtResource("1_oec81")]
[node name="SettingsMenu" node_paths=PackedStringArray("autosaves_input", "block_highlight_input", "held_block_ui_input", "quick_slots_ui_input", "screenshot_icon_input", "waila_input", "fov_slider", "fov_value_label", "resolution_input", "vsync_input", "window_mode_input") instance=ExtResource("1_oec81")]
visible = false
script = ExtResource("1_govsn")
autosaves_input = NodePath("MainContent/MenuContainer/TabContainer/Game/Autosaves/CheckButton")
block_highlight_input = NodePath("MainContent/MenuContainer/TabContainer/Game/BlockHighlight/CheckButton")
@ -22,11 +23,11 @@ held_block_ui_input = NodePath("MainContent/MenuContainer/TabContainer/Game/Held
quick_slots_ui_input = NodePath("MainContent/MenuContainer/TabContainer/Game/QuickslotsUI/CheckButton")
screenshot_icon_input = NodePath("MainContent/MenuContainer/TabContainer/Game/ScreenshotIcon/CheckButton")
waila_input = NodePath("MainContent/MenuContainer/TabContainer/Game/Waila/CheckButton")
resolution_input = NodePath("MainContent/MenuContainer/TabContainer/Graphics/Resolution/OptionButton")
fullscreen_input = NodePath("MainContent/MenuContainer/TabContainer/Graphics/Fullscreen/CheckBox")
vsync_input = NodePath("MainContent/MenuContainer/TabContainer/Graphics/VSync/CheckBox")
fov_slider = NodePath("MainContent/MenuContainer/TabContainer/Graphics/FOV/HSlider")
fov_value_label = NodePath("MainContent/MenuContainer/TabContainer/Graphics/FOV/Value")
resolution_input = NodePath("MainContent/MenuContainer/TabContainer/Graphics/Resolution/OptionButton")
vsync_input = NodePath("MainContent/MenuContainer/TabContainer/Graphics/VSync/CheckBox")
window_mode_input = NodePath("MainContent/MenuContainer/TabContainer/Graphics/WindowMode/OptionButton")
[node name="Title" parent="MainContent/MenuContainer" index="0"]
text = "Settings"
@ -150,16 +151,25 @@ popup/item_4/id = 3
popup/item_5/text = "3840 x 2160"
popup/item_5/id = 5
[node name="Fullscreen" type="HBoxContainer" parent="MainContent/MenuContainer/TabContainer/Graphics" index="1"]
[node name="WindowMode" type="HBoxContainer" parent="MainContent/MenuContainer/TabContainer/Graphics" index="1"]
layout_mode = 2
[node name="Label" type="Label" parent="MainContent/MenuContainer/TabContainer/Graphics/Fullscreen" index="0"]
[node name="Label" type="Label" parent="MainContent/MenuContainer/TabContainer/Graphics/WindowMode" index="0"]
layout_mode = 2
size_flags_horizontal = 3
text = "Fullscreen"
text = "Display Mode"
[node name="CheckBox" type="CheckBox" parent="MainContent/MenuContainer/TabContainer/Graphics/Fullscreen" index="1"]
[node name="OptionButton" type="OptionButton" parent="MainContent/MenuContainer/TabContainer/Graphics/WindowMode" index="1"]
layout_mode = 2
item_count = 4
popup/item_0/text = "Window"
popup/item_0/id = 0
popup/item_1/text = "Maximized"
popup/item_1/id = 2
popup/item_2/text = "Fullscreen"
popup/item_2/id = 3
popup/item_3/text = "Exclusive Fullscreen"
popup/item_3/id = 4
[node name="VSync" type="HBoxContainer" parent="MainContent/MenuContainer/TabContainer/Graphics" index="2"]
layout_mode = 2


Loading…
Cancel
Save