using StoicGoose.Common.Utilities; using System.Collections.Generic; public sealed class Configuration : ConfigurationBase { //[DisplayName("General")] //[Description("General settings.")] public GeneralConfiguration General { get; set; } = new GeneralConfiguration(); //[DisplayName("Video")] //[Description("Settings related to video output.")] public VideoConfiguration Video { get; set; } = new VideoConfiguration(); //[DisplayName("Sound")] //[Description("Settings related to sound output.")] public SoundConfiguration Sound { get; set; } = new SoundConfiguration(); //[DisplayName("Input")] //[Description("Settings related to emulation input.")] public InputConfiguration Input { get; set; } = new InputConfiguration(); } public sealed class GeneralConfiguration : ConfigurationBase { //[DisplayName("Prefer Original WS")] //[Description("Prefer emulation of the original non-Color system.")] public bool PreferOriginalWS { get; set; } = false; //[DisplayName("Use Bootstrap ROM")] //[Description("Toggle using WonderSwan bootstrap ROM images.")] public bool UseBootstrap { get; set; } = false; //[DisplayName("WS Bootstrap ROM Path")] //[Description("Path to the WonderSwan bootstrap ROM image to use.")] public string BootstrapFile { get; set; } = string.Empty; //[DisplayName("WSC Bootstrap ROM Path")] //[Description("Path to the WonderSwan Color bootstrap ROM image to use.")] public string BootstrapFileWSC { get; set; } = string.Empty; //[DisplayName("Limit FPS")] //[Description("Toggle limiting the framerate to the system's native ~75.47 Hz.")] public bool LimitFps { get; set; } = true; //[DisplayName("Enable Cheats")] //[Description("Toggle using the cheat system.")] public bool EnableCheats { get; set; } = true; //[DisplayName("Recent Files")] //[Description("List of recently loaded files.")] //public List RecentFiles { get; set; } = new List(15); } public sealed class VideoConfiguration : ConfigurationBase { //[DisplayName("Screen Size")] //[Description("Size of the emulated screen, in times original display resolution.")] public int ScreenSize { get; set; } = 3; //[DisplayName("Shader")] //[Description("Currently selected shader.")] public string Shader { get; set; } = string.Empty; //[DisplayName("Brightness")] //[Description("Adjust the brightness of the emulated screen, in percent.")] //[Range(-100, 100)] public int Brightness { get; set; } = 0; //[DisplayName("Contrast")] //[Description("Adjust the contrast of the emulated screen, in percent.")] //[Range(0, 200)] public int Contrast { get; set; } = 100; //[DisplayName("Saturation")] //[Description("Adjust the saturation of the emulated screen, in percent.")] //[Range(0, 200)] public int Saturation { get; set; } = 100; } public sealed class SoundConfiguration : ConfigurationBase { //[DisplayName("Mute")] //[Description("Toggles muting all sound output.")] public bool Mute { get; set; } = false; //[DisplayName("Low-Pass Filter")] //[Description("Toggles low-pass filter for all sound output.")] public bool LowPassFilter { get; set; } = true; } public sealed class InputConfiguration : ConfigurationBase { //[DisplayName("Automatic Remapping")] //[Description("Automatically remap X-/Y-pads with game orientation.")] public bool AutoRemap { get; set; } = true; //[DisplayName("Game Controls")] //[Description("Controls related to game input, i.e. X-/Y-pads, etc.")] public Dictionary> GameControls { get; set; } = new Dictionary>(); //[DisplayName("System Controls")] //[Description("Controls related to hardware functions, i.e. volume button.")] public Dictionary> SystemControls { get; set; } = new Dictionary>(); }