diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/Utilities/EventMap.cpp | 11 | ||||
-rw-r--r-- | src/common/Utilities/EventMap.h | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/common/Utilities/EventMap.cpp b/src/common/Utilities/EventMap.cpp index e4a1b447579..d2ff65a14c5 100644 --- a/src/common/Utilities/EventMap.cpp +++ b/src/common/Utilities/EventMap.cpp @@ -94,7 +94,16 @@ uint32 EventMap::ExecuteEvent() void EventMap::DelayEvents(Milliseconds delay) { - _time = delay < _time - _time.min() ? _time - delay : TimePoint::min(); + if (Empty()) + return; + + EventStore delayed = std::move(_eventMap); + for (EventStore::iterator itr = delayed.begin(); itr != delayed.end();) + { + EventStore::node_type node = delayed.extract(itr++); + node.key() = node.key() + delay; + _eventMap.insert(_eventMap.end(), std::move(node)); + } } void EventMap::DelayEvents(Milliseconds delay, uint32 group) diff --git a/src/common/Utilities/EventMap.h b/src/common/Utilities/EventMap.h index 81f06b33b51..f627f1d1ab2 100644 --- a/src/common/Utilities/EventMap.h +++ b/src/common/Utilities/EventMap.h @@ -179,7 +179,7 @@ public: /** * @name DelayEvents - * @brief Delays all events. If delay is greater than or equal internal timer, delay will be 0. + * @brief Delays all events. * @param delay Amount of delay as std::chrono type. */ void DelayEvents(Milliseconds delay); |