From 4bcbbe7b73e404d5ca81b325c97eff437b16131d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?=
<53346444+ArchiDog1998@users.noreply.github.com>
Date: Sat, 13 Jul 2024 13:28:09 +0800
Subject: [PATCH] fix: add 0gcd last option.
---
.../Configurations/ActionSetting.cs | 20 +++++++++++++++++--
ActionTimelineEx/Configurations/UiString.cs | 3 +++
.../Localization/Localization.json | 5 ++++-
.../Windows/RotationHelperItem.cs | 16 ++++++++++-----
XIVConfigUI | 2 +-
5 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/ActionTimelineEx/Configurations/ActionSetting.cs b/ActionTimelineEx/Configurations/ActionSetting.cs
index a2841d6..7fc4105 100644
--- a/ActionTimelineEx/Configurations/ActionSetting.cs
+++ b/ActionTimelineEx/Configurations/ActionSetting.cs
@@ -30,10 +30,13 @@ public override string GetDescription(object obj)
}
}
+///
+/// From https://github.com/aers/FFXIVClientStructs/blob/main/FFXIVClientStructs/FFXIV/Client/Game/ActionManager.cs#L373-L395
+///
public enum ActionSettingType : byte
{
- Action,
- Item,
+ Action = 0x01, // Spell, Weaponskill, Ability. Confusing name, I know.
+ Item = 0x02,
}
[ActionSetting]
@@ -74,6 +77,19 @@ public ActionSettingType Type
}
}
+ internal bool Is0GCD => !IsGCD;
+
+ [JsonProperty]
+ private bool _isLast = false;
+
+ [JsonIgnore]
+ [UI("Is the Last Ability during GCD", Parent = nameof(Is0GCD))]
+ public bool IsLast
+ {
+ get => _isLast && Is0GCD;
+ set => _isLast = value;
+ }
+
private void Update()
{
ClearData();
diff --git a/ActionTimelineEx/Configurations/UiString.cs b/ActionTimelineEx/Configurations/UiString.cs
index d5a6f34..e2f97f9 100644
--- a/ActionTimelineEx/Configurations/UiString.cs
+++ b/ActionTimelineEx/Configurations/UiString.cs
@@ -34,4 +34,7 @@ internal enum UiString
[Description("Reset Count")]
RotationReset,
+
+ [Description("Add One Rotation")]
+ AddOneRotation,
}
diff --git a/ActionTimelineEx/Localization/Localization.json b/ActionTimelineEx/Localization/Localization.json
index 0113f31..75c7fdc 100644
--- a/ActionTimelineEx/Localization/Localization.json
+++ b/ActionTimelineEx/Localization/Localization.json
@@ -129,5 +129,8 @@
"XIVConfigUI.Attributes.ConfigUnitType.Percent": "Ratio Unit, as percentage.",
"XIVConfigUI.Attributes.ConfigUnitType.Pixels": "Display Unit, in pixels.",
"ActionTimelineEx.Configurations.SettingsName.RecordRotation": "Record Rotation",
- "ActionTimelineEx.Description": "Configurable timeline display of all the actions you use."
+ "ActionTimelineEx.Description": "Configurable timeline display of all the actions you use.",
+ "ActionTimelineEx.Configurations.UiString.AddOneRotation": "Add One Rotation",
+ "XIVConfigUI.LocalString.Add": "Add",
+ "ActionTimelineEx.Configurations.ActionSettingName.IsLast": "Is the Last Ability during GCD"
}
\ No newline at end of file
diff --git a/ActionTimelineEx/Windows/RotationHelperItem.cs b/ActionTimelineEx/Windows/RotationHelperItem.cs
index 454bb65..f5fd4ae 100644
--- a/ActionTimelineEx/Windows/RotationHelperItem.cs
+++ b/ActionTimelineEx/Windows/RotationHelperItem.cs
@@ -41,7 +41,7 @@ public override void Draw(ConfigWindow window)
_group ??= new CollapsingHeaderGroup(new()
{
{ () => UiString.RotationSetting.Local(), () => DrawSetting(window) },
- { () => UiString.Rotation.Local(), () => DrawRotation(window, setting.RotationSetting)},
+ { () => UiString.Rotation.Local(), () => DrawRotation(window, setting)},
});
_group.Draw();
@@ -53,7 +53,7 @@ private static void DrawSetting(ConfigWindow window)
window.Collection.DrawItems(1);
}
- private static void DrawRotation(ConfigWindow window, RotationSetting setting)
+ private static void DrawRotation(ConfigWindow window, RotationsSetting setting)
{
if (ImGui.Button(UiString.RotationReset.Local()))
{
@@ -62,9 +62,14 @@ private static void DrawRotation(ConfigWindow window, RotationSetting setting)
ImGui.SameLine();
+ if (ImGui.Button(UiString.AddOneRotation.Local()))
+ {
+ setting.RotationSettings.Add(new());
+ }
+
if (ImGui.Button(LocalString.CopyToClipboard.Local()))
{
- var str = JsonHelper.SerializeObject(setting.Actions);
+ var str = JsonHelper.SerializeObject(setting.RotationSetting.Actions);
ImGui.SetClipboardText(str);
}
@@ -76,7 +81,7 @@ private static void DrawRotation(ConfigWindow window, RotationSetting setting)
try
{
- setting.Actions = JsonHelper.DeserializeObject>(str)!;
+ setting.RotationSetting.Actions = JsonHelper.DeserializeObject>(str)!;
}
catch (Exception ex)
{
@@ -84,8 +89,9 @@ private static void DrawRotation(ConfigWindow window, RotationSetting setting)
}
}
+
window.Collection.DrawItems(2);
- ConditionDrawer.Draw(setting.Actions);
+ ConditionDrawer.Draw(setting.RotationSetting.Actions);
}
private static void DrawTerritoryHeader()
diff --git a/XIVConfigUI b/XIVConfigUI
index a2a053d..607053d 160000
--- a/XIVConfigUI
+++ b/XIVConfigUI
@@ -1 +1 @@
-Subproject commit a2a053dea1338c3bda0445c2306e9273e7ae3545
+Subproject commit 607053da7bab2c05415dc9ab08d7f6bcc8e9f8e4