project_teddy/scripts/settings-file.gd
2023-03-17 00:20:54 -06:00

48 lines
2 KiB
GDScript

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