the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 139 lines 3.2 kB view raw
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}