#include "server/gamemode/GameModeTimer.hpp" #include #include "al/util/ControllerUtil.h" #include "server/DeltaTime.hpp" GameModeTimer::GameModeTimer(bool isCountUp, float milli, int seconds, int minutes, int hours) { mIsCountUp = isCountUp; setTime(milli, seconds, minutes, hours); } GameModeTimer::GameModeTimer(float milli, int seconds, int minutes, int hours) { mIsCountUp = false; setTime(milli, seconds, minutes, hours); } GameModeTimer::GameModeTimer(GameTime const& time) { mIsCountUp = true; setTime(time); } GameModeTimer::GameModeTimer() { mIsCountUp = true; resetTime(); } void GameModeTimer::setTime(float milli, int seconds, int minutes, int hours) { if(milli >= 0) mTime.mMilliseconds = milli; if(seconds >= 0) mTime.mSeconds = seconds; if(minutes >= 0) mTime.mMinutes = minutes; if(hours >= 0) mTime.mHours = hours; } void GameModeTimer::setTime(GameTime const& time) { mTime = time; } void GameModeTimer::updateTimer() { if (mIsUseControl) { timerControl(); } if (mIsEnabled) { if (mIsCountUp) { mTime.mMilliseconds += Time::deltaTime; if(mTime.mMilliseconds >= 1) { mTime.mMilliseconds--; mTime.mSeconds++; if(mTime.mSeconds >= 60) { mTime.mSeconds = 0; mTime.mMinutes++; if (mTime.mMinutes >= 60) { mTime.mMinutes = 0; mTime.mHours++; } } } } else { mTime.mMilliseconds += Time::deltaTime; if (mTime.mMilliseconds >= 1) { mTime.mMilliseconds--; mTime.mSeconds--; if(mTime.mSeconds < 0) { mTime.mSeconds = 59; mTime.mMinutes--; if (mTime.mMinutes < 0) { if (mTime.mHours > 0) { mTime.mMinutes = 59; mTime.mHours--; } else { mIsEnabled = false; } } } } } } } void GameModeTimer::timerControl() { if(al::isPadHoldRight(-1)) { mTime.mMilliseconds = 0; mTime.mSeconds++; if(mTime.mSeconds >= 60) { mTime.mSeconds = 0; mTime.mMinutes++; if (mTime.mMinutes >= 60) { mTime.mMinutes = 0; mTime.mHours++; } } } if(al::isPadTriggerLeft(-1)) { mTime.mMilliseconds = 0; mTime.mSeconds--; if(mTime.mSeconds < 0) { mTime.mSeconds = 59; mTime.mMinutes--; if (mTime.mMinutes < 0) { if (mTime.mHours > 0) { mTime.mMinutes = 59; mTime.mHours--; } else { mTime.mMinutes = 0; } } } } if(al::isPadHoldL(-1) && al::isPadTriggerDown(-1)) { mTime.mMilliseconds = 0; mTime.mSeconds = 0; mTime.mMinutes = 0; mTime.mHours = 0; } }