diff --git a/ActionTimelineEx/Configurations/RotationsSetting.cs b/ActionTimelineEx/Configurations/RotationsSetting.cs index 84e4976..eb7c152 100644 --- a/ActionTimelineEx/Configurations/RotationsSetting.cs +++ b/ActionTimelineEx/Configurations/RotationsSetting.cs @@ -3,6 +3,7 @@ public class RotationsSetting { public string Choice { get; set; } = "Default"; + public List RotationSettings { get; set; } = []; [JsonIgnore] diff --git a/ActionTimelineEx/Configurations/Settings.cs b/ActionTimelineEx/Configurations/Settings.cs index 284227f..f989c20 100644 --- a/ActionTimelineEx/Configurations/Settings.cs +++ b/ActionTimelineEx/Configurations/Settings.cs @@ -3,7 +3,6 @@ using ECommons.DalamudServices; using ECommons.ExcelServices; using ECommons.GameHelpers; -using Newtonsoft.Json; using System.Numerics; using XIVConfigUI.Attributes; @@ -52,31 +51,6 @@ public class Settings : IPluginConfiguration [UI("Draw Rotation", 1)] public bool DrawRotation { get; set; } = false; - [JsonIgnore] - [TimelineChoices] - [UI("Rotation Choice", Parent = nameof(DrawRotation))] - public string RotationChoice - { - get => EditSetting?.Choice ?? "Default"; - set - { - if (EditSetting == null) return; - EditSetting.Choice = value; - } - } - - [JsonIgnore] - [UI("Rotation Name", Parent = nameof(DrawRotation))] - public string RotationName - { - get => EditSetting?.RotationSetting.Name ?? "Default"; - set - { - if (EditSetting == null) return; - EditSetting.RotationSetting.Name = value; - } - } - [UI("Locked", Parent = nameof(DrawRotation))] public bool RotationLocked { get; set; } = false; @@ -104,6 +78,31 @@ public string RotationName [UI("Show the wrong clicking", Parent = nameof(DrawRotation))] public bool ShowWrongClick { get; set; } = true; + [JsonIgnore] + [TimelineChoices] + [UI("Rotation Choice", 2)] + public string RotationChoice + { + get => EditSetting?.Choice ?? "Default"; + set + { + if (EditSetting == null) return; + EditSetting.Choice = value; + } + } + + [JsonIgnore] + [UI("Rotation Name", 2)] + public string RotationName + { + get => EditSetting?.RotationSetting.Name ?? "Default"; + set + { + if (EditSetting == null) return; + EditSetting.RotationSetting.Name = value; + } + } + [JsonProperty] private Dictionary> _rotationHelpers = []; diff --git a/ActionTimelineEx/Helpers/DrawHelper.cs b/ActionTimelineEx/Helpers/DrawHelper.cs index f822cec..f2c96bb 100644 --- a/ActionTimelineEx/Helpers/DrawHelper.cs +++ b/ActionTimelineEx/Helpers/DrawHelper.cs @@ -1,5 +1,4 @@ -using ActionTimelineEx.Configurations; -using Dalamud.Interface.Textures; +using Dalamud.Interface.Textures; using Dalamud.Interface.Textures.TextureWraps; using ECommons.DalamudServices; using ImGuiNET; diff --git a/ActionTimelineEx/Helpers/RotationHelper.cs b/ActionTimelineEx/Helpers/RotationHelper.cs index 4320ea1..6cc5a6f 100644 --- a/ActionTimelineEx/Helpers/RotationHelper.cs +++ b/ActionTimelineEx/Helpers/RotationHelper.cs @@ -13,9 +13,9 @@ namespace ActionTimelineEx.Helpers; internal static class RotationHelper { private static DrawingHighlightHotbar? _highLight; - public static ActionSetting? ActiveActon => Actions.FirstOrDefault(); + public static ActionSetting? ActiveAction => Actions.FirstOrDefault(); - public static IEnumerable< ActionSetting> Actions => RotationSetting.Actions.Skip((int)Count); + public static IEnumerable Actions => RotationSetting.Actions.Skip((int)Count); public static RotationSetting RotationSetting => Plugin.Settings.GetSetting(Svc.ClientState.TerritoryType).RotationSetting; @@ -35,11 +35,13 @@ private set private static void UpdateHighlight() { + if (!Plugin.Settings.DrawRotation) return; + if (_highLight == null) return; _highLight.Color = Plugin.Settings.RotationHighlightColor; _highLight.HotbarIDs.Clear(); - var action = ActiveActon; + var action = ActiveAction; if (action == null) return; HotbarID? hotbar = null; @@ -111,7 +113,7 @@ private static void ActionFromSelf(ActionEffectSet set) if (set.Source.EntityId != Player.Object.EntityId || !Plugin.Settings.DrawRotation) return; if (set.Action == null) return; - var action = ActiveActon; + var action = ActiveAction; if (action == null) return; var succeed = set.Action.RowId == action.ActionId; diff --git a/ActionTimelineEx/Localization/Localization.json b/ActionTimelineEx/Localization/Localization.json index e94b966..497a68f 100644 --- a/ActionTimelineEx/Localization/Localization.json +++ b/ActionTimelineEx/Localization/Localization.json @@ -128,5 +128,6 @@ "ActionTimelineEx.Configurations.ActionSettingName.Type": "Type", "ActionTimelineEx.Configurations.ActionSettingName.Id": "Id", "ActionTimelineEx.Configurations.ActionSettingDescription": "Maim (GCD)", - "ActionTimelineEx.Configurations.UiString.RotationReset": "Reset Count" + "ActionTimelineEx.Configurations.UiString.RotationReset": "Reset Count", + "ActionTimeline.SettingsName.ShowWrongClick": "Show the wrong clicking" } \ No newline at end of file diff --git a/ActionTimelineEx/Windows/RotationHelperItem.cs b/ActionTimelineEx/Windows/RotationHelperItem.cs index d47d88d..54e7414 100644 --- a/ActionTimelineEx/Windows/RotationHelperItem.cs +++ b/ActionTimelineEx/Windows/RotationHelperItem.cs @@ -4,10 +4,12 @@ using Dalamud.Interface.Colors; using Dalamud.Interface.Textures.TextureWraps; using Dalamud.Interface.Utility.Raii; +using Dalamud.Interface.Windowing; using ECommons.DalamudServices; using ECommons.GameHelpers; using ImGuiNET; using Lumina.Excel.GeneratedSheets; +using System.Collections.Generic; using System.ComponentModel; using System.Numerics; using XIVConfigUI; @@ -40,7 +42,7 @@ public override void Draw(ConfigWindow window) _group ??= new CollapsingHeaderGroup(new() { { () => UiString.RotationSetting.Local(), () => DrawSetting(window) }, - { () => UiString.Rotation.Local(), () => ConditionDrawer.Draw(setting.RotationSetting.Actions) }, + { () => UiString.Rotation.Local(), () => DrawRotation(window, setting.RotationSetting)}, }); _group.Draw(); @@ -48,12 +50,43 @@ public override void Draw(ConfigWindow window) } private static void DrawSetting(ConfigWindow window) + { + window.Collection.DrawItems(1); + } + + private static void DrawRotation(ConfigWindow window, RotationSetting setting) { if (ImGui.Button(UiString.RotationReset.Local())) { RotationHelper.Clear(); } - window.Collection.DrawItems(1); + + ImGui.SameLine(); + + if (ImGui.Button(LocalString.CopyToClipboard.Local())) + { + var str = JsonHelper.SerializeObject(setting.Actions); + ImGui.SetClipboardText(str); + } + + ImGui.SameLine(); + + if (ImGui.Button(LocalString.FromClipboard.Local())) + { + var str = ImGui.GetClipboardText(); + + try + { + setting.Actions = JsonHelper.DeserializeObject>(str)!; + } + catch (Exception ex) + { + Svc.Log.Warning(ex, "Failed to load the timeline."); + } + } + + window.Collection.DrawItems(2); + ConditionDrawer.Draw(setting.Actions); } private static void DrawTerritoryHeader()