package com.shade.controls;
public class DayPhaseTimer {
public static final float TRANSITION_TIME = 1f / 4;
public static final float MAX_SHADOW = 0.4f;
private int secondsPerDay;
private int timeOfDay;
private int startTime, runningTime;
DayLightStatus daylight;
public enum DayLightStatus {
DAWN, DAY, DUSK, NIGHT
}
public DayPhaseTimer(int seconds) {
startTime = 0;
runningTime = 0;
secondsPerDay = seconds;
timeOfDay = 0;
}
public DayLightStatus getDaylightStatus() {
return daylight;
}
public float timeLeft(){
timeOfDay = runningTime % (secondsPerDay/2);
if(daylight == DayLightStatus.DUSK || daylight == DayLightStatus.DAWN){
return (timeOfDay-secondsPerDay * (1f / 2 - TRANSITION_TIME))/(secondsPerDay*TRANSITION_TIME);
}
else return timeOfDay/(0.5f*secondsPerDay*(1-TRANSITION_TIME));
}
public void update(int delta) {
runningTime += delta;
int timeofday = (runningTime-startTime) % secondsPerDay;
// is it day or night?
if (timeofday > 1.0 * secondsPerDay * (1f / 2 - TRANSITION_TIME)) {
daylight = DayLightStatus.NIGHT;
if (timeofday < 1.0 * secondsPerDay / 2) {
daylight = DayLightStatus.DUSK;
}
if (timeofday > 1.0 * secondsPerDay * (1 - TRANSITION_TIME)) {
daylight = DayLightStatus.DAWN;
}
}
else
daylight = DayLightStatus.DAY;
}
public void reset(){
runningTime = 0;
startTime = 0;
}
}