aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Time/GameTime.cpp
diff options
context:
space:
mode:
authorxinef1 <w.szyszko2@gmail.com>2017-03-02 02:19:25 +0100
committerShauren <shauren.trinity@gmail.com>2019-08-17 20:04:14 +0200
commit60663d1374beef3103f4787152654034fa4a8897 (patch)
tree38e07d44442ad903a9729536942e8e253a072274 /src/server/game/Time/GameTime.cpp
parent98180ecdc179386270e93b80c0db8344b659557f (diff)
Ensure that all actions are compared to fixed point in time (ie. world update start) (#18910)
- Actions will not be dependent on processing moment - Increased GameObjects cooldown resolution to milliseconds, fixes arming time of traps to be exactly one second and not something from range (1000, 1999) - Created GameTime namespace and UpdateTime class and moved there some code out of world (cherrypicked from 7567cafec84080d26ea513242a1f540a823b8f9d)
Diffstat (limited to 'src/server/game/Time/GameTime.cpp')
-rw-r--r--src/server/game/Time/GameTime.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/server/game/Time/GameTime.cpp b/src/server/game/Time/GameTime.cpp
new file mode 100644
index 00000000000..8884d4612be
--- /dev/null
+++ b/src/server/game/Time/GameTime.cpp
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
+
+ * 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/>.
+ */
+
+#include "GameTime.h"
+#include "Timer.h"
+
+namespace GameTime
+{
+ time_t const StartTime = time(nullptr);
+
+ time_t GameTime = 0;
+ uint32 GameMSTime = 0;
+
+ std::chrono::system_clock::time_point GameTimeSystemPoint = std::chrono::system_clock::time_point::min();
+ std::chrono::steady_clock::time_point GameTimeSteadyPoint = std::chrono::steady_clock::time_point::min();
+
+ time_t GetStartTime()
+ {
+ return StartTime;
+ }
+
+ time_t GetGameTime()
+ {
+ return GameTime;
+ }
+
+ uint32 GetGameTimeMS()
+ {
+ return GameMSTime;
+ }
+
+ std::chrono::system_clock::time_point GetGameTimeSystemPoint()
+ {
+ return GameTimeSystemPoint;
+ }
+
+ std::chrono::steady_clock::time_point GetGameTimeSteadyPoint()
+ {
+ return GameTimeSteadyPoint;
+ }
+
+ uint32 GetUptime()
+ {
+ return uint32(GameTime - StartTime);
+ }
+
+ void UpdateGameTimers()
+ {
+ GameTime = time(nullptr);
+ GameMSTime = getMSTime();
+ GameTimeSystemPoint = std::chrono::system_clock::now();
+ GameTimeSteadyPoint = std::chrono::steady_clock::now();
+ }
+}