From 01ddf2b25b2166974ff13c012e866a927844f8a4 Mon Sep 17 00:00:00 2001 From: Jan Heemstra Date: Sat, 11 Sep 2021 15:22:08 +0200 Subject: [PATCH] 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"]