diff --git a/ActionTimelineEx/Configurations/Settings.cs b/ActionTimelineEx/Configurations/Settings.cs index 0bbb078..4515d9e 100644 --- a/ActionTimelineEx/Configurations/Settings.cs +++ b/ActionTimelineEx/Configurations/Settings.cs @@ -102,6 +102,10 @@ public string RotationName } } + [JsonIgnore] + [UI("Record Rotation", 2)] + public bool RecordRotation { get; set; } = false; + [JsonProperty] private Dictionary> _rotationHelpers = []; diff --git a/ActionTimelineEx/Helpers/RotationHelper.cs b/ActionTimelineEx/Helpers/RotationHelper.cs index efa1a64..ecad242 100644 --- a/ActionTimelineEx/Helpers/RotationHelper.cs +++ b/ActionTimelineEx/Helpers/RotationHelper.cs @@ -1,4 +1,5 @@ using ActionTimelineEx.Configurations; +using ActionTimelineEx.Timeline; using ActionTimelineEx.Windows; using ECommons.DalamudServices; using ECommons.GameHelpers; @@ -109,12 +110,26 @@ private static void ActionFromSelf(ActionEffectSet set) { if (!Player.Available) return; if (set.Source.EntityId != Player.Object.EntityId || !Plugin.Settings.DrawRotation) return; - if (set.Action == null) return; + if ((ActionCate)(set.Action?.ActionCategory.Value?.RowId ?? 0) is ActionCate.AutoAttack) return; //Auto Attack. + + if (Plugin.Settings.RecordRotation) + { + RecordRotation(set); + return; + } var action = ActiveAction; if (action == null) return; - var succeed = set.Action.RowId == action.ActionId; + bool succeed = set.Header.ActionID == action.ActionId; + switch (set.Header.ActionType) + { + case FFXIVClientStructs.FFXIV.Client.Game.ActionType.Action when action.Type != ActionSettingType.Action: + case FFXIVClientStructs.FFXIV.Client.Game.ActionType.Item when action.Type != ActionSettingType.Item: + succeed = false; + break; + + } if (succeed) { SuccessCount++; @@ -126,6 +141,32 @@ private static void ActionFromSelf(ActionEffectSet set) Count++; } + private static void RecordRotation(in ActionEffectSet set) + { + ActionSettingType? type = null; + + switch (set.Header.ActionType) + { + case FFXIVClientStructs.FFXIV.Client.Game.ActionType.Action: + type = ActionSettingType.Action; + break; + + case FFXIVClientStructs.FFXIV.Client.Game.ActionType.Item: + type = ActionSettingType.Item; + break; + } + + if (type != null) + { + RotationSetting.Actions.Add(new ActionSetting() + { + ActionId = set.Header.ActionID, + Type = type.Value, + }); + } + } + + public static void Clear() { Count = 0; diff --git a/ActionTimelineEx/Localization/Localization.json b/ActionTimelineEx/Localization/Localization.json index 5105973..b1a7985 100644 --- a/ActionTimelineEx/Localization/Localization.json +++ b/ActionTimelineEx/Localization/Localization.json @@ -4,22 +4,24 @@ "XIVConfigUI.LocalString.Searching": "Search... ", "ActionTimelineEx.Windows.RotationHelperItem": "Rotation Helper", "ActionTimelineEx.Windows.ChangeLogItem": "ChangeLog", - "ActionTimelineEx.Description": "Configurable timeline display of all the actions you use.", - "XIVConfigUI.LocalString.SourceCode": "Click to see the source code!", - "XIVConfigUI.LocalString.Localization": "Click to open the crowdin for modifying localization!", - "ActionTimelineEx.Configurations.UiString.AddOne": "Add One Timeline", - "ActionTimelineEx.Configurations.UiString.Setting": "Setting", - "ActionTimelineEx.Configurations.UiString.ShowedStatuses": "Showed Statuses", - "ActionTimelineEx.Configurations.UiString.NotStatues": "Don't record these statuses", - "ActionTimelineEx.Configurations.SettingsName.Record": "Record Data", - "ActionTimelineEx.Configurations.SettingsName.ShowTimelineOnlyInDuty": "Show Only In Duty", - "ActionTimelineEx.Configurations.SettingsName.ShowTimelineOnlyInCombat": "Show Only In Combat", - "ActionTimelineEx.Configurations.SettingsName.HideTimelineInCutscene": "Hide In Cutscene", - "ActionTimelineEx.Configurations.SettingsName.HideTimelineInQuestEvent": "Hide In Quest Event", - "ActionTimelineEx.Configurations.SettingsName.SayClipping": "Say Clipping Time", - "ActionTimelineEx.Configurations.SettingsName.ClippintTime": "Clipping Range", - "ActionTimelineEx.Configurations.SettingsName.RecordTargetStatus": "Record Target Status", - "ActionTimelineEx.Configurations.SettingsName.ShowDonate": "Show the donate link.", + "ActionTimelineEx.Configurations.UiString.RotationSetting": "Rotation Setting", + "ActionTimelineEx.Configurations.UiString.Rotation": "Rotation", + "ActionTimelineEx.Configurations.UiString.RotationReset": "Reset Count", + "XIVConfigUI.LocalString.CopyToClipboard": "Copy to Clipboard", + "XIVConfigUI.LocalString.FromClipboard": "From Clipboard", + "ActionTimelineEx.Configurations.SettingsName.RotationChoice": "Rotation Choice", + "XIVConfigUI.LocalString.ResetToDefault": "Reset to Default Value.", + "ActionTimelineEx.Configurations.SettingsName.RotationName": "Rotation Name", + "XIVConfigUI.LocalString.List": "List", + "ActionTimelineEx.Configurations.ActionSetting": "ActionSetting", + "XIVConfigUI.LocalString.Remove": "Remove", + "XIVConfigUI.LocalString.MoveUp": "Move Up", + "XIVConfigUI.LocalString.MoveDown": "Move Down", + "ActionTimelineEx.Configurations.ActionSettingDescription": "Sentinel (Ability)", + "ActionTimelineEx.Configurations.ActionSettingName.Id": "Id", + "ActionTimelineEx.Configurations.ActionSettingType.Action": "Action", + "ActionTimelineEx.Configurations.ActionSettingType.Item": "Item", + "ActionTimelineEx.Configurations.ActionSettingName.Type": "Type", "ActionTimelineEx.Configurations.SettingsName.DrawRotation": "Draw Rotation", "ActionTimelineEx.Configurations.SettingsName.RotationLocked": "Locked", "ActionTimelineEx.Configurations.SettingsName.RotationLockedBackgroundColor": "Locked Background Color", @@ -29,8 +31,15 @@ "ActionTimelineEx.Configurations.SettingsName.OGCDIconSize": "Off GCD Icon Size", "ActionTimelineEx.Configurations.SettingsName.IconSpacing": "Icon Spacing", "ActionTimelineEx.Configurations.SettingsName.ShowWrongClick": "Show the wrong clicking", - "ActionTimelineEx.Configurations.SettingsName.RotationChoice": "Rotation Choice", - "ActionTimelineEx.Configurations.SettingsName.RotationName": "Rotation Name", + "ActionTimelineEx.Configurations.SettingsName.Record": "Record Data", + "ActionTimelineEx.Configurations.SettingsName.ShowTimelineOnlyInDuty": "Show Only In Duty", + "ActionTimelineEx.Configurations.SettingsName.ShowTimelineOnlyInCombat": "Show Only In Combat", + "ActionTimelineEx.Configurations.SettingsName.HideTimelineInCutscene": "Hide In Cutscene", + "ActionTimelineEx.Configurations.SettingsName.HideTimelineInQuestEvent": "Hide In Quest Event", + "ActionTimelineEx.Configurations.SettingsName.SayClipping": "Say Clipping Time", + "ActionTimelineEx.Configurations.SettingsName.ClippintTime": "Clipping Range", + "ActionTimelineEx.Configurations.SettingsName.RecordTargetStatus": "Record Target Status", + "ActionTimelineEx.Configurations.SettingsName.ShowDonate": "Show the donate link.", "ActionTimelineEx.Configurations.DrawingSettingsName.Name": "The timeline Name", "ActionTimelineEx.Configurations.DrawingSettingsName.Enable": "Enable", "ActionTimelineEx.Configurations.DrawingSettingsName.IsRotation": "Is Rotation", @@ -98,25 +107,22 @@ "ActionTimelineEx.Configurations.GroupItem.Bar": "Bar", "ActionTimelineEx.Configurations.GroupItem.Grid": "Grid", "ActionTimelineEx.Configurations.GroupItem.GcdClipping": "GCD Clipping", + "ActionTimelineEx.Configurations.UiString.Setting": "Setting", + "ActionTimelineEx.Configurations.UiString.ShowedStatuses": "Showed Statuses", + "ActionTimelineEx.Configurations.UiString.NotStatues": "Don't record these statuses", "ActionTimelineEx.Configurations.UiString.Wait": "Please wait for a second.", "ActionTimelineEx.Configurations.UiString.Confirm": "Are you sure to remove this timeline?", "ActionTimelineEx.Configurations.UiString.Remove": "Click to remove this timeline.", + "ActionTimelineEx.Configurations.UiString.AddOne": "Add One Timeline", "ActionTimelineEx.Configurations.UiString.RemoveDesc": "Remove this Item:", - "ActionTimelineEx.Configurations.UiString.RotationSetting": "Rotation Setting", - "ActionTimelineEx.Configurations.UiString.Rotation": "Rotation", - "ActionTimelineEx.Configurations.UiString.RotationReset": "Reset Count", "XIVConfigUI.LocalString.Search_Result": "Search Result", "XIVConfigUI.LocalString.Search": "Search", - "XIVConfigUI.LocalString.ResetToDefault": "Reset to Default Value.", "XIVConfigUI.LocalString.ExecuteCommand": "Execute \"{0}\"", "XIVConfigUI.LocalString.CopyCommand": "Copy \"{0}\"", - "XIVConfigUI.LocalString.Remove": "Remove", - "XIVConfigUI.LocalString.MoveUp": "Move Up", - "XIVConfigUI.LocalString.MoveDown": "Move Down", - "XIVConfigUI.LocalString.CopyToClipboard": "Copy to Clipboard", - "XIVConfigUI.LocalString.FromClipboard": "From Clipboard", - "XIVConfigUI.LocalString.List": "List", + "XIVConfigUI.LocalString.Localization": "Click to open the crowdin for modifying localization!", + "XIVConfigUI.LocalString.SourceCode": "Click to see the source code!", "XIVConfigUI.LocalString.Nothing": "No items in Combo", + "XIVConfigUI.LocalString.None": "None", "XIVConfigUI.Attributes.ConfigUnitType.Seconds": "Time Unit, in seconds.", "XIVConfigUI.Attributes.ConfigUnitType.Degree": "Angle Unit, in degrees.", "XIVConfigUI.Attributes.ConfigUnitType.Yalms": "Distance Unit, in yalms.", diff --git a/ActionTimelineEx/Timeline/ActionCate.cs b/ActionTimelineEx/Timeline/ActionCate.cs index db175fb..4f30ed4 100644 --- a/ActionTimelineEx/Timeline/ActionCate.cs +++ b/ActionTimelineEx/Timeline/ActionCate.cs @@ -82,7 +82,6 @@ public enum ActionCate : uint /// LimitBreak15 = 15, - /// /// Artillery /// diff --git a/ActionTimelineEx/Windows/SettingsWindow.cs b/ActionTimelineEx/Windows/SettingsWindow.cs index d55478c..8eb2abc 100644 --- a/ActionTimelineEx/Windows/SettingsWindow.cs +++ b/ActionTimelineEx/Windows/SettingsWindow.cs @@ -51,6 +51,7 @@ public SettingsWindow() : base(typeof(SettingsWindow).Assembly.GetName()) public override void OnClose() { + Settings.RecordRotation = false; Settings.Save(); base.OnClose(); }