diff options
author | Peter Keresztes Schmidt <carbenium@outlook.com> | 2020-07-15 10:05:11 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-01-23 16:39:31 +0100 |
commit | cd86a015c46f8da581f86857e313d9c596dba7fa (patch) | |
tree | 2cd5cd939f95aa8396cd04ddceaada8e6e80ad61 /src/common/Utilities/EventMap.cpp | |
parent | 15d59640faaa700a971fc0f5721e4e802543ebe1 (diff) |
Core/Util: Remove EventMap's non-std::chrono::duration based interface (#25049)
Closes #25012
(cherry picked from commit ce1e2c0f9b4f80e1fa5c448ee12fec43204a3634)
Diffstat (limited to 'src/common/Utilities/EventMap.cpp')
-rw-r--r-- | src/common/Utilities/EventMap.cpp | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/src/common/Utilities/EventMap.cpp b/src/common/Utilities/EventMap.cpp index 5df8de92c43..080be97245a 100644 --- a/src/common/Utilities/EventMap.cpp +++ b/src/common/Utilities/EventMap.cpp @@ -33,12 +33,7 @@ void EventMap::SetPhase(uint8 phase) _phase = uint8(1 << (phase - 1)); } -void EventMap::ScheduleEvent(uint32 eventId, Milliseconds minTime, Milliseconds maxTime, uint32 group /*= 0*/, uint8 phase /*= 0*/) -{ - ScheduleEvent(eventId, urand(uint32(minTime.count()), uint32(maxTime.count())), group, phase); -} - -void EventMap::ScheduleEvent(uint32 eventId, uint32 time, uint32 group /*= 0*/, uint8 phase /*= 0*/) +void EventMap::ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group /*= 0*/, uint8 phase /*= 0*/) { if (group && group <= 8) eventId |= (1 << (group + 15)); @@ -46,17 +41,33 @@ void EventMap::ScheduleEvent(uint32 eventId, uint32 time, uint32 group /*= 0*/, if (phase && phase <= 8) eventId |= (1 << (phase + 23)); - _eventMap.insert(EventStore::value_type(_time + time, eventId)); + _eventMap.insert(EventStore::value_type(_time + time.count(), eventId)); +} + +void EventMap::ScheduleEvent(uint32 eventId, Milliseconds minTime, Milliseconds maxTime, uint32 group /*= 0*/, uint8 phase /*= 0*/) +{ + ScheduleEvent(eventId, randtime(minTime, maxTime), group, phase); +} + +void EventMap::RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group /*= 0*/, uint8 phase /*= 0*/) +{ + CancelEvent(eventId); + ScheduleEvent(eventId, time, group, phase); } void EventMap::RescheduleEvent(uint32 eventId, Milliseconds minTime, Milliseconds maxTime, uint32 group /*= 0*/, uint8 phase /*= 0*/) { - RescheduleEvent(eventId, urand(uint32(minTime.count()), uint32(maxTime.count())), group, phase); + RescheduleEvent(eventId, randtime(minTime, maxTime), group, phase); +} + +void EventMap::Repeat(Milliseconds time) +{ + _eventMap.insert(EventStore::value_type(_time + time.count(), _lastEvent)); } -void EventMap::Repeat(uint32 minTime, uint32 maxTime) +void EventMap::Repeat(Milliseconds minTime, Milliseconds maxTime) { - Repeat(urand(minTime, maxTime)); + Repeat(randtime(minTime, maxTime)); } uint32 EventMap::ExecuteEvent() @@ -81,7 +92,12 @@ uint32 EventMap::ExecuteEvent() return 0; } -void EventMap::DelayEvents(uint32 delay, uint32 group) +void EventMap::DelayEvents(Milliseconds delay) +{ + _time = delay.count() < _time ? _time - delay.count() : 0; +} + +void EventMap::DelayEvents(Milliseconds delay, uint32 group) { if (!group || group > 8 || Empty()) return; @@ -92,7 +108,7 @@ void EventMap::DelayEvents(uint32 delay, uint32 group) { if (itr->second & (1 << (group + 15))) { - delayed.insert(EventStore::value_type(itr->first + delay, itr->second)); + delayed.insert(EventStore::value_type(itr->first + delay.count(), itr->second)); _eventMap.erase(itr++); } else |