Finished Save System

- All settings get saved
- Added reset to defaults button
- Sliders now update the labels
This commit is contained in:
nc543 2023-12-01 14:53:40 -05:00
parent d2c89a9b5e
commit 337dd80142
12 changed files with 120 additions and 44 deletions

View File

@ -1,7 +1,7 @@
Button
CheckBox
OptionButton
Label
Button
HSlider
Control
CanvasLayer

View File

@ -12,15 +12,15 @@ dock_floating={}
dock_split_2=0
dock_split_3=0
dock_hsplit_1=0
dock_hsplit_2=270
dock_hsplit_3=-328
dock_hsplit_2=260
dock_hsplit_3=-285
dock_hsplit_4=0
dock_filesystem_split=0
dock_filesystem_display_mode=0
dock_filesystem_file_sort=0
dock_filesystem_file_list_display_mode=1
dock_filesystem_selected_paths=PackedStringArray("res://")
dock_filesystem_uncollapsed_paths=PackedStringArray("res://addons/kenney_particle_pack/")
dock_filesystem_selected_paths=PackedStringArray()
dock_filesystem_uncollapsed_paths=PackedStringArray("res://", "res://addons/kenney_particle_pack/")
dock_3="Scene,Import"
dock_4="FileSystem"
dock_5="Inspector,Node,History"
@ -38,7 +38,7 @@ selected_bottom_panel_item=0
open_scripts=["res://Scripts/Player.gd", "res://Scripts/world.gd"]
selected_script="res://Scripts/world.gd"
open_help=["FileAccess", "Input", "ResourceSaver"]
open_help=["CheckBox", "CheckButton", "FileAccess", "Input", "Label", "ResourceSaver"]
script_split_offset=70
list_split_offset=0

View File

@ -1,5 +1,5 @@
ea4bc82a6ad023ab7ee23ee620429895
::res://::1701436760
::res://::1701456972
icon.svg::CompressedTexture2D::8963615070695796116::1699534826::1699534826::1::::<><>::
::res://addons/::1699534826
::res://addons/godot-jolt/::1699534826
@ -309,16 +309,17 @@ lambert1_metallicRoughness.png::CompressedTexture2D::8931258458639185901::169963
lambert1_normal.png::CompressedTexture2D::3998376482152544164::1699639136::1699639160::1::::<><>::
::res://Occlusion Data/::1699901776
environment.occ::ArrayOccluder3D::2660494726846166203::1699901776::0::1::::<><>::
::res://Prefabs/::1700275209
player.tscn::PackedScene::4444783912067201683::1700275209::0::1::::<><>::res://Scripts/Player.gd<>uid://da1qh4xri24f2::::res://Models/kimber_1911/scene.gltf<>uid://d164amgdtaa5k::::res://Models/funny_rubber_chicken/chicken.tscn<>uid://bx0esoasfh733::::res://addons/kenney_particle_pack/star_06.png<>uid://cfwx1moklfkfj::::res://Sound Effects/weapon_gun_1911_A_41.ogg
::res://Saves/::1699904469
::res://Scenes/::1700275209
::res://Prefabs/::1701454347
player.tscn::PackedScene::4444783912067201683::1701454347::0::1::::<><>::res://Scripts/Player.gd<>uid://da1qh4xri24f2::::res://Models/kimber_1911/scene.gltf<>uid://d164amgdtaa5k::::res://Models/funny_rubber_chicken/chicken.tscn<>uid://bx0esoasfh733::::res://addons/kenney_particle_pack/star_06.png<>uid://cfwx1moklfkfj::::res://Sound Effects/weapon_gun_1911_A_41.ogg
::res://Saves/::1701454093
options.res::::-1::1701454362::0::1::::<><>::
::res://Scenes/::1701454347
environment.tscn::PackedScene::8256961957080777526::1699901776::0::1::::<><>::uid://ca0iv4endjdmn
world.tscn::PackedScene::1877808985457939721::1700275209::0::1::::<><>::res://Scripts/world.gd<>uid://dpvy7sm57pjn7::::res://Scenes/environment.tscn<>uid://dhytg0w8gqdob::::res://addons/kenney_particle_pack/circle_05.png
::res://Scripts/::1700229275
world.tscn::PackedScene::1877808985457939721::1701454347::0::1::::<><>::res://Scripts/world.gd<>uid://dpvy7sm57pjn7::::res://Scenes/environment.tscn<>uid://dhytg0w8gqdob::::res://addons/kenney_particle_pack/circle_05.png
::res://Scripts/::1701454345
chicken.gd::GDScript::-1::1699536631::0::1::::<>Node3D<>::
HatHider.gd::GDScript::-1::1699901776::0::1::::<>Node3D<>::
Player.gd::GDScript::-1::1700075062::0::1::::<>CharacterBody3D<>::
world.gd::GDScript::-1::1700229275::0::1::::<>Node<>::
world.gd::GDScript::-1::1701454345::0::1::::<>Node<>::
::res://Sound Effects/::1699901776
weapon_gun_1911_A_41.ogg::AudioStreamOggVorbis::5170645470017560819::1699901776::1699901776::1::::<><>::

View File

@ -1,2 +1,3 @@
res://Scripts/world.gd
res://Scenes/world.tscn
res://Scripts/world.gd
res://Prefabs/player.tscn

View File

@ -174,4 +174,4 @@ Anim={
"zfar": 4000.01,
"znear": 0.05
}
selected_nodes=Array[NodePath]([])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@17638/@Control@697/@Panel@698/@VBoxContainer@706/@HSplitContainer@709/@HSplitContainer@717/@HSplitContainer@725/@VBoxContainer@726/@VSplitContainer@728/@VSplitContainer@754/@VBoxContainer@755/@PanelContainer@800/MainScreen/@CanvasItemEditor@10090/@VSplitContainer@9915/@HSplitContainer@9917/@HSplitContainer@9919/@Control@9920/@SubViewportContainer@9921/@SubViewport@9922/World/CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Reset")])

View File

@ -7,11 +7,11 @@ use_advanced_connections=false
run_live_debug=true
run_reload_scripts=true
run_debug_instances=2
run_debug_instances=1
[dialog_bounds]
editor_settings=Rect2(830, 370, 900, 700)
editor_settings=Rect2(550, 184, 900, 700)
create_new_node=Rect2(830, 370, 900, 700)
project_settings=Rect2(485, 157, 900, 700)
search_help=Rect2(396, 196, 1280, 720)
@ -20,7 +20,7 @@ export=Rect2(830, 371, 900, 708)
[recent_files]
scenes=["res://Prefabs/player.tscn", "res://Scenes/world.tscn", "res://Models/environment.glb", "res://Scenes/environment.tscn", "res://Models/Hats/11.tscn", "res://Models/Hats/10.tscn", "res://Models/Hats/9.tscn", "res://Models/Hats/8.tscn", "res://Models/Hats/7.tscn", "res://Models/Hats/6.tscn"]
scripts=["FileAccess", "ResourceSaver", "Input", "res://Scripts/Player.gd", "res://Scripts/world.gd", "InputEventMouseMotion", "InputEventJoypadMotion", "GeometryInstance3D", "ENetPacketPeer", "ENetMultiplayerPeer"]
scripts=["Label", "CheckButton", "ResourceSaver", "Input", "FileAccess", "CheckBox", "res://Scripts/Player.gd", "res://Scripts/world.gd", "InputEventMouseMotion", "InputEventJoypadMotion"]
[linked_properties]

View File

@ -7,7 +7,7 @@ state={
"folded_lines": Array[int]([]),
"h_scroll_position": 84,
"row": 139,
"scroll_position": 118.0,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
@ -18,10 +18,10 @@ state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 1,
"folded_lines": Array[int]([]),
"folded_lines": Array[int]([135, 175]),
"h_scroll_position": 0,
"row": 146,
"scroll_position": 127.0,
"row": 167,
"scroll_position": 156.0,
"selection": false,
"syntax_highlighter": "GDScript"
}

View File

@ -8,7 +8,7 @@ Anim={
"grid_snap_active": false,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(177.844, 235.53),
"ofs": Vector2(115.061, 114.061),
"primary_grid_steps": 8,
"show_edit_locks": true,
"show_guides": true,
@ -32,7 +32,7 @@ Anim={
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 2.37841
"zoom": 1.41421
}
3D={
"fov": 70.01,
@ -173,4 +173,4 @@ Anim={
"zfar": 4000.01,
"znear": 0.05
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@17638/@Control@697/@Panel@698/@VBoxContainer@706/@HSplitContainer@709/@HSplitContainer@717/@HSplitContainer@725/@VBoxContainer@726/@VSplitContainer@728/@VSplitContainer@754/@VBoxContainer@755/@PanelContainer@800/MainScreen/@CanvasItemEditor@10090/@VSplitContainer@9915/@HSplitContainer@9917/@HSplitContainer@9919/@Control@9920/@SubViewportContainer@9921/@SubViewport@9922/World/CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/VSyncBox")])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@17638/@Control@697/@Panel@698/@VBoxContainer@706/@HSplitContainer@709/@HSplitContainer@717/@HSplitContainer@725/@VBoxContainer@726/@VSplitContainer@728/@VSplitContainer@754/@VBoxContainer@755/@PanelContainer@800/MainScreen/@CanvasItemEditor@10090/@VSplitContainer@9915/@HSplitContainer@9917/@HSplitContainer@9919/@Control@9920/@SubViewportContainer@9921/@SubViewport@9922/World/CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Reset")])

View File

@ -1,5 +1,5 @@
[folding]
node_unfolds=[NodePath("environment"), PackedStringArray("Transform"), NodePath("DirectionalLight3D"), PackedStringArray("Shadow", "Light"), NodePath("CanvasLayer"), PackedStringArray("Layer", "Follow Viewport", "Transform"), NodePath("CanvasLayer/MainMenu"), PackedStringArray("Theme Overrides", "Theme Overrides/styles"), NodePath("CanvasLayer/MainMenu/MarginContainer"), PackedStringArray("Theme Overrides", "Theme Overrides/constants"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer"), PackedStringArray("Theme Overrides", "Theme Overrides/constants"), NodePath("CanvasLayer/HUD"), PackedStringArray("Mouse"), NodePath("CanvasLayer/HUD/TextureRect"), PackedStringArray("Layout", "Layout/Transform"), NodePath("CanvasLayer/HUD/HealthBar"), PackedStringArray("Theme Overrides", "Theme Overrides/styles", "theme_override_styles/fill", "theme_override_styles/background"), NodePath("MultiplayerSpawner"), PackedStringArray("_spawnable_scene_count_array")]
node_unfolds=[NodePath("environment"), PackedStringArray("Transform"), NodePath("DirectionalLight3D"), PackedStringArray("Shadow", "Light"), NodePath("CanvasLayer"), PackedStringArray("Layer", "Follow Viewport", "Transform"), NodePath("CanvasLayer/MainMenu"), PackedStringArray("Theme Overrides", "Theme Overrides/styles"), NodePath("CanvasLayer/MainMenu/MarginContainer"), PackedStringArray("Theme Overrides", "Theme Overrides/constants"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer"), PackedStringArray("Theme Overrides", "Theme Overrides/constants"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Reset"), PackedStringArray("Text Behavior", "Theme Overrides", "Theme Overrides/font_sizes"), NodePath("CanvasLayer/HUD"), PackedStringArray("Mouse"), NodePath("CanvasLayer/HUD/TextureRect"), PackedStringArray("Layout", "Layout/Transform"), NodePath("CanvasLayer/HUD/HealthBar"), PackedStringArray("Theme Overrides", "Theme Overrides/styles", "theme_override_styles/fill", "theme_override_styles/background"), NodePath("MultiplayerSpawner"), PackedStringArray("_spawnable_scene_count_array")]
resource_unfolds=["res://Scenes/world.tscn::StyleBoxFlat_cdng2", PackedStringArray(), "res://Scenes/world.tscn::StyleBoxFlat_ufa2v", PackedStringArray()]
nodes_folded=[NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Hosting"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Joining"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu"), NodePath("CanvasLayer/HUD"), NodePath("CanvasLayer/PauseMenu")]
nodes_folded=[NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Hosting"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/Joining"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu"), NodePath("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu"), NodePath("CanvasLayer/HUD"), NodePath("CanvasLayer/PauseMenu")]

1
Saves/options.res Normal file
View File

@ -0,0 +1 @@
{"fov":75,"master_volume":100,"music_volume":100,"sensitivity":75,"soundFX_volume":100,"vsync":true}

View File

@ -140,7 +140,6 @@ horizontal_alignment = 1
vertical_alignment = 1
[node name="BaseMenu" type="Control" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer"]
visible = false
layout_mode = 2
[node name="Label2" type="Label" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu"]
@ -269,6 +268,7 @@ grow_vertical = 0
text = "Options"
[node name="OptionMenu" type="Control" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer"]
visible = false
layout_mode = 2
[node name="OptionsTitle" type="Label" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu"]
@ -507,7 +507,6 @@ offset_right = 84.0
offset_bottom = 223.0
grow_horizontal = 2
grow_vertical = 0
disabled = true
text = "Apply"
[node name="VSyncBox" type="CheckBox" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu"]
@ -519,6 +518,7 @@ offset_bottom = 189.0
button_pressed = true
[node name="VSyncLabel" type="Label" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu"]
layout_mode = 0
offset_left = 7.0
offset_top = 164.0
offset_right = 129.0
@ -526,6 +526,13 @@ offset_bottom = 190.0
text = "VSync:"
horizontal_alignment = 2
[node name="Reset" type="Button" parent="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu"]
layout_mode = 1
offset_right = 83.0
offset_bottom = 21.0
theme_override_font_sizes/font_size = 9
text = "Reset to Defaults"
[node name="HUD" type="Control" parent="CanvasLayer"]
visible = false
layout_mode = 3
@ -630,8 +637,16 @@ spawn_path = NodePath("..")
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu/Join" to="." method="_on_join_pressed"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu/Host" to="." method="_on_host_pressed"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu/Button" to="." method="quit"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/BaseMenu/Options" to="." method="_on_options_pressed"]
[connection signal="value_changed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/FOV" to="." method="_on_fov_value_changed"]
[connection signal="value_changed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Sensitivity" to="." method="_on_sensitivity_value_changed"]
[connection signal="value_changed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MasterVolume" to="." method="_on_master_volume_value_changed"]
[connection signal="value_changed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MusicVolume" to="." method="_on_music_volume_value_changed"]
[connection signal="value_changed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/SoundFXVolume" to="." method="_on_sound_fx_volume_value_changed"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Cancel" to="." method="_on_cancel_pressed"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Apply" to="." method="_on_apply_pressed"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/VSyncBox" to="." method="_on_v_sync_box_pressed"]
[connection signal="pressed" from="CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Reset" to="." method="initSave"]
[connection signal="pressed" from="CanvasLayer/PauseMenu/MarginContainer/VBoxContainer/Resume" to="." method="pause"]
[connection signal="pressed" from="CanvasLayer/PauseMenu/MarginContainer/VBoxContainer/MainMenu" to="." method="_on_main_menu_pressed"]
[connection signal="pressed" from="CanvasLayer/PauseMenu/MarginContainer/VBoxContainer/Quit" to="." method="quit"]

View File

@ -22,7 +22,7 @@ var paused: bool = false
var ingame: bool = false
var chimkin
var local_peer_id
var vsync: bool = true
var settings
@export var spawnpoint: Vector3 = Vector3(0, 6.376, 0)
@ -31,6 +31,9 @@ func _unhandled_input(event):
if ingame and Input.is_action_just_pressed("quit"):
pause()
func _ready():
loadSave()
func _on_join_pressed():
baseMenu.hide()
joinMenu.show()
@ -116,7 +119,8 @@ func pause():
func _on_cancel_pressed():
optionMenu.hide()
mainMenu.show()
baseMenu.show()
updateOptions()
func playerDisconnect(peer_id):
mainMenu.show()
@ -129,24 +133,78 @@ func _on_main_menu_pressed():
var player = get_node_or_null(str(local_peer_id))
enet_peer.close()
func _on_v_sync_box_pressed():
if vsync:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
else:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED)
vsync = !vsync
func save():
var save_game = FileAccess.open(SAVE_FILE, FileAccess.WRITE)
save_game.store_line(JSON.stringify({"vsync": vsync}))
save_game.store_line(JSON.stringify(settings))
save_game.close()
func loadSave():
if not FileAccess.file_exists(SAVE_FILE):
initSave()
var save_game = FileAccess.open(SAVE_FILE, FileAccess.WRITE)
save_game.store_line(JSON.stringify(settings))
save_game.close()
else:
var save_game = FileAccess.open(SAVE_FILE, FileAccess.READ)
var json = JSON.new()
json.parse(save_game.get_line())
settings = json.get_data()
save_game.close()
if settings["vsync"]:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
else:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED)
updateOptions()
func updateOptions():
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/FOV").value = settings["fov"]
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Sensitivity").value = settings["sensitivity"]
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MasterVolume").value = settings["master_volume"]
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MusicVolume").value = settings["music_volume"]
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/SoundFXVolume").value = settings["soundFX_volume"]
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/VSyncBox").button_pressed = settings["vsync"]
func initSave():
var save_game = FileAccess.open(SAVE_FILE, FileAccess.WRITE)
save_game.store_line(JSON.stringify({"vsync": true}))
settings = {"fov": 75,
"sensitivity": 75,
"master_volume": 100,
"music_volume": 100,
"soundFX_volume": 100,
"vsync": true}
updateOptions()
func _on_apply_pressed():
settings = {
"fov": get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/FOV").value,
"sensitivity": get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/Sensitivity").value,
"master_volume": get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MasterVolume").value,
"music_volume": get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MusicVolume").value,
"soundFX_volume": get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/SoundFXVolume").value,
"vsync": get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/VSyncBox").button_pressed
}
save()
if settings["vsync"]:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
else:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED)
baseMenu.show()
optionMenu.hide()
func _on_options_pressed():
optionMenu.show()
baseMenu.hide()
func _on_fov_value_changed(value):
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/FOVNum").text = str(value)
func _on_sensitivity_value_changed(value):
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/SensitivityNum").text = str(value)
func _on_master_volume_value_changed(value):
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MasterVolumeValue").text = str(value)
func _on_music_volume_value_changed(value):
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/MusicVolumeNum").text = str(value)
func _on_sound_fx_volume_value_changed(value):
get_node("CanvasLayer/MainMenu/MarginContainer/VBoxContainer/OptionMenu/SoundFXVolumeValue").text = str(value)