60 lines
2.4 KiB
GDScript
60 lines
2.4 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,
|
|
'tutorialCompleted' : false,
|
|
'lastEnteredIP' : "",
|
|
'lastEnteredPort' : "28000"
|
|
}
|
|
|
|
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():
|
|
var file = FileAccess.open(SETTINGS_FILE, FileAccess.WRITE)
|
|
settings_data['mousesense'] = Global.mouseSensitivity
|
|
settings_data['playername'] = Global.playerName
|
|
settings_data['volume'] = Global.volumeModifer
|
|
settings_data['tutorialCompleted'] = Global.tutorialCompleted
|
|
settings_data['lastEnteredIP'] = Global.lastEnteredIP
|
|
settings_data['lastEnteredPort'] = Global.lastEnteredPort
|
|
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']
|
|
var tutorialCompleted = settings_data['tutorialCompleted']
|
|
var lastEnteredIP = settings_data['lastEnteredIP']
|
|
var lastEnteredPort = settings_data['lastEnteredPort']
|
|
Global.mouseSensitivity = mousesense
|
|
Global.playerName = playername
|
|
Global.volumeModifer = volume
|
|
Global.tutorialCompleted = tutorialCompleted
|
|
Global.lastEnteredIP = lastEnteredIP
|
|
Global.lastEnteredPort = lastEnteredPort
|