diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
commit | b888b1b09f71a8b8b4a9d45c804a1f164fb65ac3 (patch) | |
tree | ba507c4c1c5e8487bd223afbde44ecf9eeac162e /src/common/Utilities/Timer.h | |
parent | 8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4 (diff) |
Core/Calendar: Implement different timezone support for ingame calendar
Closes #8390
Closes #29427
Diffstat (limited to 'src/common/Utilities/Timer.h')
-rw-r--r-- | src/common/Utilities/Timer.h | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/src/common/Utilities/Timer.h b/src/common/Utilities/Timer.h deleted file mode 100644 index e0ecb5b2d13..00000000000 --- a/src/common/Utilities/Timer.h +++ /dev/null @@ -1,190 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef TRINITY_TIMER_H -#define TRINITY_TIMER_H - -#include "Define.h" -#include "Duration.h" - -inline TimePoint GetApplicationStartTime() -{ - using namespace std::chrono; - - static const steady_clock::time_point ApplicationStartTime = steady_clock::now(); - - return ApplicationStartTime; -} - -inline uint32 getMSTime() -{ - using namespace std::chrono; - - return uint32(duration_cast<milliseconds>(steady_clock::now() - GetApplicationStartTime()).count()); -} - -inline uint32 getMSTimeDiff(uint32 oldMSTime, uint32 newMSTime) -{ - // getMSTime() have limited data range and this is case when it overflow in this tick - if (oldMSTime > newMSTime) - return (0xFFFFFFFF - oldMSTime) + newMSTime; - else - return newMSTime - oldMSTime; -} - -inline uint32 getMSTimeDiff(uint32 oldMSTime, TimePoint newTime) -{ - using namespace std::chrono; - - uint32 newMSTime = uint32(duration_cast<milliseconds>(newTime - GetApplicationStartTime()).count()); - return getMSTimeDiff(oldMSTime, newMSTime); -} - -inline uint32 GetMSTimeDiffToNow(uint32 oldMSTime) -{ - return getMSTimeDiff(oldMSTime, getMSTime()); -} - -struct IntervalTimer -{ -public: - - IntervalTimer() - : _interval(0), _current(0) - { - } - - void Update(time_t diff) - { - _current += diff; - if (_current < 0) - _current = 0; - } - - bool Passed() - { - return _current >= _interval; - } - - void Reset() - { - if (_current >= _interval) - _current %= _interval; - } - - void SetCurrent(time_t current) - { - _current = current; - } - - void SetInterval(time_t interval) - { - _interval = interval; - } - - time_t GetInterval() const - { - return _interval; - } - - time_t GetCurrent() const - { - return _current; - } - -private: - - time_t _interval; - time_t _current; -}; - -struct TimeTracker -{ -public: - TimeTracker(int32 expiry = 0) : _expiryTime(expiry) { } - TimeTracker(Milliseconds expiry) : _expiryTime(expiry) { } - - void Update(int32 diff) - { - Update(Milliseconds(diff)); - } - - void Update(Milliseconds diff) - { - _expiryTime -= diff; - } - - bool Passed() const - { - return _expiryTime <= 0s; - } - - void Reset(int32 expiry) - { - Reset(Milliseconds(expiry)); - } - - void Reset(Milliseconds expiry) - { - _expiryTime = expiry; - } - - Milliseconds GetExpiry() const - { - return _expiryTime; - } - -private: - Milliseconds _expiryTime; -}; - -struct PeriodicTimer -{ -public: - - PeriodicTimer(int32 period, int32 start_time) - : i_period(period), i_expireTime(start_time) - { - } - - bool Update(const uint32 diff) - { - if ((i_expireTime -= diff) > 0) - return false; - - i_expireTime += i_period > int32(diff) ? i_period : diff; - return true; - } - - void SetPeriodic(int32 period, int32 start_time) - { - i_expireTime = start_time; - i_period = period; - } - - // Tracker interface - void TUpdate(int32 diff) { i_expireTime -= diff; } - bool TPassed() const { return i_expireTime <= 0; } - void TReset(int32 diff, int32 period) { i_expireTime += period > diff ? period : diff; } - -private: - - int32 i_period; - int32 i_expireTime; -}; - -#endif |