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.

53 lines
1.2 KiB

extends Node
# Meant to be used as a singleton.
# Don't store Objects in here for now.
export(String) var file_path := "user://config.ini"
var __config : Dictionary
func get_parameter(parameter_key:String, default=null):
hydrate_lazily()
if parameter_key in self.__config:
return self.__config[parameter_key]
else:
# printerr("[Config] Unknown parameter `%s'." % parameter_key)
# assert(false)
return default
func set_parameter(parameter_key:String, parameter_value) -> void:
self.__config[parameter_key] = parameter_value
write_to_file(self.__config)
func hydrate_lazily() -> void:
if null == self.__config:
self.__config = load_from_file()
func write_to_file(config_to_write:Dictionary) -> void:
var file = File.new()
var opened = file.open(self.file_path, File.WRITE)
if OK != opened:
printerr("[Config] Cannot write to file `%s'." % self.file_path)
return
file.store_var(config_to_write)
file.close()
func load_from_file() -> Dictionary:
var file = File.new()
var opened = file.open(self.file_path, File.READ)
if OK != opened:
printerr("[Config] Cannot read from file `%s'." % self.file_path)
return {} # null
var data = file.get_var()
file.close()
return data