parent
501cda039a
commit
5b12cd85e2
@ -0,0 +1,52 @@
|
|||||||
|
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
|
Loading…
Reference in new issue