No idea what this changed
This commit is contained in:
57
src/com/flaremicro/visualforecast/Timer.java
Normal file
57
src/com/flaremicro/visualforecast/Timer.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package com.flaremicro.visualforecast;
|
||||
/**
|
||||
* TImer class, deals with ticks, game speedup, and slowdown
|
||||
* @author Vulpovile
|
||||
*
|
||||
*/
|
||||
public class Timer {
|
||||
private final int ticksPerSecond;
|
||||
private long lastTickTime = 0;
|
||||
private long currentTime = 0;
|
||||
private long ticksPassed = 0;
|
||||
/**
|
||||
* Creates a timer with a set amount ticks per second
|
||||
* @param ticksPerSecond
|
||||
*/
|
||||
public Timer(int ticksPerSecond)
|
||||
{
|
||||
this.ticksPerSecond = 1000/ticksPerSecond;
|
||||
currentTime = System.currentTimeMillis();
|
||||
lastTickTime = currentTime;
|
||||
}
|
||||
/**
|
||||
* Resets the timer, prevents the superspeed bug when loading or generating levels
|
||||
*/
|
||||
public void reset()
|
||||
{
|
||||
currentTime = System.currentTimeMillis();
|
||||
lastTickTime = currentTime;
|
||||
}
|
||||
/**
|
||||
* Ticks the timer and returns how many ticks were missed by the game (to catch up with bad framerates)
|
||||
* @return ticks passed
|
||||
*/
|
||||
public long tick()
|
||||
{
|
||||
if(ticksPassed > 0) ticksPassed--;
|
||||
currentTime = System.currentTimeMillis();
|
||||
if(lastTickTime < currentTime-ticksPerSecond)
|
||||
{
|
||||
ticksPassed = (currentTime-lastTickTime)/ticksPerSecond;
|
||||
lastTickTime = currentTime - (currentTime-lastTickTime)%ticksPerSecond;
|
||||
}
|
||||
if(ticksPassed > 200L)
|
||||
{
|
||||
System.out.println("Time moving too fast! Did the system time change or is the game overloaded?");
|
||||
System.out.println("Moving time forward " + ticksPassed + " ticks");
|
||||
ticksPassed = 0;
|
||||
}
|
||||
else if(ticksPassed < 0L)
|
||||
{
|
||||
System.out.println("Time moved backwards! Did the system time change?");
|
||||
System.out.println("Moving time backwards " + -ticksPassed + " ticks");
|
||||
ticksPassed = 0;
|
||||
}
|
||||
return ticksPassed;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user