diff --git a/Source/Framework/Dynamic/EventMap.cs b/Source/Framework/Dynamic/EventMap.cs index 1d68d2b7e..ec86a4974 100644 --- a/Source/Framework/Dynamic/EventMap.cs +++ b/Source/Framework/Dynamic/EventMap.cs @@ -29,7 +29,7 @@ namespace Framework.Dynamic public void Reset() { _eventMap.Clear(); - _time = 0; + _time = TimeSpan.Zero; _phase = 0; } @@ -38,6 +38,15 @@ namespace Framework.Dynamic /// /// Value in ms to be added to time. public void Update(uint time) + { + Update(TimeSpan.FromMilliseconds(time)); + } + + /// + /// Updates the timer of the event map. + /// + /// Value in ms to be added to time. + void Update(TimeSpan time) { _time += time; } @@ -107,7 +116,7 @@ namespace Framework.Dynamic if (phase != 0 && phase <= 8) eventId |= (uint)(1 << (phase + 23)); - _eventMap.Add(_time + (uint)time.TotalMilliseconds, eventId); + _eventMap.Add(_time + time, eventId); } /// @@ -155,7 +164,7 @@ namespace Framework.Dynamic /// Time until the event occurs as TimeSpan. public void Repeat(TimeSpan time) { - _eventMap.Add(_time + (uint)time.TotalMilliseconds, _lastEvent); + _eventMap.Add(_time + time, _lastEvent); } /// @@ -211,11 +220,11 @@ namespace Framework.Dynamic if (Empty()) return; - MultiMap delayed = new(); + MultiMap delayed = new(); foreach (var pair in _eventMap.KeyValueList) { - delayed.Add(pair.Key + (uint)delay.TotalMilliseconds, pair.Value); + delayed.Add(pair.Key + delay, pair.Value); _eventMap.Remove(pair.Key, pair.Value); } @@ -233,13 +242,13 @@ namespace Framework.Dynamic if (group == 0 || group > 8 || Empty()) return; - MultiMap delayed = new(); + MultiMap delayed = new(); foreach (var pair in _eventMap.KeyValueList) { if (Convert.ToBoolean(pair.Value & (1 << (int)(group + 15)))) { - delayed.Add(pair.Key + (uint)delay.TotalMilliseconds, pair.Value); + delayed.Add(pair.Key + delay, pair.Value); _eventMap.Remove(pair.Key, pair.Value); } } @@ -289,7 +298,7 @@ namespace Framework.Dynamic { foreach (var pair in _eventMap) if (eventId == (pair.Value & 0x0000FFFF)) - return TimeSpan.FromMilliseconds(pair.Key - _time); + return pair.Key - _time; return TimeSpan.MaxValue; } @@ -311,7 +320,7 @@ namespace Framework.Dynamic /// it can be resetted and so on. Events occur when this timer /// has reached their time value. Its value is changed in the Update method. /// - uint _time; + TimeSpan _time; /// /// Phase mask of the event map. @@ -336,6 +345,6 @@ namespace Framework.Dynamic /// - Bit 24 - 31: Phase /// - Pattern: 0xPPGGEEEE /// - SortedMultiMap _eventMap = new(); + SortedMultiMap _eventMap = new(); } }