config_handler.gd 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. extends Node
  2. var config = ConfigFile.new()
  3. const SETTINGS_FILE_PATH = "user://settings.ini"
  4. func _ready():
  5. var file_exists = FileAccess.file_exists(SETTINGS_FILE_PATH)
  6. if file_exists:
  7. config.load(SETTINGS_FILE_PATH)
  8. # Set defaults only if not present
  9. ensure_setting("cdpprogs", "location", "no_location")
  10. ensure_setting("interface_settings", "disable_pvoc_warning", false)
  11. ensure_setting("interface_settings", "auto_close_console", false)
  12. ensure_setting("interface_settings", "console_on_top", true)
  13. ensure_setting("interface_settings", "use_search", false)
  14. ensure_setting("audio_settings", "device", "Default")
  15. # Only save if we added anything new
  16. if !file_exists or config_changed:
  17. config.save(SETTINGS_FILE_PATH)
  18. # Internal tracker
  19. var config_changed := false
  20. func ensure_setting(section: String, key: String, default_value):
  21. if !config.has_section_key(section, key):
  22. config.set_value(section, key, default_value)
  23. config_changed = true
  24. func save_cdpprogs_settings(location: String):
  25. config.set_value("cdpprogs", "location", location)
  26. config.save(SETTINGS_FILE_PATH)
  27. func load_cdpprogs_settings():
  28. var cdpprogs_settings = {}
  29. for key in config.get_section_keys("cdpprogs"):
  30. cdpprogs_settings[key] = config.get_value("cdpprogs", key)
  31. return cdpprogs_settings
  32. func save_interface_settings(key: String, value):
  33. config.set_value("interface_settings", key, value)
  34. config.save(SETTINGS_FILE_PATH)
  35. func load_interface_settings():
  36. var interface_settings = {}
  37. for key in config.get_section_keys("interface_settings"):
  38. interface_settings[key] = config.get_value("interface_settings", key)
  39. return interface_settings
  40. func save_audio_settings(key: String, device: String):
  41. config.set_value("audio_settings", key, device)
  42. config.save(SETTINGS_FILE_PATH)
  43. func load_audio_settings():
  44. var audio_settings = {}
  45. for key in config.get_section_keys("audio_settings"):
  46. audio_settings[key] = config.get_value("audio_settings", key)
  47. return audio_settings