From faa2e7fe49d02cc4598e09d59a5be80ef964dde5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <53346444+ArchiDog1998@users.noreply.github.com> Date: Wed, 27 Mar 2024 23:06:18 +0800 Subject: [PATCH] fix: gcd check. --- ActionTimelineEx/ActionTimelineEx.csproj | 2 +- .../Configurations/DrawingSettings.cs | 30 +++++++++---------- ActionTimelineEx/Configurations/Settings.cs | 4 +-- ActionTimelineEx/Helpers/DrawHelper.cs | 9 +++--- ActionTimelineEx/Timeline/TimelineItem.cs | 7 ++--- ActionTimelineEx/Timeline/TimelineManager.cs | 24 +++++++-------- ActionTimelineEx/packages.lock.json | 2 +- ECommons | 2 +- 8 files changed, 38 insertions(+), 42 deletions(-) diff --git a/ActionTimelineEx/ActionTimelineEx.csproj b/ActionTimelineEx/ActionTimelineEx.csproj index 0b59b9c..4c9d9a9 100644 --- a/ActionTimelineEx/ActionTimelineEx.csproj +++ b/ActionTimelineEx/ActionTimelineEx.csproj @@ -1,6 +1,6 @@  - net7.0-windows + net8.0-windows enable ArchiTed x64 diff --git a/ActionTimelineEx/Configurations/DrawingSettings.cs b/ActionTimelineEx/Configurations/DrawingSettings.cs index 33bad40..8c6dade 100644 --- a/ActionTimelineEx/Configurations/DrawingSettings.cs +++ b/ActionTimelineEx/Configurations/DrawingSettings.cs @@ -17,8 +17,8 @@ public class DrawingSettings public Vector2 RealDownDirection => IsHorizonal ? Vector2.UnitY : Vector2.UnitX; public bool Locked = false; - public Vector4 LockedBackgroundColor = new Vector4(0f, 0f, 0f, 0.5f); - public Vector4 UnlockedBackgroundColor = new Vector4(0f, 0f, 0f, 0.75f); + public Vector4 LockedBackgroundColor = new (0f, 0f, 0f, 0.5f); + public Vector4 UnlockedBackgroundColor = new (0f, 0f, 0f, 0.75f); public float SizePerSecond = 60; public float CenterOffset = 0; @@ -47,19 +47,19 @@ public class DrawingSettings public Vector4 CriticalColor = ImGuiColors.DalamudOrange; public Vector4 CriticalDirectColor = ImGuiColors.DPSRed; - public Vector4 BackgroundColor = new Vector4(0.5f, 0.5f, 0.5f, 0.5f); - public Vector4 GCDBorderColor = new Vector4(0.9f, 0.9f, 0.9f, 1f); + public Vector4 BackgroundColor = new (0.5f, 0.5f, 0.5f, 0.5f); + public Vector4 GCDBorderColor = new (0.9f, 0.9f, 0.9f, 1f); public float GCDThickness = 1.5f; public float GCDHeightLow = 0.5f; public float GCDHeightHigh = 0.8f; public float GCDRound = 2; - public Vector4 CastInProgressColor = new Vector4(0.2f, 0.8f, 0.2f, 1f); - public Vector4 CastFinishedColor = new Vector4(0.5f, 0.5f, 0.5f, 1f); - public Vector4 CastCanceledColor = new Vector4(0.8f, 0.2f, 0.2f, 1f); + public Vector4 CastInProgressColor = new (0.2f, 0.8f, 0.2f, 1f); + public Vector4 CastFinishedColor = new (0.5f, 0.5f, 0.5f, 1f); + public Vector4 CastCanceledColor = new (0.8f, 0.2f, 0.2f, 1f); public bool ShowAnimationLock = true; - public Vector4 AnimationLockColor = new Vector4(0.8f, 0.7f, 0.6f, 1f); + public Vector4 AnimationLockColor = new (0.8f, 0.7f, 0.6f, 1f); public bool ShowStatusLine = true; public float StatusLineSize = 18; @@ -74,15 +74,15 @@ public class DrawingSettings public float GridCenterLineWidth = 1f; public float GridStartLineWidth = 3; public float GridSubdivisionLineWidth = 1; - public Vector4 GridLineColor = new Vector4(0.3f, 0.3f, 0.3f, 1f); - public Vector4 GridCenterLineColor = new Vector4(0.5f, 0.5f, 0.5f, 0.3f); - public Vector4 GridStartLineColor = new Vector4(0.3f, 0.5f, 0.2f, 1f); - public Vector4 GridSubdivisionLineColor = new Vector4(0.3f, 0.3f, 0.3f, 0.2f); + public Vector4 GridLineColor = new (0.3f, 0.3f, 0.3f, 1f); + public Vector4 GridCenterLineColor = new (0.5f, 0.5f, 0.5f, 0.3f); + public Vector4 GridStartLineColor = new (0.3f, 0.5f, 0.2f, 1f); + public Vector4 GridSubdivisionLineColor = new (0.3f, 0.3f, 0.3f, 0.2f); public bool ShowGCDClippingSetting = true; - public bool ShowGCDClipping => IsRotation ? false : ShowGCDClippingSetting; + public bool ShowGCDClipping => !IsRotation && ShowGCDClippingSetting; public float GCDClippingThreshold = 0.15f; public int GCDClippingMaxTime = 2; - public Vector4 GCDClippingColor = new Vector4(1f, 0.2f, 0.2f, 0.3f); - public Vector4 GCDClippingTextColor = new Vector4(0.9f, 0.9f, 0.9f, 1f); + public Vector4 GCDClippingColor = new (1f, 0.2f, 0.2f, 0.3f); + public Vector4 GCDClippingTextColor = new (0.9f, 0.9f, 0.9f, 1f); } diff --git a/ActionTimelineEx/Configurations/Settings.cs b/ActionTimelineEx/Configurations/Settings.cs index cf914c1..78e0fe7 100644 --- a/ActionTimelineEx/Configurations/Settings.cs +++ b/ActionTimelineEx/Configurations/Settings.cs @@ -13,8 +13,8 @@ public class Settings : IPluginConfiguration public bool HideTimelineInQuestEvent = true; public bool Record = true; public bool RecordTargetStatus = true; - public List TimelineSettings = new(); - public HashSet HideStatusIds = new HashSet(); + public List TimelineSettings = []; + public HashSet HideStatusIds = []; public bool PrintClipping = false; public int PrintClippingMin = 150; public int PrintClippingMax = 2000; diff --git a/ActionTimelineEx/Helpers/DrawHelper.cs b/ActionTimelineEx/Helpers/DrawHelper.cs index db9366c..2088b4c 100644 --- a/ActionTimelineEx/Helpers/DrawHelper.cs +++ b/ActionTimelineEx/Helpers/DrawHelper.cs @@ -2,7 +2,6 @@ using ECommons.DalamudServices; using ECommons.ImGuiMethods; using ImGuiNET; -using ImGuiScene; using Lumina.Data.Files; using System.Numerics; @@ -10,8 +9,8 @@ namespace ActionTimeline.Helpers; internal static class DrawHelper { - private static readonly Vector2 _uv1 = new Vector2(96 * 5 / 852f, 0), - _uv2 = new Vector2((96 * 5 + 144) / 852f, 0.5f); + private static readonly Vector2 _uv1 = new (96 * 5 / 852f, 0), + _uv2 = new ((96 * 5 + 144) / 852f, 0.5f); private static IDalamudTextureWrap? _roundTex; public static void Init() @@ -69,8 +68,8 @@ public static Vector4 ChangeAlpha(this Vector4 color, float alpha) => ThreadLoadImageHandler.TryGetIconTextureWrap(iconId, highQuality, out var texture) ? texture : ThreadLoadImageHandler.TryGetIconTextureWrap(0, highQuality, out texture) ? texture : null; - private static Dictionary textureColorCache = new (); - private static Queue calculating = new (); + private static readonly Dictionary textureColorCache = []; + private static readonly Queue calculating = new (); public static uint GetTextureAverageColor(uint iconId) { if (textureColorCache.TryGetValue(iconId, out var color)) return color; diff --git a/ActionTimelineEx/Timeline/TimelineItem.cs b/ActionTimelineEx/Timeline/TimelineItem.cs index ba717ff..09b839d 100644 --- a/ActionTimelineEx/Timeline/TimelineItem.cs +++ b/ActionTimelineEx/Timeline/TimelineItem.cs @@ -3,9 +3,6 @@ using Dalamud.Interface; using Dalamud.Interface.Internal; using ImGuiNET; -using ImGuiScene; -using RotationSolver.Basic.Data; -using System.Drawing; using System.Numerics; namespace ActionTimelineEx.Timeline; @@ -82,7 +79,7 @@ private static (IDalamudTextureWrap texture, string? name)[] GetTextures(HashSet if (texture == null) continue; result.Add((texture, name)); } - return result.ToArray(); + return [.. result]; } public const float HeightRatio = 4 / 3f; @@ -202,7 +199,7 @@ private void DrawItemWithCenter(ImDrawListPtr drawList, Vector2 centerPos, Vecto //Name } - private Vector2 MinX(Vector2 pos, Vector2 minPos) + private static Vector2 MinX(Vector2 pos, Vector2 minPos) { return new Vector2(MathF.Max(pos.X, minPos.X), MathF.Max(pos.Y, minPos.Y)); } diff --git a/ActionTimelineEx/Timeline/TimelineManager.cs b/ActionTimelineEx/Timeline/TimelineManager.cs index 57fae09..daf24fd 100644 --- a/ActionTimelineEx/Timeline/TimelineManager.cs +++ b/ActionTimelineEx/Timeline/TimelineManager.cs @@ -15,7 +15,7 @@ namespace ActionTimeline.Timeline; -public class TimelineManager +public class TimelineManager : IDisposable { internal const byte GCDCooldownGroup = 58; @@ -78,11 +78,11 @@ protected void Dispose(bool disposing) [Signature("40 55 56 48 81 EC ?? ?? ?? ?? 48 8B EA", DetourName = nameof(OnCast))] private readonly Hook? _onCastHook = null; - public static SortedSet ShowedStatusId { get; } = new SortedSet(); + public static SortedSet ShowedStatusId { get; } = []; public DateTime EndTime { get; private set; } = DateTime.Now; - private static int kMaxItemCount = 2048; - private readonly Queue _items = new Queue(kMaxItemCount); + private static readonly int kMaxItemCount = 2048; + private readonly Queue _items = new(kMaxItemCount); private TimelineItem? _lastItem = null; private DateTime _lastTime = DateTime.MinValue; @@ -112,8 +112,8 @@ public List GetItems(DateTime time, out DateTime lastEndTime) return GetItems(_items, time, out lastEndTime); } - private static int kMaxStatusCount = 256; - private readonly Queue _statusItems = new Queue(kMaxStatusCount); + private static readonly int kMaxStatusCount = 256; + private readonly Queue _statusItems = new(kMaxStatusCount); private void AddItem(StatusLineItem item) { if (item == null) return; @@ -129,7 +129,7 @@ public List GetStatus(DateTime time, out DateTime lastEndTime) return GetItems(_statusItems, time, out lastEndTime); } - private List GetItems(IEnumerable items, DateTime time, out DateTime lastEndTime) where T : ITimelineItem + private static List GetItems(IEnumerable items, DateTime time, out DateTime lastEndTime) where T : ITimelineItem { var result = new List(); lastEndTime = DateTime.Now; @@ -153,7 +153,7 @@ public unsafe float GCD get { var cdGrp = ActionManager.Instance()->GetRecastGroupDetail(GCDCooldownGroup - 1); - return cdGrp->Total - cdGrp->Elapsed; + return cdGrp->Total; } } @@ -193,7 +193,7 @@ private void CancelCasting() _lastItem.CastingTime = MathF.Min(maxTime, _lastItem.CastingTime); } - private uint GetStatusIcon(ushort id, bool isGain, out string? name, byte stack = byte.MaxValue) + private static uint GetStatusIcon(ushort id, bool isGain, out string? name, byte stack = byte.MaxValue) { name = null; if (Plugin.Settings.HideStatusIds.Contains(id)) return 0; @@ -229,7 +229,7 @@ private void ActionFromSelf(ActionEffectSet set) if (set.Source.ObjectId != Player.Object.ObjectId || !Plugin.Settings.Record) return; DamageType damage = DamageType.None; - SortedSet<(uint, string?)> statusGain = new (), statusLose = new (); + SortedSet<(uint, string?)> statusGain = [], statusLose = []; for (int i = 0; i < set.Header.TargetCount; i++) { @@ -335,9 +335,9 @@ private async void AddStatusLine(TimelineItem? effectItem, ulong targetId) await Task.Delay(50); - if (!effectItem.StatusGainIcon.Any()) return; + if (effectItem.StatusGainIcon.Count == 0) return; - List list = new List(4); + List list = new(4); foreach (var icon in effectItem.StatusGainIcon) { if (Plugin.IconStack.TryGetValue(icon.icon, out var stack)) diff --git a/ActionTimelineEx/packages.lock.json b/ActionTimelineEx/packages.lock.json index b2eff6f..ece58ee 100644 --- a/ActionTimelineEx/packages.lock.json +++ b/ActionTimelineEx/packages.lock.json @@ -1,7 +1,7 @@ { "version": 1, "dependencies": { - "net7.0-windows7.0": { + "net8.0-windows7.0": { "DalamudPackager": { "type": "Direct", "requested": "[2.1.12, )", diff --git a/ECommons b/ECommons index 8749ff5..6c6e6db 160000 --- a/ECommons +++ b/ECommons @@ -1 +1 @@ -Subproject commit 8749ff5c2b51692a9f93069a26c116c6b90e7288 +Subproject commit 6c6e6db85dcb28a6bdc3a69fd69f4eef6a8598cf