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;
}