extends Node const SETTINGS_FILE = "user://settings.vars" # user:// path varies depending on operating system. See https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html#accessing-persistent-user-data-user var settings_template = { # Default values if we don't already have a settings file. Assigned in save_data() 'mousesense': 0.01, 'playername' : "player", 'volume' : 0.5 } var settings_data = {} # This gets filled as soon as load_data() is called. func _ready(): check_data() load_data() func check_data(): # Makes sure the save file exists var file = FileAccess.open(SETTINGS_FILE, FileAccess.READ) #If we write, it writes an empty file over our existing one if not file: # If there's no file, let's create one with FileAccess.WRITE if OS.has_environment("USERNAME"): print("env has USERNAME var") settings_template["playername"] = OS.get_environment("USERNAME") elif OS.has_environment("USER"): print("env has USER var") settings_template["playername"] = OS.get_environment("USER") else: print("env has no known user var") print("file does not exist, let's create one!") var file2 = FileAccess.open(SETTINGS_FILE, FileAccess.WRITE) file2.store_line(JSON.stringify(settings_template)) # Writes settings_template to our file SETTINGS_FILE func save_data(mousesense, playername, volume): # It's required you pass both the mouse sensitivity and the player name to save current data var file = FileAccess.open(SETTINGS_FILE, FileAccess.WRITE) settings_data['mousesense'] = mousesense settings_data['playername'] = playername settings_data['volume'] = volume file.store_line(JSON.stringify(settings_data)) func load_data(): var file = FileAccess.open(SETTINGS_FILE, FileAccess.READ) settings_data = JSON.parse_string(file.get_line()) print(settings_data) var mousesense = settings_data['mousesense'] var playername = settings_data['playername'] var volume = settings_data['volume'] Global.mouseSensitivity = mousesense Global.playerName = playername Global.volumeModifer = volume