Core/EventProcessor: std::chrono-ify the remaining public API

(cherry picked from commit 1d8782e356)
This commit is contained in:
Carbenium
2020-07-25 23:51:30 +02:00
committed by Shauren
parent eeffb310de
commit a7cbb16229
5 changed files with 20 additions and 20 deletions

View File

@@ -110,24 +110,24 @@ void EventProcessor::KillAllEvents(bool force)
m_events.clear();
}
void EventProcessor::AddEvent(BasicEvent* event, uint64 e_time, bool set_addtime)
void EventProcessor::AddEvent(BasicEvent* event, Milliseconds e_time, bool set_addtime)
{
if (set_addtime)
event->m_addTime = m_time;
event->m_execTime = e_time;
m_events.insert(std::pair<uint64, BasicEvent*>(e_time, event));
event->m_execTime = e_time.count();
m_events.insert(std::pair<uint64, BasicEvent*>(e_time.count(), event));
}
void EventProcessor::ModifyEventTime(BasicEvent* event, uint64 newTime)
void EventProcessor::ModifyEventTime(BasicEvent* event, Milliseconds newTime)
{
for (auto itr = m_events.begin(); itr != m_events.end(); ++itr)
{
if (itr->second != event)
continue;
event->m_execTime = newTime;
event->m_execTime = newTime.count();
m_events.erase(itr);
m_events.insert(std::pair<uint64, BasicEvent*>(newTime, event));
m_events.insert(std::pair<uint64, BasicEvent*>(newTime.count(), event));
break;
}
}

View File

@@ -99,17 +99,17 @@ class TC_COMMON_API EventProcessor
void Update(uint32 p_time);
void KillAllEvents(bool force);
void AddEvent(BasicEvent* event, uint64 e_time, bool set_addtime = true);
void AddEvent(BasicEvent* event, Milliseconds e_time, bool set_addtime = true) { AddEvent(event, e_time.count(), set_addtime); };
void AddEvent(BasicEvent* event, Milliseconds e_time, bool set_addtime = true);
template<typename T>
is_lambda_event<T> AddEvent(T&& event, uint64 e_time, bool set_addtime = true) { AddEvent(new LambdaBasicEvent<T>(std::move(event)), e_time, set_addtime); }
void AddEventAtOffset(BasicEvent* event, Milliseconds offset) { AddEvent(event, CalculateTime(offset).count()); }
void AddEventAtOffset(BasicEvent* event, Milliseconds offset, Milliseconds offset2) { AddEvent(event, CalculateTime(randtime(offset, offset2)).count()); }
is_lambda_event<T> AddEvent(T&& event, Milliseconds e_time, bool set_addtime = true) { AddEvent(new LambdaBasicEvent<T>(std::move(event)), e_time, set_addtime); }
void AddEventAtOffset(BasicEvent* event, Milliseconds offset) { AddEvent(event, CalculateTime(offset)); }
void AddEventAtOffset(BasicEvent* event, Milliseconds offset, Milliseconds offset2) { AddEvent(event, CalculateTime(randtime(offset, offset2))); }
template<typename T>
is_lambda_event<T> AddEventAtOffset(T&& event, Milliseconds offset) { AddEventAtOffset(new LambdaBasicEvent<T>(std::move(event)), offset); }
template<typename T>
is_lambda_event<T> AddEventAtOffset(T&& event, Milliseconds offset, Milliseconds offset2) { AddEventAtOffset(new LambdaBasicEvent<T>(std::move(event)), offset, offset2); }
void ModifyEventTime(BasicEvent* event, uint64 newTime);
void ModifyEventTime(BasicEvent* event, Milliseconds newTime);
Milliseconds CalculateTime(Milliseconds t_offset) const { return Milliseconds(m_time) + t_offset; }
std::multimap<uint64, BasicEvent*> const& GetEvents() const { return m_events; }

View File

@@ -828,7 +828,7 @@ uint64 Spell::CalculateDelayMomentForDst(float launchDelay) const
void Spell::RecalculateDelayMomentForDst()
{
m_delayMoment = CalculateDelayMomentForDst(0.0f);
m_caster->m_Events.ModifyEventTime(_spellEvent, GetDelayStart() + m_delayMoment);
m_caster->m_Events.ModifyEventTime(_spellEvent, Milliseconds(GetDelayStart() + m_delayMoment));
}
void Spell::SelectEffectImplicitTargets(SpellEffectInfo const& spellEffectInfo, SpellImplicitTargetInfo const& targetType, uint32& processedEffectMask)
@@ -7838,7 +7838,7 @@ bool SpellEvent::Execute(uint64 e_time, uint32 p_time)
if (n_offset)
{
// re-add us to the queue
m_Spell->GetCaster()->m_Events.AddEvent(this, m_Spell->GetDelayStart() + n_offset, false);
m_Spell->GetCaster()->m_Events.AddEvent(this, Milliseconds(m_Spell->GetDelayStart() + n_offset), false);
return false; // event not complete
}
// event complete
@@ -7856,7 +7856,7 @@ bool SpellEvent::Execute(uint64 e_time, uint32 p_time)
else
ASSERT(n_offset == m_Spell->GetDelayMoment());
// re-plan the event for the delay moment
m_Spell->GetCaster()->m_Events.AddEvent(this, e_time + m_Spell->GetDelayMoment(), false);
m_Spell->GetCaster()->m_Events.AddEvent(this, Milliseconds(e_time + m_Spell->GetDelayMoment()), false);
return false; // event not complete
}
break;
@@ -7870,7 +7870,7 @@ bool SpellEvent::Execute(uint64 e_time, uint32 p_time)
}
// spell processing not complete, plan event on the next update interval
m_Spell->GetCaster()->m_Events.AddEvent(this, e_time + 1, false);
m_Spell->GetCaster()->m_Events.AddEvent(this, Milliseconds(e_time + 1), false);
return false; // event not complete
}

View File

@@ -243,7 +243,7 @@ class ActivateLivingConstellation : public BasicEvent
return true; // delete event
_owner->CastSpell(nullptr, SPELL_TRIGGER_3_ADDS, TRIGGERED_FULL_MASK);
_owner->m_Events.AddEvent(this, execTime + urand(45000, 50000));
_owner->m_Events.AddEvent(this, Milliseconds(execTime) + randtime(45s, 50s));
return false;
}
@@ -275,7 +275,7 @@ class SummonUnleashedDarkMatter : public BasicEvent
bool Execute(uint64 execTime, uint32 /*diff*/) override
{
_caster->CastSpell(nullptr, SPELL_SUMMON_UNLEASHED_DARK_MATTER, TRIGGERED_FULL_MASK);
_caster->m_Events.AddEvent(this, execTime + 30000);
_caster->m_Events.AddEvent(this, Milliseconds(execTime) + 30s);
return false;
}

View File

@@ -392,7 +392,7 @@ class TrashJumpEvent : public BasicEvent
case 0:
_owner->CastSpell(nullptr, SPELL_LEAP);
++_stage;
_owner->m_Events.AddEvent(this, eventTime + 2000);
_owner->m_Events.AddEvent(this, Milliseconds(eventTime) + 2s);
return false;
case 1:
_owner->SetReactState(REACT_AGGRESSIVE);
@@ -423,7 +423,7 @@ class LightningFieldEvent : public BasicEvent
if (instance->GetBossState(BOSS_THORIM) == IN_PROGRESS)
{
_owner->CastSpell(nullptr, SPELL_LIGHTNING_FIELD);
_owner->m_Events.AddEvent(this, eventTime + 1000);
_owner->m_Events.AddEvent(this, Milliseconds(eventTime) + 1s);
return false;
}
}