diff --git a/RotationSolver.Basic/Configuration/Configs.cs b/RotationSolver.Basic/Configuration/Configs.cs index 6812cc320..f66fca2fb 100644 --- a/RotationSolver.Basic/Configuration/Configs.cs +++ b/RotationSolver.Basic/Configuration/Configs.cs @@ -286,6 +286,7 @@ public enum PluginConfigBool : byte [Default(true)] AutoUpdateRotations, [Default(false)] ToggleManual, + [Default(false)] ToggleAuto, [Default(true)] OnlyShowWithHostileOrInDuty, [Default(false)] ShowControlWindow, [Default(false)] IsControlWindowLock, diff --git a/RotationSolver/Commands/RSCommands_BasicInfo.cs b/RotationSolver/Commands/RSCommands_BasicInfo.cs index be08ce37b..a8bcd42cc 100644 --- a/RotationSolver/Commands/RSCommands_BasicInfo.cs +++ b/RotationSolver/Commands/RSCommands_BasicInfo.cs @@ -24,7 +24,9 @@ private static void DoOneCommand(string str) { if (TryGetOneEnum(str, out var stateType)) { - DoStateCommandType(stateType); + var intStr = str.Split(' ', StringSplitOptions.RemoveEmptyEntries).LastOrDefault(); + if (!int.TryParse(intStr, out var index)) index = -1; + DoStateCommandType(stateType, index); } else if (TryGetOneEnum(str, out var specialType)) { diff --git a/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs b/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs index 573c22e2a..f8ba787f3 100644 --- a/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs +++ b/RotationSolver/Commands/RSCommands_StateSpecialCommand.cs @@ -21,21 +21,31 @@ private static void UpdateToast() }); } - private static unsafe void DoStateCommandType(StateCommandType stateType) => DoOneCommandType(EnumTranslations.ToSayout, role => + private static unsafe void DoStateCommandType(StateCommandType stateType, int index = -1) => DoOneCommandType(EnumTranslations.ToSayout, role => { - if (DataCenter.State && !DataCenter.IsManual - && stateType == StateCommandType.Auto) + if (DataCenter.State) { - var index = Service.Config.GetValue(Basic.Configuration.PluginConfigInt.TargetingIndex) + 1; - index %= Service.Config.GlobalConfig.TargetingTypes.Count; - Service.Config.SetValue(Basic.Configuration.PluginConfigInt.TargetingIndex, index); - } - - if (Service.Config.GetValue(Basic.Configuration.PluginConfigBool.ToggleManual) - && DataCenter.State && DataCenter.IsManual - && stateType == StateCommandType.Manual) - { - stateType = StateCommandType.Cancel; + if (DataCenter.IsManual && stateType == StateCommandType.Manual + && Service.Config.GetValue(Basic.Configuration.PluginConfigBool.ToggleManual)) + { + stateType = StateCommandType.Cancel; + } + else if (stateType == StateCommandType.Auto) + { + if (Service.Config.GetValue(Basic.Configuration.PluginConfigBool.ToggleAuto)) + { + stateType = StateCommandType.Cancel; + } + else + { + if (index == -1) + { + index = Service.Config.GetValue(Basic.Configuration.PluginConfigInt.TargetingIndex) + 1; + } + index %= Service.Config.GlobalConfig.TargetingTypes.Count; + Service.Config.SetValue(Basic.Configuration.PluginConfigInt.TargetingIndex, index); + } + } } switch (stateType) diff --git a/RotationSolver/Localization/ConfigTranslation.cs b/RotationSolver/Localization/ConfigTranslation.cs index 1e81875a4..0480980bd 100644 --- a/RotationSolver/Localization/ConfigTranslation.cs +++ b/RotationSolver/Localization/ConfigTranslation.cs @@ -53,6 +53,7 @@ internal static class ConfigTranslation PluginConfigBool.StartOnAttackedBySomeone => LocalizationManager.RightLang.ConfigWindow_Param_StartOnAttackedBySomeone, PluginConfigBool.UseWorkTask => LocalizationManager.RightLang.ConfigWindow_Param_UseWorkTask, PluginConfigBool.ToggleManual => LocalizationManager.RightLang.ConfigWindow_Param_ToggleManual, + PluginConfigBool.ToggleAuto => LocalizationManager.RightLang.ConfigWindow_Param_ToggleAuto, PluginConfigBool.UseStopCasting => LocalizationManager.RightLang.ConfigWindow_Param_UseStopCasting, // UI diff --git a/RotationSolver/Localization/Strings.cs b/RotationSolver/Localization/Strings.cs index 972d6b1f7..1dd88fe2f 100644 --- a/RotationSolver/Localization/Strings.cs +++ b/RotationSolver/Localization/Strings.cs @@ -99,6 +99,7 @@ internal partial class Strings public string ConfigWindow_Param_UseWorkTask { get; set; } = "Use work task for acceleration."; public string ConfigWindow_Param_ToggleManual { get; set; } = "Make Manual Command as toggle."; + public string ConfigWindow_Param_ToggleAuto { get; set; } = "Make Auto Command as toggle."; public string ConfigWindow_Param_WeaponDelay { get; set; } = "Set the range of random delay for GCD in second."; public string ConfigWindow_Param_DeathDelay { get; set; } = "Set the range of random delay for using revival abilities in seconds."; diff --git a/RotationSolver/UI/RotationConfigWindow_Config.cs b/RotationSolver/UI/RotationConfigWindow_Config.cs index fd1c482c5..edc33b82c 100644 --- a/RotationSolver/UI/RotationConfigWindow_Config.cs +++ b/RotationSolver/UI/RotationConfigWindow_Config.cs @@ -283,6 +283,7 @@ private static void DrawBasicAutoSwitch() private static readonly ISearchable[] _basicParamsSearchable = new ISearchable[] { new CheckBoxSearchPlugin(PluginConfigBool.ToggleManual), + new CheckBoxSearchPlugin(PluginConfigBool.ToggleAuto), new CheckBoxSearchPlugin(PluginConfigBool.UseWorkTask),