using Dalamud.Configuration; using Dalamud.Game.Text; using FFXIVClientStructs.FFXIV.Client.UI.Agent; using LLib.ImGui; namespace Questionable; internal sealed class Configuration : IPluginConfiguration { public const int PluginSetupVersion = 3; public int Version { get; set; } = 1; public int PluginSetupCompleteVersion { get; set; } public GeneralConfiguration General { get; } = new(); public NotificationConfiguration Notifications { get; } = new(); public AdvancedConfiguration Advanced { get; } = new(); public WindowConfig DebugWindowConfig { get; } = new(); public WindowConfig ConfigWindowConfig { get; } = new(); internal bool IsPluginSetupComplete() => PluginSetupCompleteVersion == PluginSetupVersion; internal void MarkPluginSetupComplete() => PluginSetupCompleteVersion = PluginSetupVersion; internal sealed class GeneralConfiguration { public ECombatModule CombatModule { get; set; } = ECombatModule.BossMod; public uint MountId { get; set; } = 71; public GrandCompany GrandCompany { get; set; } = GrandCompany.None; public bool HideInAllInstances { get; set; } = true; public bool UseEscToCancelQuesting { get; set; } = true; public bool ShowIncompleteSeasonalEvents { get; set; } = true; public bool ConfigureTextAdvance { get; set; } = true; } internal sealed class NotificationConfiguration { public bool Enabled { get; set; } = true; public XivChatType ChatType { get; set; } = XivChatType.Debug; public bool ShowTrayMessage { get; set; } public bool FlashTaskbar { get; set; } } internal sealed class AdvancedConfiguration { public bool DebugOverlay { get; set; } public bool NeverFly { get; set; } public bool AdditionalStatusInformation { get; set; } } internal enum ECombatModule { None, BossMod, RotationSolverReborn, } }