Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
refactor: change the new ui.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed May 11, 2024
1 parent ef2f71f commit dabc50d
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 14 deletions.
1 change: 1 addition & 0 deletions ActionTimelineEx/Configurations/DrawingSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class DrawingSettings
[UI("Size per second", (int)GroupItem.General, Description = "This is the width of every second drawn on the window.")]
public float SizePerSecond { get; set; } = 60;

[Range(0, 5, ConfigUnitType.Seconds, 0.1f)]
[UI("Offset Time", (int)GroupItem.General, Description = "If your Is Rotation is on, this means the Offset time of rotation, or this is the advanced time about action using.")]
public int TimeOffsetSetting { get; set; } = 2;

Expand Down
6 changes: 6 additions & 0 deletions ActionTimelineEx/Configurations/UiString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,10 @@ internal enum UiString

[Description("Click to remove this timeline.")]
Remove,

[Description("Add One Timeline")]
AddOne,

[Description("Remove this Item:")]
RemoveDesc,
}
105 changes: 104 additions & 1 deletion ActionTimelineEx/Localization/Localization.json
Original file line number Diff line number Diff line change
@@ -1 +1,104 @@
{}
{
"ActionTimelineEx.DescriptionAboutCommand": "Opens the ActionTimeline configuration window.",
"ActionTimeline.SettingsName.Record": "Record Data",
"ActionTimeline.SettingsName.ShowTimelineOnlyInDuty": "Show Only In Duty",
"ActionTimeline.SettingsName.ShowTimelineOnlyInCombat": "Show Only In Combat",
"ActionTimeline.SettingsName.HideTimelineInCutscene": "Hide In Cutscene",
"ActionTimeline.SettingsName.HideTimelineInQuestEvent": "Hide In Quest Event",
"ActionTimeline.SettingsName.SayClipping": "Say Clipping Time",
"ActionTimeline.SettingsName.ClippintTime": "Clipping Range",
"ActionTimeline.SettingsName.RecordTargetStatus": "Record Target Status",
"ActionTimelineEx.Configurations.DrawingSettingsName.Name": "The timeline Name",
"ActionTimelineEx.Configurations.DrawingSettingsName.Enable": "Enable",
"ActionTimelineEx.Configurations.DrawingSettingsName.IsRotation": "Is Rotation",
"ActionTimelineEx.Configurations.DrawingSettingsName.IsHorizonal": "Is Horizonal",
"ActionTimelineEx.Configurations.DrawingSettingsName.IsReverse": "Is Reverse",
"ActionTimelineEx.Configurations.DrawingSettingsName.Locked": "Locked",
"ActionTimelineEx.Configurations.DrawingSettingsName.LockedBackgroundColor": "Locked Background Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.UnlockedBackgroundColor": "Unlocked Background Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.SizePerSecond": "Size per second",
"ActionTimelineEx.Configurations.DrawingSettingsDescription.SizePerSecond": "This is the width of every second drawn on the window.",
"ActionTimelineEx.Configurations.DrawingSettingsName.TimeOffsetSetting": "Offset Time",
"ActionTimelineEx.Configurations.DrawingSettingsDescription.TimeOffsetSetting": "If your Is Rotation is on, this means the Offset time of rotation, or this is the advanced time about action using.",
"ActionTimelineEx.Configurations.DrawingSettingsName.CenterOffset": "Center Offset",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDIconSize": "GCD Icon Size",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowOGCD": "Show Off GCD",
"ActionTimelineEx.Configurations.DrawingSettingsName.OGCDIconSize": "Off GCD Icon Size",
"ActionTimelineEx.Configurations.DrawingSettingsName.OGCDOffset": "Off GCD Vertical Offset",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowAutoAttack": "Show Auto Attack",
"ActionTimelineEx.Configurations.DrawingSettingsName.AutoAttackIconSize": "Auto Attack Icon Size",
"ActionTimelineEx.Configurations.DrawingSettingsName.AutoAttackOffset": "Auto Attack Offset",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowStatus": "Show Status Gain Lose",
"ActionTimelineEx.Configurations.DrawingSettingsName.StatusIconSize": "Status Icon Size",
"ActionTimelineEx.Configurations.DrawingSettingsName.StatusIconAlpha": "Status Icon Alpha",
"ActionTimelineEx.Configurations.DrawingSettingsName.StatusGainColor": "Status Gain Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.StatusLoseColor": "Status Lose Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.StatusOffset": "Status Offset",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowDamageType": "Show Damage Type",
"ActionTimelineEx.Configurations.DrawingSettingsName.DirectColor": "Direct Damage Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.CriticalColor": "Critical Damage Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.CriticalDirectColor": "Critical Direct Damage Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.BackgroundColor": "Bar Background Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDBorderColor": "GCD Border Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDThickness": "GCD Border Thickness",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDRound": "GCD Border Round",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDHeight": "GCD Bar Height",
"ActionTimelineEx.Configurations.DrawingSettingsName.CastInProgressColor": "Cast In Progress Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.CastFinishedColor": "Cast Finished Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.CastCanceledColor": "Cast Canceled Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowAnimationLock": "Show Animation Lock Time",
"ActionTimelineEx.Configurations.DrawingSettingsName.AnimationLockColor": "Animation Lock Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowStatusLine": "Show Status Line",
"ActionTimelineEx.Configurations.DrawingSettingsName.StatusLineSize": "Status Line Height",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowGrid": "Show Grid",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridStartLineWidth": "Start Line Width",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridStartLineColor": "Start Line Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.ShowGridCenterLine": "Show Center Line",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridCenterLineWidth": "Center Line Width",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridCenterLineColor": "Center Line Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridLineWidth": "Line Width",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridLineColor": "Line Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridDivideBySeconds": "Divide By Seconds",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridShowSecondsText": "Show Text",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridSubdivideSeconds": "Sub-Divide By Seconds",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridSubdivisionCount": "Sub-Division Count",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridSubdivisionLineWidth": "Sub-Division Line Width",
"ActionTimelineEx.Configurations.DrawingSettingsName.GridSubdivisionLineColor": "Sub-Division Line Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDClippingThreshold": "Threshold",
"ActionTimelineEx.Configurations.DrawingSettingsDescription.GCDClippingThreshold": "This can be used filter out \"false positives\" due to latency or other factors. Any GCD clipping detected that is shorter than this value will be ignored.\nIt is strongly recommended that you test out different values and find out what works best for your setup.",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDClippingMaxTime": "Max Time",
"ActionTimelineEx.Configurations.DrawingSettingsDescription.GCDClippingMaxTime": "Any GCD clip longer than this will be capped",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDClippingColor": "Color",
"ActionTimelineEx.Configurations.DrawingSettingsName.GCDClippingTextColor": "Text Color",
"ActionTimelineEx.Configurations.GroupItem.General": "General",
"ActionTimelineEx.Configurations.GroupItem.Icons": "Icons",
"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.Help": "Help",
"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.",
"XIVConfigUI.LocalString.Search_Result": "Search Result",
"XIVConfigUI.LocalString.Searching": "Search... ",
"XIVConfigUI.LocalString.Search": "Search",
"XIVConfigUI.LocalString.ResetToDefault": "Reset to Default Value.",
"XIVConfigUI.LocalString.ExecuteCommand": "Execute \"{0}\"",
"XIVConfigUI.LocalString.CopyCommand": "Copy \"{0}\"",
"XIVConfigUI.LocalString.Localization": "Click to open the crowdin for modifying localization!",
"XIVConfigUI.LocalString.SourceCode": "Click to see the source code!",
"XIVConfigUI.Attributes.ConfigUnitType.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.",
"XIVConfigUI.Attributes.ConfigUnitType.Percent": "Ratio Unit, as percentage.",
"XIVConfigUI.Attributes.ConfigUnitType.Pixels": "Display Unit, in pixels.",
"ActionTimelineEx.Punchline": "Show your actions in real-time.",
"ActionTimeline.Windows.SettingsWindow+TimelineItem": "ActionTimeline.Windows.SettingsWindow+TimelineItem",
"ActionTimelineEx.Description": "Configurable timeline display of all the actions you use.",
"ActionTimelineEx.Configurations.UiString.AddOne": "Add One Timeline",
"ActionTimelineEx.Configurations.UiString.RemoveDesc": "Remove this Item:"
}
8 changes: 5 additions & 3 deletions ActionTimelineEx/Plugin.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using ActionTimeline.Helpers;
using ActionTimeline.Timeline;
using ActionTimeline.Windows;
using ActionTimelineEx.Configurations;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin;
Expand Down Expand Up @@ -66,10 +67,11 @@ public class Plugin : IDalamudPlugin
public Plugin(DalamudPluginInterface pluginInterface)
{
ECommonsMain.Init(pluginInterface, this);
XIVConfigUIMain.Init(pluginInterface, "/atlConfig");
XIVConfigUIMain.Init(pluginInterface, "/atlConfig", "Opens the ActionTimeline configuration window.", PluginCommand, typeof(Settings), typeof(DrawingSettings), typeof(GroupItem), typeof(UiString));

Svc.PluginInterface.UiBuilder.Draw += Draw;
Svc.PluginInterface.UiBuilder.OpenConfigUi += OpenConfigUi;
Svc.PluginInterface.UiBuilder.OpenMainUi += OpenConfigUi;

TimelineManager.Initialize();
DrawHelper.Init();
Expand Down Expand Up @@ -99,12 +101,12 @@ public void Dispose()

Svc.PluginInterface.UiBuilder.Draw -= Draw;
Svc.PluginInterface.UiBuilder.OpenConfigUi -= OpenConfigUi;
Svc.PluginInterface.UiBuilder.OpenMainUi -= OpenConfigUi;
Svc.PluginInterface.UiBuilder.RebuildFonts();
GC.SuppressFinalize(this);
}

[Cmd("/atl", "Opens the ActionTimeline configuration window.")]
public static void PluginCommand(string _, string _1)
public static void PluginCommand(string _)
{
_settingsWindow.Toggle();
}
Expand Down
41 changes: 32 additions & 9 deletions ActionTimelineEx/Windows/SettingsWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,34 @@
using Lumina.Excel.GeneratedSheets;
using System.Numerics;
using XIVConfigUI;
using XIVConfigUI.SearchableConfigs;

namespace ActionTimeline.Windows;

public class SettingsWindow : ConfigWindow
{
internal class TimelineItem(DrawingSettings setting, System.Action clearItems) : ConfigWindowItem
public override IEnumerable<Searchable> Searchables
{
get
{
if(ActiveItem is TimelineItem item)
{
return [..base.Searchables, ..item.Collection];
}
else
{
return base.Searchables;
}
}
}

private readonly SearchableCollection collection = new(setting);
internal class TimelineItem(DrawingSettings setting, System.Action clearItems) : ConfigWindowItem
{
internal readonly SearchableCollection Collection = new(setting);
private CollapsingHeaderGroup? _extraHeader;

public override string Name => setting.Name;

public override bool GetIcon(out IDalamudTextureWrap texture)
{
return ImageLoader.GetTexture(42, out texture);
Expand All @@ -38,11 +55,11 @@ public override void Draw(ConfigWindow window)

_extraHeader ??= new(new()
{
{ () =>GroupItem.General.Local(), () => collection.DrawItems((int)GroupItem.General) },
{ () =>GroupItem.Icons.Local(), () => collection.DrawItems((int)GroupItem.Icons) },
{ () =>GroupItem.Bar.Local(), () => collection.DrawItems((int)GroupItem.Bar) },
{ () =>GroupItem.Grid.Local(), () => collection.DrawItems((int)GroupItem.Grid) },
{ () =>GroupItem.GcdClipping.Local(), () => collection.DrawItems((int)GroupItem.GcdClipping) },
{ () =>GroupItem.General.Local(), () => Collection.DrawItems((int)GroupItem.General) },
{ () =>GroupItem.Icons.Local(), () => Collection.DrawItems((int)GroupItem.Icons) },
{ () =>GroupItem.Bar.Local(), () => Collection.DrawItems((int)GroupItem.Bar) },
{ () =>GroupItem.Grid.Local(), () => Collection.DrawItems((int)GroupItem.Grid) },
{ () =>GroupItem.GcdClipping.Local(), () => Collection.DrawItems((int)GroupItem.GcdClipping) },
});
_extraHeader?.Draw();
}
Expand All @@ -58,6 +75,9 @@ private bool RemoveValue(string name)

if (isLast) ImGui.PushStyleColor(ImGuiCol.Text, isTime ? ImGuiColors.HealerGreen : ImGuiColors.DPSRed);

ImGui.Text(UiString.RemoveDesc.Local());
ImGui.SameLine();

ImGui.PushFont(UiBuilder.IconFont);
if (ImGui.Button($"{(isLast ? FontAwesomeIcon.Check : FontAwesomeIcon.Ban).ToIconString()}##Remove{name}"))
{
Expand Down Expand Up @@ -86,12 +106,14 @@ private bool RemoveValue(string name)
return result;
}
}
private float _scale => ImGuiHelpers.GlobalScale;
private static float _scale => ImGuiHelpers.GlobalScale;
public override SearchableCollection Collection { get; } = new(Settings);
protected override string Kofi => "B0B0IN5DX";

protected override string DiscordServerID => "1228953752585637908";
protected override string DiscordServerInviteLink => "9D4E8eZW5g";

protected override string Crowdin => "actiontimelineex";
private static Settings Settings => Plugin.Settings;
public SettingsWindow() : base(typeof(SettingsWindow).Assembly.GetName())
{
Expand Down Expand Up @@ -130,12 +152,13 @@ protected override void DrawAbout()

private void DrawSetting()
{
if (ImGui.Button("Add One Timeline"))
if (ImGui.Button(UiString.AddOne.Local()))
{
Settings.TimelineSettings.Add(new DrawingSettings()
{
Name = (Settings.TimelineSettings.Count + 1).ToString(),
});
ClearItems();
}

Collection.DrawItems(0);
Expand Down

0 comments on commit dabc50d

Please sign in to comment.