This repository has been archived on 2022-01-09. You can view files and clone it, but cannot push or open issues/pull-requests.
liblast/Game/Assets/UI/GUI.gd

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