159 lines
3.4 KiB
GDScript
159 lines
3.4 KiB
GDScript
extends Control
|
|
|
|
var settings_filename = "user://settings.save"
|
|
var settings = {}
|
|
|
|
var map: Node3D
|
|
|
|
func _ready():
|
|
if has_settings():
|
|
load_settings()
|
|
apply_settings()
|
|
else: # apply defaults
|
|
settings = {'Fullscreen':true,
|
|
'Sensitivity':0.5,
|
|
'ip':'unfa.xyz',
|
|
'player color':Color(1, 1, 1, 1),
|
|
'username':'player',
|
|
'GraphicsRenderScale':1.0,
|
|
}
|
|
apply_settings()
|
|
save_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)
|
|
file.store_var(settings)
|
|
file.close()
|
|
|
|
func load_settings():
|
|
var file = File.new()
|
|
file.open(settings_filename, File.READ)
|
|
settings = file.get_var()
|
|
file.close()
|
|
|
|
if typeof(settings) != TYPE_DICTIONARY:
|
|
settings = {}
|
|
|
|
func apply_settings():
|
|
# get the currently loaded map
|
|
map = get_tree().get_root().get_node("Main").get_node("Map")
|
|
|
|
for key in settings.keys():
|
|
match key:
|
|
"Sensitivity":
|
|
set_mouse_sensitivity(settings[key])
|
|
"GraphicsFullscreen":
|
|
set_fullscreen(settings[key])
|
|
"GraphicsAmbientOcclusion":
|
|
set_ambient_occlusion(settings[key])
|
|
"GraphicsShadows":
|
|
set_shadows(settings[key])
|
|
"GraphicsGlobalIllumination":
|
|
set_global_illumination(settings[key])
|
|
"GraphicsScreenSpaceReflections":
|
|
set_screen_space_reflections(settings[key])
|
|
"GraphicsReflectionProbes":
|
|
set_reflection_probes(settings[key])
|
|
"GraphicsGlow":
|
|
set_glow(settings[key])
|
|
"GraphicsMSAA":
|
|
set_MSAA(settings[key])
|
|
"GraphicsFXAA":
|
|
set_FXAA(settings[key])
|
|
"GraphicsDebanding":
|
|
set_debanding(settings[key])
|
|
"GraphicsDecalsStatic":
|
|
set_decals_static(settings[key])
|
|
"GraphicsDecalsDecals":
|
|
set_decals_decals(settings[key])
|
|
"GraphicsDynamicLights":
|
|
set_dynamic_lights(settings[key])
|
|
|
|
# These functions are for applying settings changes
|
|
func quit_game():
|
|
|
|
var main = get_tree().get_root().get_node("Main")
|
|
var pid = main.get_multiplayer_authority()
|
|
var player_node = main.get_node("Players").get_node(str(pid))
|
|
|
|
#main.get_node("HUD/Chat").rpc(&'chat_notification', "Player " + str(pid) +" left the game.")
|
|
#player_node.rpc(&'die', -1)
|
|
#main.rpc(&'disconnect_player', pid) # tell everyone we're leaving
|
|
#main.multiplayer = null
|
|
|
|
get_tree().multiplayer.multiplayer_peer = null
|
|
|
|
get_tree().quit()
|
|
|
|
func set_mouse_sensitivity(sensitivity):
|
|
pass
|
|
|
|
func set_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_ambient_occlusion(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_shadows(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_global_illumination(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_screen_space_reflections(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_reflection_probes(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_glow(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_MSAA(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_FXAA(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_debanding(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_decals_static(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_decals_decals(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_dynamic_lights(is_enabled):
|
|
# TODO
|
|
pass
|
|
|
|
func set_render_scale(value):
|
|
get_viewport().scaling_3d_scale = value
|
|
|
|
func set_fsr(is_enabled):
|
|
get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_FSR if is_enabled else Viewport.SCALING_3D_MODE_BILINEAR
|