From 8507513470c0d8e4ad05d1547a3c0aec8b5757ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com> Date: Thu, 26 Jan 2023 13:03:43 +0800 Subject: [PATCH] fix: fix for timeline UI bugs. --- .../Actions/BaseAction/BaseAction_Display.cs | 35 +++++++++++-------- RotationSolver/Timeline/ConditionSet.cs | 2 +- RotationSolver/Timeline/MajorConditionSet.cs | 6 ++-- RotationSolver/Updaters/TimeLineUpdater.cs | 10 +++++- .../Windows/RotationConfigWindow_Action.cs | 5 ++- 5 files changed, 36 insertions(+), 22 deletions(-) diff --git a/RotationSolver/Actions/BaseAction/BaseAction_Display.cs b/RotationSolver/Actions/BaseAction/BaseAction_Display.cs index e2624d8a3..9b2100b2c 100644 --- a/RotationSolver/Actions/BaseAction/BaseAction_Display.cs +++ b/RotationSolver/Actions/BaseAction/BaseAction_Display.cs @@ -19,22 +19,29 @@ public unsafe void Display(bool IsActive) => this.DrawEnableTexture(IsActive, () type => string.Format(LocalizationManager.RightLang.Configwindow_Helper_InsertCommand, this), false); #if DEBUG - ImGui.Text("Have One:" + HaveOneChargeDEBUG.ToString()); - ImGui.Text("Is Real GCD: " + IsRealGCD.ToString()); - ImGui.Text("Recast One: " + RecastTimeOneChargeDEBUG.ToString()); - ImGui.Text("Recast Elapsed: " + RecastTimeElapsedDEBUG.ToString()); - ImGui.Text("Recast Remain: " + RecastTimeRemainDEBUG.ToString()); - ImGui.Text("Status: " + ActionManager.Instance()->GetActionStatus(ActionType.Spell, AdjustedID).ToString()); + try + { + ImGui.Text("Have One:" + HaveOneChargeDEBUG.ToString()); + ImGui.Text("Is Real GCD: " + IsRealGCD.ToString()); + ImGui.Text("Recast One: " + RecastTimeOneChargeDEBUG.ToString()); + ImGui.Text("Recast Elapsed: " + RecastTimeElapsedDEBUG.ToString()); + ImGui.Text("Recast Remain: " + RecastTimeRemainDEBUG.ToString()); + ImGui.Text("Status: " + ActionManager.Instance()->GetActionStatus(ActionType.Spell, AdjustedID).ToString()); - ImGui.Text("Cast Time: " + CastTime.ToString()); - ImGui.Text("MP: " + MPNeed.ToString()); - ImGui.Text($"Can Use: {CanUse(out _)} "); - ImGui.Text("Must Use:" + CanUse(out _, mustUse: true).ToString()); - ImGui.Text("Empty Use:" + CanUse(out _, emptyOrSkipCombo: true).ToString()); - ImGui.Text("IsUnlocked: " + UIState.Instance()->IsUnlockLinkUnlocked(AdjustedID).ToString()); - if (Target != null) + ImGui.Text("Cast Time: " + CastTime.ToString()); + ImGui.Text("MP: " + MPNeed.ToString()); + ImGui.Text($"Can Use: {CanUse(out _)} "); + ImGui.Text("Must Use:" + CanUse(out _, mustUse: true).ToString()); + ImGui.Text("Empty Use:" + CanUse(out _, emptyOrSkipCombo: true).ToString()); + ImGui.Text("IsUnlocked: " + UIState.Instance()->IsUnlockLinkUnlocked(AdjustedID).ToString()); + //if (Target != null) + //{ + // ImGui.Text("Target Name: " + Target.Name); + //} + } + catch { - ImGui.Text("Target Name: " + Target.Name); + } #endif }); diff --git a/RotationSolver/Timeline/ConditionSet.cs b/RotationSolver/Timeline/ConditionSet.cs index 1d4c2059a..4b81dedf4 100644 --- a/RotationSolver/Timeline/ConditionSet.cs +++ b/RotationSolver/Timeline/ConditionSet.cs @@ -22,7 +22,7 @@ public bool IsTrue(ICustomRotation combo) => Conditions.Count == 0 ? false : public float Height => Conditions.Sum(c => c is ConditionSet ? c.Height + 10 : c.Height) + ICondition.DefaultHeight + 12; public void Draw(ICustomRotation combo) { - if (ImGui.BeginChild(GetHashCode().ToString(), new System.Numerics.Vector2(-1f, Height), true)) + if (ImGui.BeginChild("ConditionSet" + GetHashCode().ToString(), new System.Numerics.Vector2(-1f, Height), true)) { AddButton(); diff --git a/RotationSolver/Timeline/MajorConditionSet.cs b/RotationSolver/Timeline/MajorConditionSet.cs index be6e5fb9c..69978b87b 100644 --- a/RotationSolver/Timeline/MajorConditionSet.cs +++ b/RotationSolver/Timeline/MajorConditionSet.cs @@ -8,7 +8,7 @@ namespace RotationSolver.Timeline; internal class MajorConditionSet { - public Dictionary Conditions { get; } = new Dictionary(); + public Dictionary Conditions { get; } = new Dictionary(); public string Name; @@ -31,7 +31,7 @@ public void Save(string folder) File.WriteAllText(path, str); } - public static IEnumerable Read(string folder) + public static MajorConditionSet[] Read(string folder) { if (!Directory.Exists(folder)) return new MajorConditionSet[0]; @@ -40,6 +40,6 @@ public static IEnumerable Read(string folder) var str = File.ReadAllText(p); return JsonConvert.DeserializeObject(str, new IConditionConverter()); - }).Where(set => set != null); + }).Where(set => set != null && !string.IsNullOrEmpty(set.Name)).ToArray(); } } diff --git a/RotationSolver/Updaters/TimeLineUpdater.cs b/RotationSolver/Updaters/TimeLineUpdater.cs index 5a9cbb62f..95e5467d6 100644 --- a/RotationSolver/Updaters/TimeLineUpdater.cs +++ b/RotationSolver/Updaters/TimeLineUpdater.cs @@ -1,9 +1,11 @@ using ImGuiNET; +using Newtonsoft.Json; using RotationSolver.Actions; using RotationSolver.Helpers; using RotationSolver.SigReplacers; using RotationSolver.Timeline; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; @@ -32,7 +34,7 @@ public static void UpdateTimelineAction() foreach (var conditionPair in set.Conditions) { - var nextAct = allActions.FirstOrDefault(a => a.ID == (uint)conditionPair.Key); + var nextAct = allActions.FirstOrDefault(a => a.ID == conditionPair.Key); if (nextAct == null) continue; if (!conditionPair.Value.IsTrue(customRotation)) continue; @@ -123,6 +125,12 @@ public static void DrawHeader() { AddNew(); } + + ImGui.SameLine(); + if (ImGuiHelper.IconButton(Dalamud.Interface.FontAwesomeIcon.Folder, "##OpenDefinationFolder")) + { + Process.Start("explorer.exe", _timelineFolder); + } } } } diff --git a/RotationSolver/Windows/RotationConfigWindow_Action.cs b/RotationSolver/Windows/RotationConfigWindow_Action.cs index ba0428e3d..d410ba863 100644 --- a/RotationSolver/Windows/RotationConfigWindow_Action.cs +++ b/RotationSolver/Windows/RotationConfigWindow_Action.cs @@ -15,7 +15,6 @@ internal partial class RotationConfigWindow private void DrawActionTab() { - ImGui.Columns(2); DrawActionList(); @@ -66,9 +65,9 @@ private void DrawTimelineCondition() var set = TimeLineUpdater.RightSet; if (set == null) return; - if (!set.Conditions.TryGetValue((ActionID)ActiveAction.ID, out var conditionSet)) + if (!set.Conditions.TryGetValue(ActiveAction.ID, out var conditionSet)) { - conditionSet = set.Conditions[(ActionID)ActiveAction.ID] = new Timeline.ConditionSet(); + conditionSet = set.Conditions[ActiveAction.ID] = new Timeline.ConditionSet(); } conditionSet?.Draw(rotation);