A Third-Person-Shooter Godot game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

88 lines
1.5 KiB

extends Node
enum GIQuality {
DISABLED = 0,
LOW = 1,
HIGH = 2,
}
enum AAQuality {
DISABLED = 0,
AA_2X = 1,
AA_4X = 2,
AA_8X = 3,
}
enum SSAOQuality {
DISABLED = 0,
LOW = 1,
HIGH = 2,
}
enum BloomQuality {
DISABLED = 0,
LOW = 1,
HIGH = 2,
}
enum Resolution {
RES_540 = 0,
RES_720 = 1,
RES_1080 = 2,
NATIVE = 3,
}
var gi_quality = GIQuality.LOW
var aa_quality = AAQuality.AA_2X
var ssao_quality = SSAOQuality.DISABLED
var bloom_quality = BloomQuality.HIGH
var resolution = Resolution.NATIVE
var fullscreen = true
func _ready():
load_settings()
func _input(event):
if event.is_action_pressed("toggle_fullscreen"):
OS.window_fullscreen = !OS.window_fullscreen
get_tree().set_input_as_handled()
func load_settings():
var f = File.new()
var error = f.open("user://settings.json", File.READ)
if error:
print("There are no settings to load.")
return
var d = parse_json(f.get_as_text())
if typeof(d) != TYPE_DICTIONARY:
return
if "gi" in d:
gi_quality = int(d.gi)
if "aa" in d:
aa_quality = int(d.aa)
if "ssao" in d:
ssao_quality = int(d.ssao)
if "bloom" in d:
bloom_quality = int(d.bloom)
if "resolution" in d:
resolution = int(d.resolution)
if "fullscreen" in d:
fullscreen = bool(d.fullscreen)
func save_settings():
var f = File.new()
var error = f.open("user://settings.json", File.WRITE)
assert(not error)
var d = { "gi":gi_quality, "aa":aa_quality, "ssao":ssao_quality, "bloom":bloom_quality, "resolution":resolution, "fullscreen":fullscreen }
f.store_line(to_json(d))