|
7 | 7 | using SomethingNeedDoing.Core.Events; |
8 | 8 | using SomethingNeedDoing.Core.Interfaces; |
9 | 9 | using SomethingNeedDoing.LuaMacro; |
| 10 | +using SomethingNeedDoing.LuaMacro.Wrappers; |
10 | 11 | using SomethingNeedDoing.NativeMacro; |
11 | 12 | using System.Collections.Concurrent; |
12 | 13 | using System.Text.RegularExpressions; |
@@ -524,15 +525,39 @@ private void SubscribeToTriggerEvents() |
524 | 525 | Svc.ClientState.Logout += OnLogout; |
525 | 526 | } |
526 | 527 |
|
527 | | - private void OnAddonEvent(AddonEvent type, AddonArgs args) |
| 528 | + private long _combatStart = 0; |
| 529 | + private void OnFrameworkUpdate(IFramework framework) |
528 | 530 | { |
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); |
531 | 555 | } |
532 | 556 |
|
533 | | - private void OnFrameworkUpdate(IFramework framework) |
| 557 | + private void OnAddonEvent(AddonEvent type, AddonArgs args) |
534 | 558 | { |
535 | | - _ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnUpdate); |
| 559 | + var eventData = new { type, args }; |
| 560 | + _ = _triggerEventManager.RaiseTriggerEvent(TriggerEvent.OnAddonEvent, eventData); |
536 | 561 | } |
537 | 562 |
|
538 | 563 | private void OnConditionChange(ConditionFlag flag, bool value) |
|
0 commit comments