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

Commit

Permalink
fix: fixed timeline.
Browse files Browse the repository at this point in the history
  • Loading branch information
ArchiDog1998 committed Feb 29, 2024
1 parent bab5963 commit 37ce88e
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 19 deletions.
4 changes: 2 additions & 2 deletions Resources/RotationSolverRecord.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"ClickingCount": 88321,
"SayingHelloCount": 103,
"ClickingCount": 88632,
"SayingHelloCount": 112,
"SaidUsers": []
}
9 changes: 7 additions & 2 deletions RotationSolver.Basic/Data/TimelineItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,18 @@ public void UpdateRaidTimeOffset()
{
if (Name == "--Reset--")
{
DataCenter.RaidTimeRaw = -1;
#if DEBUG
Svc.Log.Debug($"Reset the {nameof(DataCenter.RaidTimeRaw)}.");
#endif
DataCenter.RaidTimeRaw = -1;
}
else
{
#if DEBUG
var timeOffset = Time - DataCenter.RaidTimeRaw;
Svc.Log.Debug($"Set the {nameof(DataCenter.RaidTimeRaw)} to {Time}, added {timeOffset}s");
#endif
DataCenter.RaidTimeRaw = Time;
Svc.Log.Debug($"Reset the {nameof(DataCenter.RaidTimeRaw)} to {DataCenter.RaidTimeRaw}.");
}
}

Expand Down
4 changes: 2 additions & 2 deletions RotationSolver/Commands/RSCommands_Actions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ public static void DoAction()
}

#if DEBUG
if (nextAction is BaseAction acti)
Svc.Log.Debug($"Will Do {acti}");
//if (nextAction is BaseAction acti)
// Svc.Log.Debug($"Will Do {acti}");
#endif

if (Service.Config.KeyBoardNoise)
Expand Down
3 changes: 3 additions & 0 deletions RotationSolver/Data/UiString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,9 @@ internal enum UiString
[Description("From Clipboard")]
ActionSequencer_FromClipboard,

[Description("Open the timeline link.")]
Timeline_OpenLink,

[Description("Add Status")]
ConfigWindow_List_AddStatus,

Expand Down
3 changes: 2 additions & 1 deletion RotationSolver/Localization/Localization.json
Original file line number Diff line number Diff line change
Expand Up @@ -339,5 +339,6 @@
"RotationSolver.Basic.Data.AutoStatus.Burst": "Burst",
"RotationSolver.Basic.Data.AutoStatus.Speed": "Speed",
"RotationSolver.Basic.Data.AutoStatus.LimitBreak": "LimitBreak",
"RotationSolver.Data.UiString.ConfigWindow_Condition_DutyName": "Duty Name"
"RotationSolver.Data.UiString.ConfigWindow_Condition_DutyName": "Duty Name",
"RotationSolver.Data.UiString.Timeline_OpenLink": "Open the timeline link."
}
10 changes: 10 additions & 0 deletions RotationSolver/UI/RotationConfigWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,16 @@ static string GetName(TerritoryType? territory)
}
}

var link = RaidTimeUpdater.GetLink(_territoryId);
if (!string.IsNullOrEmpty(link))
{
ImGui.SameLine();
if (ImGui.Button(UiString.Timeline_OpenLink.Local()))
{
Util.OpenLink(link);
}
}

_timelineGroup.ClearCollapsingHeader();

foreach (var item in RaidTimeUpdater.GetRaidTime((ushort)_territoryId))
Expand Down
1 change: 1 addition & 0 deletions RotationSolver/Updaters/ActionUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ private static void UpdateCombatTime()
{
foreach (var item in DataCenter.TimelineItems)
{
if (item.IsShown) continue;
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.InCombat) continue;

Expand Down
8 changes: 7 additions & 1 deletion RotationSolver/Updaters/RaidTimeUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ internal static partial class RaidTimeUpdater
private static readonly Dictionary<uint, TimelineItem[]> _savedTimeLines = [];
private static readonly Queue<(DateTime, ActionTimelineItem)> _addedItems = new();

public static string GetLink(uint id)
{
if (!PathForRaids.TryGetValue(id, out var path)) return string.Empty;
return "https://github.com/xpdota/event-trigger/tree/master/timelines/src/main/resources/timeline/" + path;
}

internal static void UpdateTimeline()
{
if (!Service.Config.Timeline.TryGetValue(Svc.ClientState.TerritoryType, out var timeline)) return;
Expand Down Expand Up @@ -219,7 +225,7 @@ static async Task<TimelineItem[]> DownloadRaidTimeAsync(string path, RaidLangs l
Svc.Log.Debug(item.ToString());
}
#endif
return [..result];
return [..result.OrderBy(i => i.Time)];
}

[GeneratedRegex(" .*? {")]
Expand Down
1 change: 1 addition & 0 deletions RotationSolver/Updaters/TargetUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ private static void UpdateCastingRefine(IEnumerable<BattleChara> allTargets)

foreach (var item in DataCenter.TimelineItems)
{
if (item.IsShown) continue;
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.StartsUsing) continue;
if (!item.IsIdMatched(b.CastActionId)) continue;
Expand Down
35 changes: 24 additions & 11 deletions RotationSolver/Watcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using FFXIVClientStructs.FFXIV.Client.Game;
using Lumina.Excel.GeneratedSheets;
using RotationSolver.Basic.Configuration;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using GameObject = FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject;

Expand Down Expand Up @@ -74,6 +75,7 @@ private static void Chat_ChatMessage(Dalamud.Game.Text.XivChatType type, uint se
#endif
foreach (var item in DataCenter.TimelineItems)
{
if (item.IsShown) continue;
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.GameLog) continue;

Expand Down Expand Up @@ -103,13 +105,34 @@ private static void GameNetwork_NetworkMessage(nint dataPtr, ushort opCode, uint
case OpCode.ActorControl:
OnActorControl(dataPtr);
break;

case OpCode.Effect:
OnEffect(dataPtr, targetActorId);
break;
}
}

private static void OnEffect(IntPtr dataPtr, uint targetActorId)
{
var name = Svc.Objects.SearchById(targetActorId)?.Name.TextValue ?? string.Empty;
foreach (var item in DataCenter.TimelineItems)
{
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.Ability) continue;

if (!item.IsIdMatched(ReadUint(dataPtr, 28))) continue;
if (!new Regex(item["source"]).IsMatch(name) && item.IsShown) continue; //Maybe this is not correct.

item.UpdateRaidTimeOffset();
break;
}
}

private static void OnActorControl(IntPtr dataPtr)
{
foreach (var item in DataCenter.TimelineItems)
{
if (item.IsShown) continue;
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.ActorControl) continue;

Expand Down Expand Up @@ -167,6 +190,7 @@ private static void OnSystemLogMessage(IntPtr dataPtr)
{
foreach (var item in DataCenter.TimelineItems)
{
if (item.IsShown) continue;
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.SystemLogMessage) continue;
if (!item.IsIdMatched(ReadUint(dataPtr, 4))) continue;
Expand Down Expand Up @@ -303,17 +327,6 @@ private static void UpdateRTTDetour(dynamic obj)

private static void ActionFromEnemy(ActionEffectSet set)
{
foreach (var item in DataCenter.TimelineItems)
{
if (item.Time < DataCenter.RaidTimeRaw) continue;
if (item.Type is not TimelineType.Ability) continue;
if (!item.IsIdMatched(set.Action?.RowId ?? 0)) continue;
//if (!new Regex(item["source"]).IsMatch(set.Source?.Name.TextValue ?? string.Empty)) continue;

item.UpdateRaidTimeOffset();
break;
}

//Check Source.
var source = set.Source;
if (source == null) return;
Expand Down

0 comments on commit 37ce88e

Please sign in to comment.