the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "Timer.h"
3#include "..\Minecraft.World\System.h"
4
5Timer::Timer(float ticksPerSecond)
6{
7 // 4J - added initialisers
8 lastTime = 0;
9 ticks = 0;
10 a = 0;
11 timeScale = 1;
12 passedTime = 0;
13 accumMs = 0;
14 adjustTime = 1.0;
15
16 this->ticksPerSecond = ticksPerSecond;
17 lastMs = System::currentTimeMillis();
18 lastMsSysTime = System::nanoTime() / 1000000;
19}
20
21void Timer::advanceTime()
22{
23 __int64 nowMs = System::currentTimeMillis();
24 __int64 passedMs = nowMs - lastMs;
25
26 // 4J - Use high-resolution timer for 'now' in seconds
27 double now = System::nanoTime() / 1000000000.0;
28
29
30 if (passedMs > 1000)
31 {
32 lastTime = now;
33 }
34 else if (passedMs < 0)
35 {
36 lastTime = now;
37 }
38 else
39 {
40 accumMs += passedMs;
41 if (accumMs > 1000)
42 {
43 __int64 msSysTime = (__int64)(now * 1000.0);
44 __int64 passedMsSysTime = msSysTime - lastMsSysTime;
45
46 double adjustTimeT = accumMs / (double) passedMsSysTime;
47 adjustTime += (adjustTimeT - adjustTime) * 0.2f;
48
49 lastMsSysTime = msSysTime;
50 accumMs = 0;
51 }
52 if (accumMs < 0)
53 {
54 lastMsSysTime = (__int64)(now * 1000.0);
55 }
56 }
57 lastMs = nowMs;
58
59 double passedSeconds = (now - lastTime) * adjustTime;
60 lastTime = now;
61
62 if (passedSeconds < 0) passedSeconds = 0;
63 if (passedSeconds > 1) passedSeconds = 1;
64
65 passedTime = (float)( passedTime + (passedSeconds * timeScale * ticksPerSecond));
66
67 ticks = (int) passedTime;
68 passedTime -= ticks;
69
70 if (ticks > MAX_TICKS_PER_UPDATE) ticks = MAX_TICKS_PER_UPDATE;
71
72 a = passedTime;
73}
74
75void Timer::advanceTimeQuickly()
76{
77
78 double passedSeconds = (double) MAX_TICKS_PER_UPDATE / (double) ticksPerSecond;
79
80 passedTime = (float)(passedTime + (passedSeconds * timeScale * ticksPerSecond));
81 ticks = (int) passedTime;
82 passedTime -= ticks;
83 a = passedTime;
84
85 lastMs = System::currentTimeMillis();
86 lastMsSysTime = System::nanoTime() / 1000000;
87
88}
89
90void Timer::skipTime()
91{
92 __int64 nowMs = System::currentTimeMillis();
93 __int64 passedMs = nowMs - lastMs;
94 __int64 msSysTime = System::nanoTime() / 1000000;
95 double now = msSysTime / 1000.0;
96
97
98 if (passedMs > 1000)
99 {
100 lastTime = now;
101 }
102 else if (passedMs < 0)
103 {
104 lastTime = now;
105 }
106 else
107 {
108 accumMs += passedMs;
109 if (accumMs > 1000)
110 {
111 __int64 passedMsSysTime = msSysTime - lastMsSysTime;
112
113 double adjustTimeT = accumMs / (double) passedMsSysTime;
114 adjustTime += (adjustTimeT - adjustTime) * 0.2f;
115
116 lastMsSysTime = msSysTime;
117 accumMs = 0;
118 }
119 if (accumMs < 0)
120 {
121 lastMsSysTime = msSysTime;
122 }
123 }
124 lastMs = nowMs;
125
126
127 double passedSeconds = (now - lastTime) * adjustTime;
128 lastTime = now;
129
130 if (passedSeconds < 0) passedSeconds = 0;
131 if (passedSeconds > 1) passedSeconds = 1;
132
133 passedTime = (float)(passedTime + (passedSeconds * timeScale * ticksPerSecond));
134
135 ticks = (int) 0;
136 if (ticks > MAX_TICKS_PER_UPDATE) ticks = MAX_TICKS_PER_UPDATE;
137 passedTime -= ticks;
138
139}