38 lines
1.4 KiB
GDScript
38 lines
1.4 KiB
GDScript
class_name PankuConfig
|
|
|
|
const USER_CONFIG_FILE_PATH = "user://panku_config.cfg"
|
|
|
|
# load config from file, always return a dictionary
|
|
static func _get_config(file_path:String) -> Dictionary:
|
|
if FileAccess.file_exists(file_path):
|
|
var file = FileAccess.open(file_path, FileAccess.READ)
|
|
var content := file.get_as_text()
|
|
var config:Dictionary = str_to_var(content)
|
|
if config: return config
|
|
return {}
|
|
|
|
# save user config to file
|
|
static func set_config(config:Dictionary):
|
|
var file = FileAccess.open(USER_CONFIG_FILE_PATH, FileAccess.WRITE)
|
|
var content = var_to_str(config)
|
|
file.store_string(content)
|
|
|
|
# get config, if user config exists, return user config, otherwise return default config configured by plugin user
|
|
static func get_config() -> Dictionary:
|
|
var user_config:Dictionary = _get_config(USER_CONFIG_FILE_PATH)
|
|
if not user_config.is_empty():
|
|
return user_config
|
|
# if no user config, return default config, which is read-only
|
|
if PankuConsolePlugin.is_custom_default_config_exists():
|
|
return _get_config(PankuConsolePlugin.get_custom_default_config_path())
|
|
|
|
return _get_config(PankuConsolePlugin.INITIAL_DEFAULT_CONFIG_FILE_PATH)
|
|
|
|
static func get_value(key:String, default:Variant) -> Variant:
|
|
return get_config().get(key, default)
|
|
|
|
static func set_value(key:String, val:Variant) -> void:
|
|
var config = _get_config(USER_CONFIG_FILE_PATH)
|
|
config[key] = val
|
|
set_config(config)
|