From 4059c47c31c030b49f1f36575a5d7f3457b85b29 Mon Sep 17 00:00:00 2001 From: Jan Heemstra Date: Sat, 11 Sep 2021 14:38:45 +0200 Subject: [PATCH 1/2] Fixed crash when opening any menu --- Game/Assets/HUD/Theme.tres | 28 ++++++++++++++-------------- Game/Assets/UI/GUI.tscn | 18 +++++++++--------- Game/Assets/UI/GraphicsMenu.gd | 2 +- Game/Assets/UI/MenuCheckButton.gd | 2 +- Game/Assets/UI/MenuData.gd | 2 +- Game/Assets/UI/OptionsMenu.tscn | 16 ++++++++-------- Game/Main.tscn | 2 +- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Game/Assets/HUD/Theme.tres b/Game/Assets/HUD/Theme.tres index fdc400a..74abade 100644 --- a/Game/Assets/HUD/Theme.tres +++ b/Game/Assets/HUD/Theme.tres @@ -1,38 +1,38 @@ [gd_resource type="Theme" load_steps=10 format=3 uid="uid://ddtu7o1dbp0s8"] -[ext_resource type="FontData" uid="uid://bvp75f670ewmh" path="res://Assets/Fonts/Liberation Sans/LiberationSans-Italic.ttf" id="1"] -[ext_resource type="FontData" uid="uid://bu513u0hckm6v" path="res://Assets/Fonts/Liberation Sans/LiberationSans-Bold.ttf" id="2"] -[ext_resource type="FontData" uid="uid://c1efeg0l6epya" path="res://Assets/Fonts/Liberation Sans/LiberationMono-Regular.ttf" id="3"] -[ext_resource type="FontData" uid="uid://dm2ua4ixk71jw" path="res://Assets/Fonts/Liberation Sans/LiberationSans-Regular.ttf" id="4"] +[ext_resource type="FontData" uid="uid://sv606h1wylsm" path="res://Assets/Fonts/Liberation Sans/LiberationSans-Italic.ttf" id="1"] +[ext_resource type="FontData" uid="uid://dedcmqi18s2mk" path="res://Assets/Fonts/Liberation Sans/LiberationSans-Bold.ttf" id="2"] +[ext_resource type="FontData" uid="uid://vokxbnewve4p" path="res://Assets/Fonts/Liberation Sans/LiberationMono-Regular.ttf" id="3"] +[ext_resource type="FontData" uid="uid://y4ub4mqw3ok4" path="res://Assets/Fonts/Liberation Sans/LiberationSans-Regular.ttf" id="4"] -[sub_resource type="Font" id="1"] +[sub_resource type="Font" id="Font_prcom"] variation_coordinates = { } data/0 = ExtResource( "2" ) -[sub_resource type="Font" id="2"] +[sub_resource type="Font" id="Font_o6jis"] variation_coordinates = { } data/0 = ExtResource( "1" ) -[sub_resource type="Font" id="3"] +[sub_resource type="Font" id="Font_xvs2n"] variation_coordinates = { } data/0 = ExtResource( "1" ) -[sub_resource type="Font" id="4"] +[sub_resource type="Font" id="Font_i54w7"] variation_coordinates = { } data/0 = ExtResource( "3" ) -[sub_resource type="Font" id="5"] +[sub_resource type="Font" id="Font_px26m"] variation_coordinates = { } data/0 = ExtResource( "4" ) [resource] -RichTextLabel/fonts/bold_font = SubResource( "1" ) -RichTextLabel/fonts/bold_italics_font = SubResource( "2" ) -RichTextLabel/fonts/italics_font = SubResource( "3" ) -RichTextLabel/fonts/mono_font = SubResource( "4" ) -RichTextLabel/fonts/normal_font = SubResource( "5" ) +RichTextLabel/fonts/bold_font = SubResource( "Font_prcom" ) +RichTextLabel/fonts/bold_italics_font = SubResource( "Font_o6jis" ) +RichTextLabel/fonts/italics_font = SubResource( "Font_xvs2n" ) +RichTextLabel/fonts/mono_font = SubResource( "Font_i54w7" ) +RichTextLabel/fonts/normal_font = SubResource( "Font_px26m" ) diff --git a/Game/Assets/UI/GUI.tscn b/Game/Assets/UI/GUI.tscn index 5275c02..2f3266e 100644 --- a/Game/Assets/UI/GUI.tscn +++ b/Game/Assets/UI/GUI.tscn @@ -1,24 +1,24 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=4 format=3 uid="uid://b856vwmg8a6o4"] -[ext_resource path="res://Assets/UI/MenuButton.tscn" type="PackedScene" id=1] -[ext_resource path="res://Assets/UI/Menu.tscn" type="PackedScene" id=2] -[ext_resource path="res://Assets/UI/GUI.gd" type="Script" id=3] +[ext_resource type="PackedScene" path="res://Assets/UI/MenuButton.tscn" id="1"] +[ext_resource type="PackedScene" path="res://Assets/UI/Menu.tscn" id="2"] +[ext_resource type="Script" path="res://Assets/UI/GUI.gd" id="3"] [node name="GUI" type="CenterContainer"] anchor_right = 1.0 anchor_bottom = 1.0 -script = ExtResource( 3 ) +script = ExtResource( "3" ) __meta__ = { "_edit_use_anchors_": false } -[node name="Menu" parent="." instance=ExtResource( 2 )] +[node name="Menu" parent="." instance=ExtResource( "2" )] offset_left = 477.0 offset_top = 252.0 offset_right = 547.0 offset_bottom = 347.0 -[node name="Options" parent="Menu" instance=ExtResource( 1 )] +[node name="Options" parent="Menu" instance=ExtResource( "1" )] anchor_right = 0.0 anchor_bottom = 0.0 offset_top = 33.0 @@ -27,7 +27,7 @@ offset_bottom = 62.0 text = "options" label = "options" -[node name="Quit" parent="Menu" instance=ExtResource( 1 )] +[node name="Quit" parent="Menu" instance=ExtResource( "1" )] anchor_right = 0.0 anchor_bottom = 0.0 offset_top = 66.0 @@ -36,5 +36,5 @@ offset_bottom = 95.0 text = "quit" label = "quit" -[connection signal="pressed" from="Menu/Options" to="Menu" method="open_menu" binds= ["res://OptionsMenu.tscn"]] +[connection signal="pressed" from="Menu/Options" to="Menu" method="open_menu" binds= ["res://Assets/UI/OptionsMenu.tscn"]] [connection signal="pressed" from="Menu/Quit" to="." method="quit_game"] diff --git a/Game/Assets/UI/GraphicsMenu.gd b/Game/Assets/UI/GraphicsMenu.gd index f1c3f1b..599c9c4 100644 --- a/Game/Assets/UI/GraphicsMenu.gd +++ b/Game/Assets/UI/GraphicsMenu.gd @@ -1,4 +1,4 @@ -extends "res://Menu.gd" +extends "res://Assets/UI/Menu.gd" # Called when the node enters the scene tree for the first time. func _ready(): diff --git a/Game/Assets/UI/MenuCheckButton.gd b/Game/Assets/UI/MenuCheckButton.gd index e3b8f80..4998bc1 100644 --- a/Game/Assets/UI/MenuCheckButton.gd +++ b/Game/Assets/UI/MenuCheckButton.gd @@ -1,4 +1,4 @@ -extends "res://MenuData.gd" +extends "res://Assets/UI/MenuData.gd" func on_label_changed(): self.text = label diff --git a/Game/Assets/UI/MenuData.gd b/Game/Assets/UI/MenuData.gd index 55ea763..9334e8d 100644 --- a/Game/Assets/UI/MenuData.gd +++ b/Game/Assets/UI/MenuData.gd @@ -1,4 +1,4 @@ -extends "res://MenuItem.gd" +extends "res://Assets/UI/MenuItem.gd" signal data_changed(data) diff --git a/Game/Assets/UI/OptionsMenu.tscn b/Game/Assets/UI/OptionsMenu.tscn index d60130e..ff0798e 100644 --- a/Game/Assets/UI/OptionsMenu.tscn +++ b/Game/Assets/UI/OptionsMenu.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=3 format=3 uid="uid://d37bped35n16j"] -[ext_resource path="res://Assets/UI/Menu.tscn" type="PackedScene" id=1] -[ext_resource path="res://Assets/UI/MenuButton.tscn" type="PackedScene" id=2] +[ext_resource type="PackedScene" path="res://Assets/UI/Menu.tscn" id="1"] +[ext_resource type="PackedScene" path="res://Assets/UI/MenuButton.tscn" id="2"] -[node name="OptionsMenu" instance=ExtResource( 1 )] +[node name="OptionsMenu" instance=ExtResource( "1" )] -[node name="Graphics" parent="." index="0" instance=ExtResource( 2 )] +[node name="Graphics" parent="." index="0" instance=ExtResource( "2" )] anchor_right = 0.0 anchor_bottom = 0.0 offset_right = 77.0 @@ -13,7 +13,7 @@ offset_bottom = 29.0 text = "graphics" label = "graphics" -[node name="Controls" parent="." index="1" instance=ExtResource( 2 )] +[node name="Controls" parent="." index="1" instance=ExtResource( "2" )] anchor_right = 0.0 anchor_bottom = 0.0 offset_top = 33.0 @@ -27,5 +27,5 @@ offset_top = 66.0 offset_right = 77.0 offset_bottom = 95.0 -[connection signal="pressed" from="Graphics" to="." method="open_menu" binds= [ "res://GraphicsMenu.tscn" ]] -[connection signal="pressed" from="Controls" to="." method="open_menu" binds= [ "res://ControlsMenu.tscn" ]] +[connection signal="pressed" from="Graphics" to="." method="open_menu" binds= ["res://Assets/UI/GraphicsMenu.tscn"]] +[connection signal="pressed" from="Controls" to="." method="open_menu" binds= ["res://Assets/UI/ControlsMenu.tscn"]] diff --git a/Game/Main.tscn b/Game/Main.tscn index de022f7..fa6fdbc 100644 --- a/Game/Main.tscn +++ b/Game/Main.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3 uid="uid://o68cawatyat2"] [ext_resource type="PackedScene" uid="uid://b1078bn8gy2qf" path="res://Map.tscn" id="1"] -[ext_resource type="PackedScene" path="res://Assets/UI/GUI.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://b856vwmg8a6o4" path="res://Assets/UI/GUI.tscn" id="2"] [ext_resource type="Script" path="res://Main.gd" id="3"] [ext_resource type="PackedScene" uid="uid://bff5uslrxesjx" path="res://Assets/HUD/HUD.tscn" id="4"] From 01ddf2b25b2166974ff13c012e866a927844f8a4 Mon Sep 17 00:00:00 2001 From: Jan Heemstra Date: Sat, 11 Sep 2021 15:22:08 +0200 Subject: [PATCH 2/2] User settings are now saved --- Game/Assets/UI/ControlsMenu.gd | 5 +++++ Game/Assets/UI/ControlsMenu.tscn | 19 ++++++++++++++----- Game/Assets/UI/GUI.gd | 24 +++++++++++++++++++++++- Game/Assets/UI/GUI.tscn | 2 +- Game/Assets/UI/GraphicsMenu.gd | 12 +++--------- Game/Assets/UI/GraphicsMenu.tscn | 16 ++++++++-------- Game/Assets/UI/Menu.gd | 3 +++ Game/Assets/UI/MenuButton.tscn | 6 +++--- Game/Assets/UI/MenuCheckButton.tscn | 6 +++--- Game/Assets/UI/OptionsMenu.tscn | 2 +- Game/Map.tscn | 2 +- 11 files changed, 65 insertions(+), 32 deletions(-) create mode 100644 Game/Assets/UI/ControlsMenu.gd diff --git a/Game/Assets/UI/ControlsMenu.gd b/Game/Assets/UI/ControlsMenu.gd new file mode 100644 index 0000000..cd74b18 --- /dev/null +++ b/Game/Assets/UI/ControlsMenu.gd @@ -0,0 +1,5 @@ +extends "res://Assets/UI/Menu.gd" + +func on_mouse_sensitivity_set(sensitivity): + GUI.set_mouse_sensitivity(sensitivity) + GUI.set_setting("Sensitivity", sensitivity) diff --git a/Game/Assets/UI/ControlsMenu.tscn b/Game/Assets/UI/ControlsMenu.tscn index c85f7f0..a39db47 100644 --- a/Game/Assets/UI/ControlsMenu.tscn +++ b/Game/Assets/UI/ControlsMenu.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=3 uid="uid://c6hqr4kqxt5rw"] -[ext_resource path="res://Assets/UI/Menu.tscn" type="PackedScene" id=1] +[ext_resource type="PackedScene" path="res://Assets/UI/Menu.tscn" id="1"] +[ext_resource type="Script" path="res://Assets/UI/ControlsMenu.gd" id="2_wjgrv"] -[node name="ControlsMenu" instance=ExtResource( 1 )] +[node name="ControlsMenu" instance=ExtResource( "1" )] +script = ExtResource( "2_wjgrv" ) [node name="MouseSensitivity" type="HBoxContainer" parent="." index="0"] offset_right = 337.0 @@ -13,17 +15,24 @@ script = null offset_right = 133.0 offset_bottom = 26.0 text = "Mouse sensitivity" -structured_text_bidi_override_options = [ ] +structured_text_bidi_override_options = [] script = null [node name="Slider" type="HSlider" parent="MouseSensitivity" index="1"] offset_left = 137.0 offset_right = 337.0 offset_bottom = 16.0 -rect_min_size = Vector2( 200, 0 ) +rect_min_size = Vector2(200, 0) +min_value = 0.1 +max_value = 2.0 +step = 0.0 +value = 0.1 +exp_edit = true script = null [node name="Back" parent="." index="1"] offset_top = 30.0 offset_right = 337.0 offset_bottom = 59.0 + +[connection signal="value_changed" from="MouseSensitivity/Slider" to="." method="on_mouse_sensitivity_set"] diff --git a/Game/Assets/UI/GUI.gd b/Game/Assets/UI/GUI.gd index dcc2938..58581c5 100644 --- a/Game/Assets/UI/GUI.gd +++ b/Game/Assets/UI/GUI.gd @@ -6,12 +6,16 @@ var settings = {} func _ready(): if has_settings(): load_settings() - print(settings) + apply_settings() func has_settings(): var filecheck = File.new() return filecheck.file_exists(settings_filename) +func set_setting(key, value): + settings[key] = value + save_settings() + func save_settings(): var file = File.new() file.open(settings_filename, File.WRITE) @@ -24,5 +28,23 @@ func load_settings(): settings = file.get_var() file.close() +func apply_settings(): + for key in settings.keys(): + match key: + "Fullscreen": + toggle_fullscreen(settings[key]) + "Sensitivity": + set_mouse_sensitivity(settings[key]) + +# These functions are for applying settings changes func quit_game(): get_tree().quit() + +func toggle_fullscreen(is_fullscreen): + if is_fullscreen: + get_tree().get_root().mode = Window.MODE_FULLSCREEN + else: + get_tree().get_root().mode = Window.MODE_WINDOWED + +func set_mouse_sensitivity(sensitivity): + pass diff --git a/Game/Assets/UI/GUI.tscn b/Game/Assets/UI/GUI.tscn index 2f3266e..4e53889 100644 --- a/Game/Assets/UI/GUI.tscn +++ b/Game/Assets/UI/GUI.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://b856vwmg8a6o4"] -[ext_resource type="PackedScene" path="res://Assets/UI/MenuButton.tscn" id="1"] +[ext_resource type="PackedScene" uid="uid://d135tevauvmoq" path="res://Assets/UI/MenuButton.tscn" id="1"] [ext_resource type="PackedScene" path="res://Assets/UI/Menu.tscn" id="2"] [ext_resource type="Script" path="res://Assets/UI/GUI.gd" id="3"] diff --git a/Game/Assets/UI/GraphicsMenu.gd b/Game/Assets/UI/GraphicsMenu.gd index 599c9c4..b17c88d 100644 --- a/Game/Assets/UI/GraphicsMenu.gd +++ b/Game/Assets/UI/GraphicsMenu.gd @@ -1,11 +1,5 @@ extends "res://Assets/UI/Menu.gd" -# Called when the node enters the scene tree for the first time. -func _ready(): - pass - -func toggle_fullscreen(button_pressed): - if button_pressed: - get_tree().get_root().mode = Window.MODE_FULLSCREEN - else: - get_tree().get_root().mode = Window.MODE_WINDOWED +func on_fullscreen_toggled(button_pressed): + GUI.toggle_fullscreen(button_pressed) + GUI.set_setting("Fullscreen", button_pressed) diff --git a/Game/Assets/UI/GraphicsMenu.tscn b/Game/Assets/UI/GraphicsMenu.tscn index ab31a55..69b5f4f 100644 --- a/Game/Assets/UI/GraphicsMenu.tscn +++ b/Game/Assets/UI/GraphicsMenu.tscn @@ -1,13 +1,13 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=4 format=3 uid="uid://cd6qhohan2oa1"] -[ext_resource path="res://Assets/UI/Menu.tscn" type="PackedScene" id=1] -[ext_resource path="res://Assets/UI/GraphicsMenu.gd" type="Script" id=2] -[ext_resource path="res://Assets/UI/MenuCheckButton.tscn" type="PackedScene" id=3] +[ext_resource type="PackedScene" path="res://Assets/UI/Menu.tscn" id="1"] +[ext_resource type="Script" path="res://Assets/UI/GraphicsMenu.gd" id="2"] +[ext_resource type="PackedScene" uid="uid://bl1fc5cl4fcav" path="res://Assets/UI/MenuCheckButton.tscn" id="3"] -[node name="GraphicsMenu" instance=ExtResource( 1 )] -script = ExtResource( 2 ) +[node name="GraphicsMenu" instance=ExtResource( "1" )] +script = ExtResource( "2" ) -[node name="Fullscreen" parent="." index="0" instance=ExtResource( 3 )] +[node name="Fullscreen" parent="." index="0" instance=ExtResource( "3" )] anchor_right = 0.0 anchor_bottom = 0.0 offset_right = 76.0 @@ -19,4 +19,4 @@ offset_top = 44.0 offset_right = 76.0 offset_bottom = 73.0 -[connection signal="data_changed" from="Fullscreen" to="." method="toggle_fullscreen"] +[connection signal="toggled" from="Fullscreen" to="." method="on_fullscreen_toggled"] diff --git a/Game/Assets/UI/Menu.gd b/Game/Assets/UI/Menu.gd index 477ce81..bd31b8d 100644 --- a/Game/Assets/UI/Menu.gd +++ b/Game/Assets/UI/Menu.gd @@ -1,6 +1,8 @@ extends VBoxContainer var previous_menu : Node = null +var settings = {} +@onready var GUI = get_parent() # Called when the node enters the scene tree for the first time. func _ready(): @@ -17,3 +19,4 @@ func go_back(): previous_menu.show() previous_menu = null queue_free() + diff --git a/Game/Assets/UI/MenuButton.tscn b/Game/Assets/UI/MenuButton.tscn index 6039b34..a29ad27 100644 --- a/Game/Assets/UI/MenuButton.tscn +++ b/Game/Assets/UI/MenuButton.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=2 format=3 uid="uid://d135tevauvmoq"] -[ext_resource path="res://Assets/UI/MenuButton.gd" type="Script" id=1] +[ext_resource type="Script" path="res://Assets/UI/MenuButton.gd" id="1"] [node name="MenuButton" type="Button"] anchor_right = 1.0 anchor_bottom = 1.0 -script = ExtResource( 1 ) +script = ExtResource( "1" ) __meta__ = { "_edit_use_anchors_": false } diff --git a/Game/Assets/UI/MenuCheckButton.tscn b/Game/Assets/UI/MenuCheckButton.tscn index bffc779..44ac232 100644 --- a/Game/Assets/UI/MenuCheckButton.tscn +++ b/Game/Assets/UI/MenuCheckButton.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=2 format=3 uid="uid://bl1fc5cl4fcav"] -[ext_resource path="res://Assets/UI/MenuCheckButton.gd" type="Script" id=1] +[ext_resource type="Script" path="res://Assets/UI/MenuCheckButton.gd" id="1"] [node name="MenuCheckButton" type="CheckButton"] anchor_right = 1.0 anchor_bottom = 1.0 -script = ExtResource( 1 ) +script = ExtResource( "1" ) __meta__ = { "_edit_use_anchors_": false } diff --git a/Game/Assets/UI/OptionsMenu.tscn b/Game/Assets/UI/OptionsMenu.tscn index ff0798e..79fff7c 100644 --- a/Game/Assets/UI/OptionsMenu.tscn +++ b/Game/Assets/UI/OptionsMenu.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://d37bped35n16j"] [ext_resource type="PackedScene" path="res://Assets/UI/Menu.tscn" id="1"] -[ext_resource type="PackedScene" path="res://Assets/UI/MenuButton.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://d135tevauvmoq" path="res://Assets/UI/MenuButton.tscn" id="2"] [node name="OptionsMenu" instance=ExtResource( "1" )] diff --git a/Game/Map.tscn b/Game/Map.tscn index 140ed7c..0fca3dd 100644 --- a/Game/Map.tscn +++ b/Game/Map.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=12 format=3 uid="uid://b1078bn8gy2qf"] [ext_resource type="PackedScene" path="res://Assets/MapComponents/SpawnPoint.tscn" id="1"] -[ext_resource type="PackedScene" uid="uid://bfs2skkrik1xb" path="res://Assets/Props/BeerCan.glb" id="3"] +[ext_resource type="PackedScene" uid="uid://831g53oe7qt8" path="res://Assets/Props/BeerCan.glb" id="3"] [ext_resource type="PackedScene" uid="uid://w476ulvte1f6" path="res://Assets/Maps/DM1/DM1.glb" id="6"] [sub_resource type="GDScript" id="GDScript_gjkl2"]