StoicGoose.Unity/Assets/Script/AppMain/Emulator/StoicGooseEmulator/Configuration.cs
2025-02-26 19:56:05 +08:00

91 lines
3.9 KiB
C#

using StoicGoose.Common.Utilities;
using System.Collections.Generic;
using System.ComponentModel;
public sealed class Configuration : ConfigurationBase<Configuration>
{
[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<GeneralConfiguration>
{
[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<string> RecentFiles { get; set; } = new List<string>(15);
}
public sealed class VideoConfiguration : ConfigurationBase<VideoConfiguration>
{
[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<SoundConfiguration>
{
[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<InputConfiguration>
{
[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<string, List<string>> GameControls { get; set; } = new Dictionary<string, List<string>>();
[DisplayName("System Controls")]
[Description("Controls related to hardware functions, i.e. volume button.")]
public Dictionary<string, List<string>> SystemControls { get; set; } = new Dictionary<string, List<string>>();
}