Game Development Reference
In-Depth Information
explicit LightTimer(float startTime, float endTime) :
m_desiredStartTime(startTime),
m_desiredEndTime(endTime),
m_startLightsOn(GetDeviatedTime(m_desiredStartTime)),
m_endLightsOn(GetDeviatedTime(m_desiredEndTime)),
m_lightsOn(false)
{
}
void TurnOnLights(void)
{
if (!m_lightsOn)
{
SetLightStatus(true);
m_lightsOn = true;
m_startLightsOn = GetDeviatedTime(m_desiredStartTime);
}
}
void TurnOffLights(void)
{
if (m_lightsOn)
{
SetLightStatus(false);
m_lightsOn = false;
m_endLightsOn = GetDeviatedTime(m_desiredEndTime);
}
}
As you can see, m_startLightsOn and m_endLightsOn are set to a deviation
from the desired start and end times. The GetDeviatedTime() function is very
simple:
float GetDeviatedTime(float desiredTime)
{
float normalizedRand = (float)rand() / (float)RAND_MAX;
float deviatedTime = desiredTime + (normalizedRand * 2) - 1;
// wrap deviatedTime if it goes below 0 or above 24
if (deviatedTime < 0.0f)
deviatedTime = 24.f
fmod(fabs(deviatedTime), 24.f));
else if (deviatedTime >= 24.0f)
deviatedTime = fmod(deviatedTime, 24.0f);
return deviatedTime;
-
}
Search WWH ::




Custom Search