aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/Utilities/EventMap.cpp11
-rw-r--r--src/common/Utilities/EventMap.h2
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);