24 _time = TimePoint::min();
79 if (itr->first >
_time)
85 auto eventId = itr->second._id;
101 for (
auto itr = delayed.begin(); itr != delayed.end();)
103 EventStore::node_type node = delayed.extract(itr++);
104 node.key() = node.key() + delay;
118 if (itr->second._groupMask &
GroupMask(1u << (group - 1u)))
120 delayed.insert(EventStore::value_type(itr->first + delay, itr->second));
127 _eventMap.insert(delayed.begin(), delayed.end());
137 if (eventId == itr->second._id)
139 if (itr->first < (
_time + delay))
141 _eventMap.insert(EventStore::value_type(
_time + delay, itr->second));
158 if (eventId == itr->second._id)
172 if (itr->second._groupMask &
GroupMask(1u << (group - 1u)))
181 for (
auto const& [time, event] :
_eventMap)
182 if (eventId == event._id)
183 return std::chrono::duration_cast<Milliseconds>(time -
_time);
185 return Milliseconds::max();
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Milliseconds randtime(Milliseconds min, Milliseconds max)
bool HasEventScheduled(EventId eventId) const
void Repeat(Milliseconds time)
std::multimap< TimePoint, Event > EventStore
Milliseconds GetTimeUntilEvent(EventId eventId) const
void DelayEvents(Milliseconds delay)
void SetMinimalDelay(EventId eventId, Milliseconds delay)
void RescheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void CancelEvent(EventId eventId)
void SetPhase(PhaseIndex phase)
void CancelEventGroup(GroupIndex group)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)