From b60784b8dfcfed0e6132ac044a0e339e5f0795a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=89=E9=B8=AD=E8=9B=8B?= Date: Sun, 28 Apr 2024 00:14:43 +0800 Subject: [PATCH] execute macro even if not successfully recognized --- .../GameTask/AutoFight/OneKeyFightTask.cs | 19 ++++++++++++++++--- .../View/Pages/MacroSettingsPage.xaml | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/BetterGenshinImpact/GameTask/AutoFight/OneKeyFightTask.cs b/BetterGenshinImpact/GameTask/AutoFight/OneKeyFightTask.cs index 35533e17..72f40755 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/OneKeyFightTask.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/OneKeyFightTask.cs @@ -31,6 +31,8 @@ public class OneKeyFightTask : Singleton private int activeMacroPriority = -1; private DateTime _lastUpdateTime = DateTime.MinValue; + private CombatScenes? _currentCombatScenes; + public void KeyDown() { if (_isKeyDown || !IsEnabled()) @@ -129,11 +131,22 @@ public class OneKeyFightTask : Singleton var combatScenes = new CombatScenes().InitializeTeam(content); if (!combatScenes.CheckTeamInitialized()) { - Logger.LogError("队伍角色识别失败"); - return Task.CompletedTask; + if (_currentCombatScenes == null) + { + Logger.LogError("首次队伍角色识别失败"); + return Task.CompletedTask; + } + else + { + Logger.LogWarning("队伍角色识别失败,使用上次识别结果,队伍未切换时无影响"); + } + } + else + { + _currentCombatScenes = combatScenes; } // 找到出战角色 - var activeAvatar = combatScenes.Avatars.First(avatar => avatar.IsActive(content)); + var activeAvatar = _currentCombatScenes.Avatars.First(avatar => avatar.IsActive(content)); if (_avatarMacros != null && _avatarMacros.TryGetValue(activeAvatar.Name, out var combatCommands)) { diff --git a/BetterGenshinImpact/View/Pages/MacroSettingsPage.xaml b/BetterGenshinImpact/View/Pages/MacroSettingsPage.xaml index ff3de82f..72457663 100644 --- a/BetterGenshinImpact/View/Pages/MacroSettingsPage.xaml +++ b/BetterGenshinImpact/View/Pages/MacroSettingsPage.xaml @@ -36,7 +36,7 @@