diff --git a/RotationSolver/Attributes/RotationDescAttribute.cs b/RotationSolver/Attributes/RotationDescAttribute.cs index bece5e2bf..b03b6a3a8 100644 --- a/RotationSolver/Attributes/RotationDescAttribute.cs +++ b/RotationSolver/Attributes/RotationDescAttribute.cs @@ -103,8 +103,9 @@ private RotationDescAttribute() } static readonly System.Numerics.Vector2 PIC_SIZE = new System.Numerics.Vector2(24, 24); + const float ATTR_INDENT = 170; - public bool Display(ICustomRotation rotation) + public void Display(ICustomRotation rotation) { var acts = rotation.AllActions; @@ -113,10 +114,9 @@ public bool Display(ICustomRotation rotation) bool hasDesc = !string.IsNullOrEmpty(Description); - if (!hasDesc && !allActions.Any()) return false; + if (!hasDesc && !allActions.Any()) return; + ImGui.Separator(); - ImGui.Columns(2, this.GetHashCode().ToString(), false); - ImGui.SetColumnWidth(0, 170); ImGui.Image(IconSet.GetTexture(IconID).ImGuiHandle, PIC_SIZE); ImGui.SameLine(); @@ -125,9 +125,10 @@ public bool Display(ICustomRotation rotation) ImGui.Text(" " + Type.ToName()); if (isOnCommand) ImGui.PopStyleColor(); - ImGui.NextColumn(); + ImGui.SameLine(); + ImGui.Indent(ATTR_INDENT); - if (hasDesc) + if (hasDesc) { ImGui.TextWrapped(Description); } @@ -147,9 +148,7 @@ public bool Display(ICustomRotation rotation) ImGui.Image(item.GetTexture().ImGuiHandle, PIC_SIZE); notStart = true; } - - ImGui.Columns(1); - return true; + ImGui.Unindent(ATTR_INDENT); } public static IEnumerable Merge(IEnumerable rotationDescAttributes) => from r in rotationDescAttributes diff --git a/RotationSolver/Rotations/CustomRotation/CustomRotation_BasicInfo.cs b/RotationSolver/Rotations/CustomRotation/CustomRotation_BasicInfo.cs index 1b93c2530..f7723dd59 100644 --- a/RotationSolver/Rotations/CustomRotation/CustomRotation_BasicInfo.cs +++ b/RotationSolver/Rotations/CustomRotation/CustomRotation_BasicInfo.cs @@ -49,7 +49,7 @@ public bool IsEnabled public BattleChara MoveTarget { get; private set; } - public virtual string Description { get; } = "It seems that the author didn't write a description!"; + public virtual string Description { get; } = string.Empty; /// /// Description about the actions. diff --git a/RotationSolver/Rotations/CustomRotation/CustomRotation_Display.cs b/RotationSolver/Rotations/CustomRotation/CustomRotation_Display.cs index 414987f25..aa19bb862 100644 --- a/RotationSolver/Rotations/CustomRotation/CustomRotation_Display.cs +++ b/RotationSolver/Rotations/CustomRotation/CustomRotation_Display.cs @@ -18,10 +18,11 @@ internal abstract partial class CustomRotation { const ImGuiWindowFlags flags = ImGuiWindowFlags.Tooltip | - ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoMove | - ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoSavedSettings | + ImGuiWindowFlags.NoBringToFrontOnFocus | + ImGuiWindowFlags.NoDecoration | + ImGuiWindowFlags.NoInputs| ImGuiWindowFlags.AlwaysAutoResize; public unsafe void Display(ICustomRotation[] rotations, bool canAddButton) @@ -31,7 +32,7 @@ public unsafe void Display(ICustomRotation[] rotations, bool canAddButton) var id = "Popup" + GetHashCode().ToString(); ImGui.SetWindowPos(id, ImGui.GetIO().MousePos); - ImGui.SetNextWindowSizeConstraints(new Vector2(350, 0), new Vector2(1000, 1000)); + ImGui.SetNextWindowSizeConstraints(new Vector2(0, 0), new Vector2(1000, 1500)); if (ImGui.Begin(id, flags)) { var t = IconSet. GetTexture(IconSet.GetJobIcon(this, IconType.Framed)); @@ -53,11 +54,9 @@ public unsafe void Display(ICustomRotation[] rotations, bool canAddButton) attrs.Add(RotationDescAttribute.MergeToOne(m.GetCustomAttributes())); } - bool last = true; foreach (var a in RotationDescAttribute.Merge(attrs)) { - if (last) ImGui.Separator(); - last = RotationDescAttribute.MergeToOne(a)?.Display(this) ?? false; + RotationDescAttribute.MergeToOne(a)?.Display(this); } ImGui.End(); diff --git a/RotationSolver/Updaters/ActionUpdater.cs b/RotationSolver/Updaters/ActionUpdater.cs index 0094fdcde..1bc3f9249 100644 --- a/RotationSolver/Updaters/ActionUpdater.cs +++ b/RotationSolver/Updaters/ActionUpdater.cs @@ -116,19 +116,20 @@ private static unsafe void UpdateWeaponTime() //确定读条时间。 if (WeaponElapsed < 0.3) _lastCastingTotal = castTotal; - //确认能力技的相关信息 var interval = Service.Configuration.WeaponInterval; - if (WeaponRemain < interval || WeaponElapsed == 0) + var checkRemain = WeaponRemain + 0.1f - Service.Configuration.WeaponAhead; + var checkElapsed = WeaponElapsed - 0.1f + Service.Configuration.WeaponAhead; + if (checkRemain < interval || WeaponElapsed == 0) { AbilityRemain = 0; - if (WeaponRemain > 0) + if (checkRemain > 0) { AbilityRemain = WeaponRemain + interval; } AbilityRemainCount = 0; } - else if (WeaponRemain < 2 * interval) + else if (checkRemain < 2 * interval) { AbilityRemain = WeaponRemain - interval; AbilityRemainCount = 1; @@ -137,7 +138,7 @@ private static unsafe void UpdateWeaponTime() { var abilityWhole = (int)(weapontotal / Service.Configuration.WeaponInterval - 1); AbilityRemain = interval - WeaponElapsed % interval; - AbilityRemainCount = (byte)(abilityWhole - (int)(WeaponElapsed / interval)); + AbilityRemainCount = (byte)(abilityWhole - (int)(checkElapsed / interval)); } if (weapontotal > 0) WeaponTotal = weapontotal; diff --git a/RotationSolver/Windows/RotationConfigWindow_Debug.cs b/RotationSolver/Windows/RotationConfigWindow_Debug.cs index 7a68fa73c..b257b0313 100644 --- a/RotationSolver/Windows/RotationConfigWindow_Debug.cs +++ b/RotationSolver/Windows/RotationConfigWindow_Debug.cs @@ -86,7 +86,23 @@ private unsafe void DrawParty() foreach (var member in TargetUpdater.PartyMembers) { var cha = (FFXIVClientStructs.FFXIV.Client.Game.Character.Character*)member.GetAddress(); - ImGui.Text(((VfxStruct*)cha->Omen)->Flags.ToString()); + var omen = (VfxStruct*)cha->Omen; + if ((IntPtr)omen != 0) + { + ImGui.Text("Omen:" + omen->Flags.ToString()); + } + omen = (VfxStruct*)cha->VfxData; + if ((IntPtr)omen != 0) + { + ImGui.Text("Data:" + omen->Flags.ToString()); + } + omen = (VfxStruct*)cha->VfxData2; + if ((IntPtr)omen != 0) + { + ImGui.Text("Data2:" + omen->Flags.ToString()); + } + ImGui.Text(cha->StatusEffectVFXId.ToString()); + } }