using System.Collections.Generic; using System.IO; using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Logging; using Ryujinx.Common.Utilities; using Ryujinx.Configuration.System; using Ryujinx.Configuration.Ui; namespace Ryujinx.Configuration { public class ConfigurationFileFormat { /// /// The current version of the file format /// public const int CurrentVersion = 16; public int Version { get; set; } /// /// Resolution Scale. An integer scale applied to applicable render targets. Values 1-4, or -1 to use a custom floating point scale instead. /// public int ResScale { get; set; } /// /// Custom Resolution Scale. A custom floating point scale applied to applicable render targets. Only active when Resolution Scale is -1. /// public float ResScaleCustom { get; set; } /// /// Max Anisotropy. Values range from 0 - 16. Set to -1 to let the game decide. /// public float MaxAnisotropy { get; set; } /// /// Dumps shaders in this local directory /// public string GraphicsShadersDumpPath { get; set; } /// /// Enables printing debug log messages /// public bool LoggingEnableDebug { get; set; } /// /// Enables printing stub log messages /// public bool LoggingEnableStub { get; set; } /// /// Enables printing info log messages /// public bool LoggingEnableInfo { get; set; } /// /// Enables printing warning log messages /// public bool LoggingEnableWarn { get; set; } /// /// Enables printing error log messages /// public bool LoggingEnableError { get; set; } /// /// Enables printing guest log messages /// public bool LoggingEnableGuest { get; set; } /// /// Enables printing FS access log messages /// public bool LoggingEnableFsAccessLog { get; set; } /// /// Controls which log messages are written to the log targets /// public LogClass[] LoggingFilteredClasses { get; set; } /// /// Change Graphics API debug log level /// public GraphicsDebugLevel LoggingGraphicsDebugLevel { get; set; } /// /// Enables or disables logging to a file on disk /// public bool EnableFileLog { get; set; } /// /// Change System Language /// public Language SystemLanguage { get; set; } /// /// Change System Region /// public Region SystemRegion { get; set; } /// /// Change System TimeZone /// public string SystemTimeZone { get; set; } /// /// Change System Time Offset in seconds /// public long SystemTimeOffset { get; set; } /// /// Enables or disables Docked Mode /// public bool DockedMode { get; set; } /// /// Enables or disables Discord Rich Presence /// public bool EnableDiscordIntegration { get; set; } /// /// Checks for updates when Ryujinx starts when enabled /// public bool CheckUpdatesOnStart { get; set; } /// /// Enables or disables Vertical Sync /// public bool EnableVsync { get; set; } /// /// Enables or disables Shader cache /// public bool EnableShaderCache { get; set; } /// /// Enables or disables multi-core scheduling of threads /// public bool EnableMulticoreScheduling { get; set; } /// /// Enables or disables profiled translation cache persistency /// public bool EnablePtc { get; set; } /// /// Enables integrity checks on Game content files /// public bool EnableFsIntegrityChecks { get; set; } /// /// Enables FS access log output to the console. Possible modes are 0-3 /// public int FsGlobalAccessLogMode { get; set; } /// /// The selected audio backend /// public AudioBackend AudioBackend { get; set; } /// /// Enable or disable ignoring missing services /// public bool IgnoreMissingServices { get; set; } /// /// Used to toggle columns in the GUI /// public GuiColumns GuiColumns { get; set; } /// /// Used to configure column sort settings in the GUI /// public ColumnSort ColumnSort { get; set; } /// /// A list of directories containing games to be used to load games into the games list /// public List GameDirs { get; set; } /// /// Enable or disable custom themes in the GUI /// public bool EnableCustomTheme { get; set; } /// /// Path to custom GUI theme /// public string CustomThemePath { get; set; } /// /// Enable or disable keyboard support (Independent from controllers binding) /// public bool EnableKeyboard { get; set; } /// /// Hotkey Keyboard Bindings /// public KeyboardHotkeys Hotkeys { get; set; } /// /// Keyboard control bindings /// public List KeyboardConfig { get; set; } /// /// Controller control bindings /// public List ControllerConfig { get; set; } /// /// Loads a configuration file from disk /// /// The path to the JSON configuration file public static ConfigurationFileFormat Load(string path) { return JsonHelper.DeserializeFromFile(path); } /// /// Save a configuration file to disk /// /// The path to the JSON configuration file public void SaveConfig(string path) { File.WriteAllText(path, JsonHelper.Serialize(this, true)); } } }