From 4f6824e591f61008d09edb9d5d3f72117ef66504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <53346444+ArchiDog1998@users.noreply.github.com> Date: Thu, 21 Mar 2024 19:16:57 +0800 Subject: [PATCH] fix: default target. --- Directory.Build.props | 2 +- Resources/RotationSolverRecord.json | 2 +- RotationSolver.Basic/Actions/BaseAction.cs | 8 +++----- RotationSolver.Basic/Actions/IBaseAction.cs | 2 +- RotationSolver.Basic/Rotations/CustomRotation_GCD.cs | 2 +- RotationSolver/Commands/RSCommands_Actions.cs | 11 ++++++++--- RotationSolver/UI/PainterManager.cs | 6 ++---- RotationSolver/UI/RotationConfigWindow.cs | 5 +---- RotationSolver/Updaters/ActionUpdater.cs | 2 +- RotationSolver/Updaters/MajorUpdater.cs | 2 +- RotationSolver/Updaters/StateUpdater.cs | 4 ++-- 11 files changed, 22 insertions(+), 24 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index cc3fb6fc8..a300134b1 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,7 +3,7 @@ net8.0-windows enable ArchiTed - 4.2.1.1 + 4.2.1.2 x64 AnyCPU latest diff --git a/Resources/RotationSolverRecord.json b/Resources/RotationSolverRecord.json index 890190ec2..2d9bfbd6f 100644 --- a/Resources/RotationSolverRecord.json +++ b/Resources/RotationSolverRecord.json @@ -1,5 +1,5 @@ { - "ClickingCount": 107756, + "ClickingCount": 107940, "SayingHelloCount": 176, "SaidUsers": [] } \ No newline at end of file diff --git a/RotationSolver.Basic/Actions/BaseAction.cs b/RotationSolver.Basic/Actions/BaseAction.cs index 75d3f8e62..12f1747c3 100644 --- a/RotationSolver.Basic/Actions/BaseAction.cs +++ b/RotationSolver.Basic/Actions/BaseAction.cs @@ -11,7 +11,7 @@ namespace RotationSolver.Basic.Actions; public class BaseAction : IBaseAction { /// - public TargetResult? Target { get; set; } = null; + public TargetResult Target { get; set; } = new(Player.Object, [], null); /// public TargetResult? PreviewTarget { get; private set; } = null; @@ -152,7 +152,7 @@ public bool CanUse(out IAction act, bool skipStatusProvideCheck = false, bool sk if (PreviewTarget == null) return false; if (!IBaseAction.ActionPreview) { - Target = PreviewTarget; + Target = PreviewTarget.Value; } return true; @@ -175,9 +175,7 @@ public bool CanUse(out IAction act, CanUseOption option, byte gcdCountForAbility /// public unsafe bool Use() { - if (!Target.HasValue) return false; - - var target = Target.Value; + var target = Target; var adjustId = AdjustedID; if (TargetInfo.IsTargetArea) diff --git a/RotationSolver.Basic/Actions/IBaseAction.cs b/RotationSolver.Basic/Actions/IBaseAction.cs index 4c45d771f..c035307a8 100644 --- a/RotationSolver.Basic/Actions/IBaseAction.cs +++ b/RotationSolver.Basic/Actions/IBaseAction.cs @@ -23,7 +23,7 @@ public interface IBaseAction : IAction /// /// The target to use on. /// - TargetResult? Target { get; set; } + TargetResult Target { get; set; } /// /// The target for preview. diff --git a/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs b/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs index 82ae0224a..602c110cd 100644 --- a/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs +++ b/RotationSolver.Basic/Rotations/CustomRotation_GCD.cs @@ -32,7 +32,7 @@ partial class CustomRotation if (DataCenter.MergedStatus.HasFlag(AutoStatus.MoveForward) && MoveForwardGCD(out act)) { - if (act is IBaseAction b && ObjectHelper.DistanceToPlayer(b.Target?.Target) > 5) return act; + if (act is IBaseAction b && ObjectHelper.DistanceToPlayer(b.Target.Target) > 5) return act; } IBaseAction.TargetOverride = TargetType.Heal; diff --git a/RotationSolver/Commands/RSCommands_Actions.cs b/RotationSolver/Commands/RSCommands_Actions.cs index 1c45d64eb..e19c870cb 100644 --- a/RotationSolver/Commands/RSCommands_Actions.cs +++ b/RotationSolver/Commands/RSCommands_Actions.cs @@ -60,7 +60,7 @@ public static void DoAction() if (nextAction is BaseAction act1 && act1.Info.IsPvP && !act1.Setting.IsFriendly && act1.TargetInfo.IsSingleTarget - && act1.Target?.Target is PlayerCharacter p && p != Player.Object) + && act1.Target.Target is PlayerCharacter p && p != Player.Object) { var hash = p.EncryptString(); @@ -109,8 +109,8 @@ public static void DoAction() //} #endif //Change Target - var tar = (act.Target == null || act.Target?.Target == Player.Object) - ? act.Target?.AffectedTargets.FirstOrDefault() : act.Target?.Target; + var tar = act.Target.Target == Player.Object + ? act.Target.AffectedTargets.FirstOrDefault() : act.Target.Target; if (tar != null && tar != Player.Object && tar.IsEnemy()) { @@ -123,6 +123,11 @@ public static void DoAction() } } } + + } + else + { + Svc.Log.Error($"Failed to use the action {nextAction} ({nextAction.AdjustedID})"); } } diff --git a/RotationSolver/UI/PainterManager.cs b/RotationSolver/UI/PainterManager.cs index fb29d818e..d7fc475d3 100644 --- a/RotationSolver/UI/PainterManager.cs +++ b/RotationSolver/UI/PainterManager.cs @@ -193,15 +193,13 @@ private static void UpdateTarget() if (ActionUpdater.NextAction is not BaseAction act) return; - if (act.Target == null) return; - var d = DateTime.Now.Millisecond / 1000f; var ratio = (float)DrawingExtensions.EaseFuncRemap(EaseFuncType.None, EaseFuncType.Cubic)(d); if (Service.Config.TargetIconSize > 0) { _targetImage.Enable = true; - _targetImage.Position = act.Target?.Position ?? Player.Object.Position; + _targetImage.Position = act.Target.Position ?? Player.Object.Position; if (act.GetTexture(out var texture, true)) { _targetImage.Image = texture; @@ -212,7 +210,7 @@ private static void UpdateTarget() { _target.Enable = true; _target.Color = ImGui.GetColorU32(Service.Config.TargetColor); - _target.Center = act.Target?.Position ?? Player.Object.Position; + _target.Center = act.Target.Position ?? Player.Object.Position; _target.Radius = targetRadius * ratio; } } diff --git a/RotationSolver/UI/RotationConfigWindow.cs b/RotationSolver/UI/RotationConfigWindow.cs index be469d5bd..0977a1b13 100644 --- a/RotationSolver/UI/RotationConfigWindow.cs +++ b/RotationSolver/UI/RotationConfigWindow.cs @@ -1550,10 +1550,7 @@ static void DrawActionDebug() ImGui.Text($"Can Use: {action.CanUse(out _, skipClippingCheck: true)} "); ImGui.Text("IgnoreCastCheck:" + action.CanUse(out _, skipClippingCheck: true, skipCastingCheck: true).ToString()); - if (action.Target != null) - { - ImGui.Text("Target Name: " + action.Target.Value.Target?.Name ?? string.Empty); - } + ImGui.Text("Target Name: " + action.Target.Target?.Name ?? string.Empty); } catch { diff --git a/RotationSolver/Updaters/ActionUpdater.cs b/RotationSolver/Updaters/ActionUpdater.cs index fefd7aeb2..502ae72f4 100644 --- a/RotationSolver/Updaters/ActionUpdater.cs +++ b/RotationSolver/Updaters/ActionUpdater.cs @@ -42,7 +42,7 @@ internal static IBaseAction? NextGCDAction circle.Owner = sector.Owner = rectangle.Owner = player; if (value == null) return; - var target = value.Target?.Target ?? player; + var target = value.Target.Target ?? player; var range = value.Action.EffectRange; var size = new Vector3(range, gcdHeight, range); diff --git a/RotationSolver/Updaters/MajorUpdater.cs b/RotationSolver/Updaters/MajorUpdater.cs index cbd71bfd8..fad6105a2 100644 --- a/RotationSolver/Updaters/MajorUpdater.cs +++ b/RotationSolver/Updaters/MajorUpdater.cs @@ -53,6 +53,7 @@ private unsafe static void FrameworkUpdate(IFramework framework) { SocialUpdater.UpdateSocial(); PreviewUpdater.UpdatePreview(); + TargetUpdater.UpdateTarget(); if (Service.Config.TeachingMode && ActionUpdater.NextAction != null) { @@ -171,7 +172,6 @@ private static void UpdateWork() try { - TargetUpdater.UpdateTarget(); StateUpdater.UpdateState(); if (Service.Config.AutoLoadCustomRotations) diff --git a/RotationSolver/Updaters/StateUpdater.cs b/RotationSolver/Updaters/StateUpdater.cs index 13683c93c..baf232413 100644 --- a/RotationSolver/Updaters/StateUpdater.cs +++ b/RotationSolver/Updaters/StateUpdater.cs @@ -44,8 +44,8 @@ private static AutoStatus StatusFromAutomatic() { var id = ActionUpdater.NextGCDAction.ID; if (ConfigurationHelper.ActionPositional.TryGetValue((ActionID)id, out var positional) - && positional != ActionUpdater.NextGCDAction.Target?.Target?.FindEnemyPositional() - && (ActionUpdater.NextGCDAction.Target?.Target?.HasPositional() ?? false)) + && positional != ActionUpdater.NextGCDAction.Target.Target?.FindEnemyPositional() + && (ActionUpdater.NextGCDAction.Target.Target?.HasPositional() ?? false)) { status |= AutoStatus.Positional; }