entity round_handler; .float delay; // stores delay from round end to countdown start .float count; // stores initial number of the countdown .float wait; // it's set to TRUE when round ends, to FALSE when countdown starts .float cnt; // its initial value is .count + 1, then decreased while counting down // reaches 0 when the round starts .float round_timelimit; .float round_endtime; .float() canRoundStart; .float() canRoundEnd; .void() roundStart; void round_handler_Init(float the_delay, float the_count, float the_round_timelimit); void round_handler_Spawn(float() canRoundStart_func, float() canRoundEnd_func, void() roundStart_func); void round_handler_Reset(float next_think); void round_handler_Remove(); #define round_handler_IsActive() (round_handler != world) #define round_handler_AwaitingNextRound() (round_handler.wait) #define round_handler_CountdownRunning() (!round_handler.wait && round_handler.cnt) #define round_handler_IsRoundStarted() (!round_handler.wait && !round_handler.cnt) #define round_handler_GetEndTime() (round_handler.round_endtime)