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