diff --git a/RotationSolver/Configuration/PluginConfiguration.cs b/RotationSolver/Configuration/PluginConfiguration.cs index 3798972e3..4497dc4fb 100644 --- a/RotationSolver/Configuration/PluginConfiguration.cs +++ b/RotationSolver/Configuration/PluginConfiguration.cs @@ -126,6 +126,7 @@ public class PluginConfiguration : IPluginConfiguration public bool UseStopCasting = false; public bool EsunaAll = false; + public bool OnlyAttackInView = false; public string PositionalErrorText = string.Empty; diff --git a/RotationSolver/Localization/Strings_Major.cs b/RotationSolver/Localization/Strings_Major.cs index dbe9c4a8a..90a2362fc 100644 --- a/RotationSolver/Localization/Strings_Major.cs +++ b/RotationSolver/Localization/Strings_Major.cs @@ -195,6 +195,8 @@ internal partial class Strings public string Configwindow_Param_MoveTargetAngle { get; set; } = "The size of the sector angle that can be selected as the moveable target"; public string Configwindow_Param_MoveTargetAngleDesc { get; set; } = "If the selection mode is based on character facing, i.e., targets within the character's viewpoint are movable targets. \nIf the selection mode is screen-centered, i.e., targets within a sector drawn upward from the character's point are movable targets."; public string Configwindow_Param_ChangeTargetForFate { get; set; } = "Select only Fate targets in Fate"; + public string Configwindow_Param_OnlyAttackInView { get; set; } = "Only attack the target in view."; + public string Configwindow_Param_MoveTowardsScreen { get; set; } = "Using movement actions towards the object in the center of the screen"; public string Configwindow_Param_MoveTowardsScreenDesc { get; set; } = "Using movement actions towards the object in the center of the screen, otherwise toward the facing object."; public string Configwindow_Param_RaiseAll { get; set; } = "Raise all (include passerby)"; diff --git a/RotationSolver/Updaters/TargetUpdater_Hostile.cs b/RotationSolver/Updaters/TargetUpdater_Hostile.cs index a2121489b..568ff1674 100644 --- a/RotationSolver/Updaters/TargetUpdater_Hostile.cs +++ b/RotationSolver/Updaters/TargetUpdater_Hostile.cs @@ -85,6 +85,11 @@ private unsafe static void UpdateHostileTargets(IEnumerable allTarg if (b.StatusList.Any(StatusHelper.IsInvincible)) return false; + if (Service.Configuration.OnlyAttackInView) + { + if(!Service.GameGui.WorldToScreen(b.Position, out _)) return false; + } + return true; }); diff --git a/RotationSolver/Windows/RotationConfigWindow_Debug.cs b/RotationSolver/Windows/RotationConfigWindow_Debug.cs index d84581902..9e53bea61 100644 --- a/RotationSolver/Windows/RotationConfigWindow_Debug.cs +++ b/RotationSolver/Windows/RotationConfigWindow_Debug.cs @@ -96,6 +96,7 @@ private unsafe void DrawTargetData() ImGui.Text("EventType: " + b.GetEventType().ToString()); ImGui.Text("NamePlate: " + b.GetNamePlateIcon().ToString()); ImGui.Text("StatusFlags: " + b.StatusFlags.ToString()); + ImGui.Text("InView: " + Service.GameGui.WorldToScreen(b.Position, out _).ToString()); foreach (var status in b.StatusList) { diff --git a/RotationSolver/Windows/RotationConfigWindow_Param.cs b/RotationSolver/Windows/RotationConfigWindow_Param.cs index 8228dccf2..a0232b123 100644 --- a/RotationSolver/Windows/RotationConfigWindow_Param.cs +++ b/RotationSolver/Windows/RotationConfigWindow_Param.cs @@ -346,6 +346,9 @@ private void DrawParamTarget() DrawCheckBox(LocalizationManager.RightLang.Configwindow_Param_ChangeTargetForFate, ref Service.Configuration.ChangeTargetForFate); + DrawCheckBox(LocalizationManager.RightLang.Configwindow_Param_OnlyAttackInView, + ref Service.Configuration.OnlyAttackInView); + DrawCheckBox(LocalizationManager.RightLang.Configwindow_Param_MoveTowardsScreen, ref Service.Configuration.MoveTowardsScreenCenter, LocalizationManager.RightLang.Configwindow_Param_MoveTowardsScreenDesc);