116 lines
3.5 KiB
GDScript
116 lines
3.5 KiB
GDScript
extends Node
|
|
|
|
var cfg_path = "user://settings.cfg"
|
|
var updated = false
|
|
@onready var configuration = get_settings()
|
|
|
|
func save():
|
|
if not updated:
|
|
return
|
|
Common.msg_debug("Save to config file : %s/%s" % [OS.get_user_data_dir(), cfg_path.replace("user://", "")])
|
|
Common.msg_debug(str(configuration))
|
|
var file = ConfigFile.new()
|
|
for section in configuration.keys():
|
|
for key in configuration[section].keys():
|
|
file.set_value(section, key, configuration[section][key])
|
|
file.save(cfg_path)
|
|
Common.msg_debug("Saved to config file : %s/%s" % [OS.get_user_data_dir(), cfg_path.replace("user://", "")])
|
|
|
|
|
|
func get_settings() -> Dictionary:
|
|
var cfg = {}
|
|
var config = ConfigFile.new()
|
|
var cfg_file_content = config.load(cfg_path)
|
|
if cfg_file_content != OK:
|
|
return cfg
|
|
for section in config.get_sections():
|
|
Common.msg_debug ("Config section : %s" % section)
|
|
for parameter in config.get_section_keys(section):
|
|
Common.msg_debug("Config parameter : %s" % parameter)
|
|
if not cfg.has(section):
|
|
cfg[section] = {}
|
|
cfg[section][parameter] = config.get_value(section, parameter)
|
|
Common.msg_debug("After load config: " + str(cfg))
|
|
return cfg
|
|
|
|
|
|
func set_float_group_key(group:String, key:String, value:float):
|
|
Common.msg_debug("Set config[" + group + "][" + key + "] = " + str(value))
|
|
if not configuration.has(group):
|
|
configuration[group] = {}
|
|
if configuration[group].has(key):
|
|
if configuration[group][key] == value:
|
|
return
|
|
updated = true
|
|
configuration[group][key] = value
|
|
|
|
|
|
func get_float_group_key(group:String, key:String, default:float) -> float:
|
|
if configuration.has(group):
|
|
if configuration[group].has(key):
|
|
if typeof(configuration[group][key]) == TYPE_FLOAT:
|
|
return configuration[group][key]
|
|
Common.msg_debug("type:" + str(typeof(configuration[group][key])))
|
|
set_float_group_key(group, key, default)
|
|
return default
|
|
|
|
|
|
func set_bool_group_key(group:String, key:String, value:bool):
|
|
Common.msg_debug("Set config[" + group + "][" + key + "] = " + str(value))
|
|
if not configuration.has(group):
|
|
configuration[group] = {}
|
|
if configuration[group].has(key):
|
|
if configuration[group][key] == value:
|
|
return
|
|
updated = true
|
|
configuration[group][key] = value
|
|
|
|
|
|
func get_bool_group_key(group:String, key:String, default:bool) -> bool:
|
|
if configuration.has(group):
|
|
if configuration[group].has(key):
|
|
if typeof(configuration[group][key]) == TYPE_BOOL:
|
|
return configuration[group][key]
|
|
Common.msg_debug("type:" + str(typeof(configuration[group][key])))
|
|
set_bool_group_key(group, key, default)
|
|
return default
|
|
|
|
|
|
func set_sound_music_volume(value: float):
|
|
return set_float_group_key("sound", "music_volume", value)
|
|
|
|
|
|
func get_sound_music_volume() -> float:
|
|
return get_float_group_key("sound", "music_volume", 100.0)
|
|
|
|
|
|
func set_sound_global_volume(value: float):
|
|
return set_float_group_key("sound", "global_volume", value)
|
|
|
|
|
|
func get_sound_global_volume() -> float:
|
|
return get_float_group_key("sound", "global_volume", 100.0)
|
|
|
|
|
|
func set_sound_mute(value: bool):
|
|
return set_bool_group_key("sound", "mute", value)
|
|
|
|
|
|
func get_sound_mute() -> bool:
|
|
return get_bool_group_key("sound", "mute", false)
|
|
|
|
|
|
func set_sound_music_play(value: bool):
|
|
return set_bool_group_key("sound", "music_play", value)
|
|
|
|
|
|
func get_sound_music_play() -> bool:
|
|
return get_bool_group_key("sound", "music_play", true)
|
|
|
|
|
|
func set_sound_music_random(value: bool):
|
|
return set_bool_group_key("sound", "music_random", value)
|
|
|
|
|
|
func get_sound_music_random() -> bool:
|
|
return get_bool_group_key("sound", "music_random", true)
|