Skip to content

Commit d643b04

Browse files
committed
add combat start/end events
1 parent 201e5cd commit d643b04

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

SomethingNeedDoing/Managers/MacroScheduler.cs

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using SomethingNeedDoing.Core.Events;
88
using SomethingNeedDoing.Core.Interfaces;
99
using SomethingNeedDoing.LuaMacro;
10+
using SomethingNeedDoing.LuaMacro.Wrappers;
1011
using SomethingNeedDoing.NativeMacro;
1112
using System.Collections.Concurrent;
1213
using System.Text.RegularExpressions;
@@ -524,15 +525,39 @@ private void SubscribeToTriggerEvents()
524525
Svc.ClientState.Logout += OnLogout;
525526
}
526527

527-
private void OnAddonEvent(AddonEvent type, AddonArgs args)
528+
private long _combatStart = 0;
529+
private void OnFrameworkUpdate(IFramework framework)
528530
{
529-
var eventData = new { type, args };
530-
_ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnAddonEvent, eventData);
531+
if (Svc.Condition[ConditionFlag.InCombat])
532+
{
533+
if (_combatStart == 0)
534+
{
535+
_combatStart = DateTime.Now.Ticks;
536+
var startTimestamp = _combatStart;
537+
var opponents = Svc.Objects.Where(o => o.TargetObjectId == Player.Object.GameObjectId).Select(o => new EntityWrapper(o));
538+
_ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnCombatStart, new { startTimestamp, opponents });
539+
Svc.Log.Verbose($"[{nameof(MacroScheduler)}] Combat started against {string.Join(", ", opponents.Select(o => o.Name))} at {startTimestamp}");
540+
}
541+
}
542+
else
543+
{
544+
if (_combatStart != 0)
545+
{
546+
var endTimestamp = DateTime.Now.Ticks;
547+
var duration = TimeSpan.FromTicks(endTimestamp - _combatStart).TotalSeconds;
548+
_combatStart = 0;
549+
_ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnCombatEnd, new { endTimestamp, duration });
550+
Svc.Log.Verbose($"[{nameof(MacroScheduler)}] Combat ended at {endTimestamp} in {duration:F2} seconds");
551+
}
552+
}
553+
554+
_ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnUpdate);
531555
}
532556

533-
private void OnFrameworkUpdate(IFramework framework)
557+
private void OnAddonEvent(AddonEvent type, AddonArgs args)
534558
{
535-
_ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnUpdate);
559+
var eventData = new { type, args };
560+
_ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnAddonEvent, eventData);
536561
}
537562

538563
private void OnConditionChange(ConditionFlag flag, bool value)

0 commit comments

Comments
 (0)