using HSUI.Config; using HSUI.Config.Attributes; using System; using System.Collections.Generic; using System.Numerics; namespace HSUI.Interface.GeneralElements { [Disableable(false)] [Section("Misc")] [SubSection("HUD Options", 0)] public class HUDOptionsConfig : PluginConfigObject { [Checkbox("Global HUD Position")] [Order(5)] public bool UseGlobalHudShift = false; [DragInt2("Position", min = -4000, max = 4000)] [Order(6, collapseWith = nameof(UseGlobalHudShift))] public Vector2 HudOffset = new(0, 0); [Checkbox("Dim HSUI's settings window when not focused")] [Order(10)] public bool DimConfigWindow = false; [Checkbox("Automatically disable HUD elements preview", help = "If enabled, all HUD elements preview modes are disabled when HSUI's setting window is closed.")] [Order(11)] public bool AutomaticPreviewDisabling = true; [Checkbox("Use HSUI style", help = "If enabled, HSUI will use its own style for the setting window instead of the general Dalamud style.")] [Order(12)] public bool OverrideDalamudStyle = true; [Checkbox("Mouseover", separator = true)] [Order(15)] public bool MouseoverEnabled = true; [Checkbox("Automatic Mode", help = "When enabled: All your actions will automatically assume mouseover when your cursor is on top of a unit frame.\n" + "Mouseover macros or other mouseover plugins are not necessary and WON'T WORK in this mode!\n\n" + "When disabled: HSUI unit frames will behave like the game's ones.\n" + "You'll need to use mouseover macros or other mouseover related plugins in this mode.")] [Order(16, collapseWith = nameof(MouseoverEnabled))] public bool MouseoverAutomaticMode = true; //[Checkbox("Support Special Mouse Clicks", isMonitored = true, spacing = true, help = // "When enabled HSUI will attempt to support special mouse binds (mousewheel, M4, M5, etc) when the cursor\n" + // "is hovering on top of HSUI's unit frames.\n\n" + // "If you don't have actions bound to these mouse buttons, it is adviced that you leave this feature disabled.\n\n" + // "This feature can cause some issues such as click inputs not working in HSUI, or through out the game.\n" + // "If you run into these kinds of issues, you can try reloading HSUI, restarting the game, or disabling this feature.")] //[Order(17)] public bool InputsProxyEnabled = false; [Checkbox("Hide Default HUD When Replaced", isMonitored = true, separator = true, help = "When enabled, HSUI automatically hides the default game HUD elements that HSUI replaces.\n" + "For example: when HSUI hotbars are on, game hotbars are hidden; when HSUI unit frames are on, game parameter/target bars are hidden; etc.")] [Order(38)] public bool HideDefaultHudWhenReplaced = true; [Checkbox("Hide Default Job Gauges", isMonitored = true)] [Order(40)] public bool HideDefaultJobGauges = false; [Checkbox("Hide Default Castbar", isMonitored = true)] [Order(45)] public bool HideDefaultCastbar = false; [Checkbox("Hide Default Pulltimer", isMonitored = true)] [Order(50)] public bool HideDefaultPulltimer = false; [Checkbox("Use Regional Number Format", help = "When enabled, HSUI will use your system's regional format settings when showing numbers.\nWhen disabled, HSUI will use English number formatting instead.", separator = true)] [Order(60)] public bool UseRegionalNumberFormats = true; public new static HUDOptionsConfig DefaultConfig() => new(); } public class HUDOptionsConfigConverter : PluginConfigObjectConverter { public HUDOptionsConfigConverter() { Func func = (value) => { Vector2[] array = new Vector2[4]; for (int i = 0; i < 4; i++) { array[i] = value; } return array; }; TypeToClassFieldConverter castBar = new TypeToClassFieldConverter( "CastBarOriginalPositions", new Vector2[] { Vector2.Zero, Vector2.Zero, Vector2.Zero, Vector2.Zero }, func ); TypeToClassFieldConverter pullTimer = new TypeToClassFieldConverter( "PulltimerOriginalPositions", new Vector2[] { Vector2.Zero, Vector2.Zero, Vector2.Zero, Vector2.Zero }, func ); NewClassFieldConverter, Dictionary[]> jobGauge = new NewClassFieldConverter, Dictionary[]>( "JobGaugeOriginalPositions", new Dictionary[] { new(), new(), new(), new() }, (oldValue) => { Dictionary[] array = new Dictionary[4]; for (int i = 0; i < 4; i++) { array[i] = oldValue; } return array; }); FieldConvertersMap.Add("CastBarOriginalPosition", castBar); FieldConvertersMap.Add("PulltimerOriginalPosition", pullTimer); FieldConvertersMap.Add("JobGaugeOriginalPosition", jobGauge); } public override bool CanConvert(Type objectType) { return objectType == typeof(HUDOptionsConfig); } } }