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 self.__config.has(parameter_key): # print("[Config] Reading parameter `%s' from Config." % parameter_key) return self.__config[parameter_key] else: # print("[Config] Using default value for parameter `%s'." % parameter_key) 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 or self.__config.empty(): 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() assert(data is Dictionary) file.close() return data