Browse Source

Graphics settings can now be applied

pull/11/head
Ryan Reed 1 month ago
parent
commit
9814dd88a0
4 changed files with 76 additions and 11 deletions
  1. +34
    -1
      autoloads/globals.gd
  2. +0
    -2
      scenes/player/ray_cast_look.gd
  3. +24
    -0
      scenes/ui/menus/settings_menu.gd
  4. +18
    -8
      scenes/ui/menus/settings_menu.tscn

+ 34
- 1
autoloads/globals.gd View File

@ -1,6 +1,9 @@
extends Node
signal graphics_settings_changed(resolution: Vector2, fullscreen: bool, vsync: bool)
const BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/block.tscn")
const DROPPED_BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/dropped_block.tscn")
@ -8,4 +11,34 @@ const DROPPED_BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/dropped_b
var enable_waila: bool = true ## Enable `What Am I Looking At` UI
var enable_block_highlight: bool = true
var is_options_menu_active: bool = false
var graphics_settings: Dictionary[String, Variant] = {
"resolution": Vector2i.ZERO,
"fullscreen": false,
"vsync": false,
}
func _init() -> void:
graphics_settings_changed.connect(_on_graphics_settings_changed)
func apply_graphics_settings() -> void:
if graphics_settings.fullscreen:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
else:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
get_window().size = graphics_settings.resolution
if graphics_settings.vsync:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED)
else:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
func _on_graphics_settings_changed(resolution: Vector2i, fullscreen: bool, vsync: bool) -> void:
graphics_settings.resolution = resolution
graphics_settings.fullscreen = fullscreen
graphics_settings.vsync = vsync
apply_graphics_settings()

+ 0
- 2
scenes/player/ray_cast_look.gd View File

@ -2,8 +2,6 @@ extends RayCast3D
func _process(_delta: float) -> void:
if Globals.is_options_menu_active: return
if is_colliding():
var collider: Object = get_collider()


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

@ -2,11 +2,35 @@ class_name SettingsMenu
extends Panel
@export_group("Graphics Settings Nodes")
@export var resolution_input: OptionButton
@export var fullscreen_input: CheckBox
@export var vsync_input: CheckBox
#region Game Settings
func _on_block_highlighting_toggled(toggled_on: bool) -> void:
Globals.enable_block_highlight = toggled_on
func _on_enable_waila_toggled(toggled_on: bool) -> void:
Globals.enable_waila = toggled_on
#endregion
#region Graphics Settings
func _on_graphics_apply_button_pressed() -> void:
var values: Array = resolution_input.text.split_floats("x")
Globals.graphics_settings_changed.emit(
Vector2(int(values[0]), int(values[1])),
fullscreen_input.button_pressed,
vsync_input.button_pressed
)
#endregion
#region Audio Settings
#endregion
#region Input Settings
#endregion
func _on_close_button_pressed() -> void:


+ 18
- 8
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 name="SettingsMenu" type="Panel" node_paths=PackedStringArray("resolution_input", "fullscreen_input", "vsync_input")]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
@ -22,6 +22,9 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_qwcqe")
resolution_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Resolution/OptionButton")
fullscreen_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Fullscreen/CheckBox")
vsync_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/VSync/CheckBox")
metadata/_edit_vertical_guides_ = [349.0]
[node name="Background" type="ColorRect" parent="."]
@ -62,11 +65,10 @@ horizontal_alignment = 1
layout_mode = 2
theme_override_constants/side_margin = 0
theme_override_styles/panel = SubResource("StyleBoxFlat_80b2v")
current_tab = 1
current_tab = 0
clip_tabs = false
[node name="Game" type="VBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 0
@ -95,6 +97,7 @@ layout_mode = 2
button_pressed = true
[node name="Graphics" type="VBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 1
@ -109,13 +112,19 @@ text = "Resolution"
[node name="OptionButton" type="OptionButton" parent="Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Resolution"]
layout_mode = 2
selected = 0
item_count = 3
item_count = 6
popup/item_0/text = "1280x720"
popup/item_0/id = 0
popup/item_1/text = "1920x1080"
popup/item_1/id = 1
popup/item_2/text = "2560x1440"
popup/item_2/id = 2
popup/item_1/text = "1280x800"
popup/item_1/id = 4
popup/item_2/text = "1920x1080"
popup/item_2/id = 1
popup/item_3/text = "2560x1440"
popup/item_3/id = 2
popup/item_4/text = "3440x1440"
popup/item_4/id = 3
popup/item_5/text = "3840 x 2160"
popup/item_5/id = 5
[node name="Fullscreen" type="HBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer/Graphics"]
layout_mode = 2
@ -182,4 +191,5 @@ text = "Close Settings"
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton" to="." method="_on_block_highlighting_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/Waila/CheckButton" to="." method="_on_enable_waila_toggled"]
[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