From 7c6a5419315d1d3ce55d26231d292a14d5ff7997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Sat, 18 Mar 2023 23:56:55 +0800 Subject: [PATCH] fix: add time limit for recording key or button. --- RotationSolver.Basic/Data/RSCommandType.cs | 6 ++++-- RotationSolver.Basic/DataCenter.cs | 2 +- RotationSolver/UI/ControlWindow.cs | 4 +++- RotationSolver/Updaters/InputUpdater.cs | 8 +++++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/RotationSolver.Basic/Data/RSCommandType.cs b/RotationSolver.Basic/Data/RSCommandType.cs index 25c38e279..4e3849c28 100644 --- a/RotationSolver.Basic/Data/RSCommandType.cs +++ b/RotationSolver.Basic/Data/RSCommandType.cs @@ -2,7 +2,6 @@ public enum SpecialCommandType : byte { - None, EndSpecial, HealArea, HealSingle, @@ -14,14 +13,17 @@ public enum SpecialCommandType : byte MoveBack, AntiKnockback, Burst, + + None, } public enum StateCommandType : byte { - None, Cancel, Smart, Manual, + + None, } public enum OtherCommandType : byte diff --git a/RotationSolver.Basic/DataCenter.cs b/RotationSolver.Basic/DataCenter.cs index fced346fe..7a348d465 100644 --- a/RotationSolver.Basic/DataCenter.cs +++ b/RotationSolver.Basic/DataCenter.cs @@ -131,7 +131,7 @@ public static unsafe ushort FateId static SpecialCommandType _specialType = SpecialCommandType.EndSpecial; public static SpecialCommandType SpecialType => SpecialTimeLeft < 0 ? SpecialCommandType.EndSpecial : _specialType; - public static StateCommandType StateType { get; set; } + public static StateCommandType StateType { get; set; } = StateCommandType.Cancel; public static void SetSpecialType(SpecialCommandType specialType) { diff --git a/RotationSolver/UI/ControlWindow.cs b/RotationSolver/UI/ControlWindow.cs index 5fa53d394..6a4e1a0f1 100644 --- a/RotationSolver/UI/ControlWindow.cs +++ b/RotationSolver/UI/ControlWindow.cs @@ -73,7 +73,7 @@ public override void Draw() DrawCommandAction(61751, StateCommandType.Manual, ImGuiColors.DPSRed); - DrawCommandAction(61764, StateCommandType.Cancel, ImGuiColors.DPSRed); + DrawCommandAction(61764, StateCommandType.Cancel, ImGuiColors.DalamudWhite2); ImGui.SameLine(); @@ -279,6 +279,7 @@ static void DrawIAction(nint handle, string id, float width, SpecialCommandType } if(InputUpdater.RecordingSpecialType == SpecialCommandType.None) { + InputUpdater.RecordingTime = DateTime.Now; InputUpdater.RecordingSpecialType = command; Service.ToastGui.ShowQuest($"Recording: {command}", new Dalamud.Game.Gui.Toast.QuestToastOptions() @@ -319,6 +320,7 @@ static void DrawIAction(nint handle, string id, float width, StateCommandType co } if (InputUpdater.RecordingStateType == StateCommandType.None) { + InputUpdater.RecordingTime = DateTime.Now; InputUpdater.RecordingStateType = command; Service.ToastGui.ShowQuest($"Recording: {command}", new Dalamud.Game.Gui.Toast.QuestToastOptions() diff --git a/RotationSolver/Updaters/InputUpdater.cs b/RotationSolver/Updaters/InputUpdater.cs index 4ebb9e8a8..cd215db45 100644 --- a/RotationSolver/Updaters/InputUpdater.cs +++ b/RotationSolver/Updaters/InputUpdater.cs @@ -13,9 +13,16 @@ internal static class InputUpdater public static SpecialCommandType RecordingSpecialType { get ; set; } public static StateCommandType RecordingStateType { get ; set; } + public static DateTime RecordingTime { get; set; } = DateTime.MinValue; internal static void UpdateCommand() { + if(DateTime.Now - RecordingTime > TimeSpan.FromSeconds(10)) + { + RecordingSpecialType = SpecialCommandType.None; + RecordingStateType = StateCommandType.None; + } + foreach (var key in Service.KeyState.GetValidVirtualKeys()) { if (key is VirtualKey.CONTROL) continue; @@ -33,7 +40,6 @@ internal static void UpdateCommand() } } _keys[key] = value; - } foreach (var button in Enum.GetValues())