extends Node const PATH := "user://config.cfg" const SETTINGS_SECTION := "settings" const JOYSTICK_SECTION := "joystick" const BUTTONS_SECTION := "buttons" const DEVICE_LABEL := "device_label" const BACKGROUND_COLOR := "background_color" const JOYSTICK_LABELS := "joystick_labels" const TRACK_JOYSTICK_MOVEMENT := "track_joystick_movement" const TRACK_JOYSTICK_DRIFT := "track_joystick_drift" const BUTTONS_LABELS := "buttons_labels" const DEFAULT_JOYSTICK_COLOR := "default_joystick_color" const DEFAULT_BUTTON_COLOR := "default_button_color" const ACTIVE_COLOR := "active_color" const TEXT_COLOR := "text_color" const COLOR_BUTTON_TEXT := "color_button_text" var _config: ConfigFile # Settings static var device_label := ConfigOption.new(SETTINGS_SECTION, DEVICE_LABEL, true) static var background_color := ConfigOption.new(SETTINGS_SECTION, BACKGROUND_COLOR, Color(0x4d4d4dff)) static var active_color := ConfigOption.new(SETTINGS_SECTION, ACTIVE_COLOR, Color(0x4a8e53ff)) static var text_color := ConfigOption.new(SETTINGS_SECTION, TEXT_COLOR, Color(0xffffffff)) # Joystick static var joystick_labels := ConfigOption.new(JOYSTICK_SECTION, JOYSTICK_LABELS, true) static var track_joystick_movement := ConfigOption.new(JOYSTICK_SECTION, TRACK_JOYSTICK_MOVEMENT, true) static var track_joystick_drift := ConfigOption.new(JOYSTICK_SECTION, TRACK_JOYSTICK_DRIFT, true) static var default_joystick_color := ConfigOption.new(JOYSTICK_SECTION, DEFAULT_JOYSTICK_COLOR, Color(0x2a2a2aff)) # Buttons static var buttons_labels := ConfigOption.new(BUTTONS_SECTION, BUTTONS_LABELS, true) static var default_button_color := ConfigOption.new(BUTTONS_SECTION, DEFAULT_BUTTON_COLOR, Color(0x2a2a2aff)) static var color_button_text := ConfigOption.new(BUTTONS_SECTION, COLOR_BUTTON_TEXT, false) func _ready() -> void: self._config = ConfigFile.new() var err := self._config.load(PATH) if err != OK: self.save_config() print_debug("Auto generated config file") for opt in WyHelper.options: opt.load(self._config) var bg_color: Color = self.background_color.value RenderingServer.set_default_clear_color(bg_color) if bg_color.a > 0.0: get_viewport().transparent_bg = false func _notification(what: int) -> void: if what == NOTIFICATION_WM_CLOSE_REQUEST: self.save_config() func save_config() -> void: for opt in WyHelper.options: opt.save(self._config) var err := self._config.save(PATH) if err != OK: printerr("Failed to save config") return