#pragma once #include #include #include #include enum class OptionType { Bool, Text, Integer, Enum, Hex, }; enum class OptionPickerType { None, AsioDriver, EACard, CpuAffinity, FilePath, DirectoryPath, Monitor, }; struct OptionDefinition { std::string title; // unique identifier used for flag matching but also stored in config files // (should not be changed once published for compat) std::string name; // what's displayed in the UI/logs as the flag name std::string display_name = ""; // slash-delimited list of strings that also work as flag std::string aliases = ""; // what's displayed in the UI/logs as the tooltip std::string desc; OptionType type; bool hidden = false; std::string setting_name = ""; std::string game_name = ""; std::string category = "Development"; bool sensitive = false; std::vector> elements = {}; bool disabled = false; OptionPickerType picker = OptionPickerType::None; // for OptionPickerType::FilePath std::string file_extension = ""; std::string quick_setting_category = ""; }; class Option { private: OptionDefinition definition; std::string search_string; public: std::string value; std::vector