diff --git a/ECommons b/ECommons index 1a7ab8659..e134a5a3d 160000 --- a/ECommons +++ b/ECommons @@ -1 +1 @@ -Subproject commit 1a7ab86593549d4e8e2f7370d70415b988d9aa73 +Subproject commit e134a5a3ddc9f9c259e7134365b267a71def3630 diff --git a/RotationSolver.Basic/Configuration/Configs.cs b/RotationSolver.Basic/Configuration/Configs.cs index 1899fa440..96d4d3c3e 100644 --- a/RotationSolver.Basic/Configuration/Configs.cs +++ b/RotationSolver.Basic/Configuration/Configs.cs @@ -2,9 +2,6 @@ using Dalamud.Utility; using ECommons.DalamudServices; using ECommons.ExcelServices; -using FFXIVClientStructs.STD; -using RotationSolver.Basic.Configuration.Conditions; -using System; namespace RotationSolver.Basic.Configuration; @@ -38,12 +35,16 @@ public int GetValue(PluginConfigInt config) public bool GetValue(PluginConfigBool config) { - var rotation = DataCenter.RightNowRotation; - var set = DataCenter.RightSet; - if (rotation != null && set != null) + if (config != PluginConfigBool.UseAdditionalConditions + && GetBoolRaw(PluginConfigBool.UseAdditionalConditions)) { - if (GetEnableBoolRaw(config) && set.GetEnableCondition(config).IsTrue(rotation)) return true; - if (GetDisableBoolRaw(config) && set.GetDisableCondition(config).IsTrue(rotation)) return false; + var rotation = DataCenter.RightNowRotation; + var set = DataCenter.RightSet; + if (rotation != null && set != null) + { + if (GetEnableBoolRaw(config) && set.GetEnableCondition(config).IsTrue(rotation)) return true; + if (GetDisableBoolRaw(config) && set.GetDisableCondition(config).IsTrue(rotation)) return false; + } } return GetBoolRaw(config); @@ -362,6 +363,8 @@ public enum PluginConfigBool : byte [Default(true)] UseResourcesAction, [Default(true)] SayHelloToUsers, [Default(false)] JustSayHelloOnce, + + [Default(false)] UseAdditionalConditions, } public enum PluginConfigFloat : byte diff --git a/RotationSolver/Localization/ConfigTranslation.cs b/RotationSolver/Localization/ConfigTranslation.cs index 3e207f55c..2fc6861ac 100644 --- a/RotationSolver/Localization/ConfigTranslation.cs +++ b/RotationSolver/Localization/ConfigTranslation.cs @@ -18,7 +18,6 @@ internal static class ConfigTranslation _ => string.Empty, }; - public static string ToName(this JobConfigInt config) => config switch { JobConfigInt.AddDotGCDCount => LocalizationManager.RightLang.ConfigWindow_Param_AddDotGCDCount, @@ -58,6 +57,7 @@ internal static class ConfigTranslation PluginConfigBool.UseStopCasting => LocalizationManager.RightLang.ConfigWindow_Param_UseStopCasting, PluginConfigBool.SayHelloToUsers => LocalizationManager.RightLang.ConfigWindow_Basic_SayHelloToUsers, PluginConfigBool.JustSayHelloOnce => LocalizationManager.RightLang.ConfigWindow_Basic_JustSayHelloOnce, + PluginConfigBool.UseAdditionalConditions => LocalizationManager.RightLang.ConfigWindow_Basic_UseAdditionalConditions, // UI PluginConfigBool.HideWarning => LocalizationManager.RightLang.ConfigWindow_UI_HideWarning, diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 9b1ab377b..75c3f1fcc 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -785,5 +785,6 @@ internal class Strings public string ConfigWindow_Auto_BurstConditionSet { get; set; } = "Burst Forced Condition"; public string ConfigWindow_Auto_SpeedConditionSet { get; set; } = "Speed Forced Condition"; public string ConfigWindow_ConditionSetDesc { get; set; } = "The Condition set you chose, click to modify."; + public string ConfigWindow_Basic_UseAdditionalConditions { get; set; } = "Use additional conditions"; } \ No newline at end of file diff --git a/RotationSolver/UI/RotationConfigWindow_Config.cs b/RotationSolver/UI/RotationConfigWindow_Config.cs index 523741ed5..22ee48a32 100644 --- a/RotationSolver/UI/RotationConfigWindow_Config.cs +++ b/RotationSolver/UI/RotationConfigWindow_Config.cs @@ -319,6 +319,8 @@ private static void DrawBasicOthers() new CheckBoxSearchPlugin(PluginConfigBool.SayHelloToUsers), new CheckBoxSearchPlugin(PluginConfigBool.JustSayHelloOnce), + + new CheckBoxSearchPlugin(PluginConfigBool.UseAdditionalConditions), }; private static readonly ISearchable[] _basicSwitchTurnOn = new ISearchable[] diff --git a/RotationSolver/UI/SearchableConfigs/CheckBoxSearch.cs b/RotationSolver/UI/SearchableConfigs/CheckBoxSearch.cs index 704259aec..aff9afdd8 100644 --- a/RotationSolver/UI/SearchableConfigs/CheckBoxSearch.cs +++ b/RotationSolver/UI/SearchableConfigs/CheckBoxSearch.cs @@ -1,12 +1,10 @@ using Dalamud.Interface.Internal; using Dalamud.Interface.Utility; -using ECommons.DalamudServices; using ECommons.ExcelServices; using RotationSolver.Basic.Configuration; using RotationSolver.Basic.Configuration.Conditions; using RotationSolver.Localization; using RotationSolver.UI.SearchableConfigs; -using RotationSolver.Updaters; namespace RotationSolver.UI.SearchableSettings; @@ -24,13 +22,14 @@ private abstract class CheckBoxConditionAbstract : CheckBoxSearch public override string ID => _config.ToString() + Name; + public override bool ShowInChild => Service.Config.GetValue(PluginConfigBool.UseAdditionalConditions); + public CheckBoxConditionAbstract(PluginConfigBool config) : base() { _config = config; AdditionalDraw = () => { GetCondition(DataCenter.Job)?.DrawMain(DataCenter.RightNowRotation); - ImGui.Separator(); }; } @@ -110,15 +109,16 @@ protected override ConditionSet GetCondition(Job job) public override string Command => _config.ToCommand(); - private static readonly Action _emptyAction = () => { }; + public override bool AlwaysShowChildren => Service.Config.GetValue(PluginConfigBool.UseAdditionalConditions); + public CheckBoxSearchPlugin(PluginConfigBool config, params ISearchable[] children) - :base(new ISearchable[] + :base(config == PluginConfigBool.UseAdditionalConditions ? children + :new ISearchable[] { new CheckBoxEnable(config), new CheckBoxDisable(config), }.Concat(children).ToArray()) { _config = config; - AdditionalDraw = _emptyAction; } protected override bool GetValue(Job job) @@ -145,6 +145,8 @@ internal abstract class CheckBoxSearch : Searchable public Action AdditionalDraw { get; set; } = null; + public virtual bool AlwaysShowChildren => false; + public CheckBoxSearch(params ISearchable[] children) { Children = children; @@ -162,6 +164,8 @@ protected virtual void DrawChildren(Job job) var lastIs = false; foreach (var child in Children) { + if (!child.ShowInChild) continue; + var thisIs = child is CheckBoxSearch c && c.Action != ActionID.None && IconSet.GetTexture(c.Action, out var texture); if (lastIs && thisIs) { @@ -207,7 +211,7 @@ protected override void DrawMain(Job job) } else if (hasSub) { - if (enable && hasChild || hasAdditional) + if (enable || AlwaysShowChildren) { var x = ImGui.GetCursorPosX(); var drawBody = ImGui.TreeNode(name); diff --git a/RotationSolver/UI/SearchableConfigs/ISearchable.cs b/RotationSolver/UI/SearchableConfigs/ISearchable.cs index 5104a5a9d..2a46c3268 100644 --- a/RotationSolver/UI/SearchableConfigs/ISearchable.cs +++ b/RotationSolver/UI/SearchableConfigs/ISearchable.cs @@ -7,6 +7,7 @@ internal interface ISearchable CheckBoxSearch Parent { get; set; } string SearchingKeys { get; } + bool ShowInChild { get; } void Draw(Job job); } diff --git a/RotationSolver/UI/SearchableConfigs/Searchable.cs b/RotationSolver/UI/SearchableConfigs/Searchable.cs index dd8948b25..c75e9b79d 100644 --- a/RotationSolver/UI/SearchableConfigs/Searchable.cs +++ b/RotationSolver/UI/SearchableConfigs/Searchable.cs @@ -4,7 +4,6 @@ using Lumina.Excel.GeneratedSheets; using RotationSolver.Localization; using RotationSolver.UI.SearchableSettings; -using RotationSolver.Updaters; namespace RotationSolver.UI.SearchableConfigs; @@ -34,6 +33,8 @@ internal abstract class Searchable : ISearchable /// public Job[] Jobs { get; set; } + public virtual bool ShowInChild => true; + public unsafe void Draw(Job job) { var canDraw = true;