X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fround_handler.qc;h=af69e8e9e55d30a826f56d4bb6d78c384435ff39;hb=d7de42707d53838c734b3185373b5d586a9f4773;hp=15c0c49248ad73d6f12e7b48866567705cc1e978;hpb=5cbe1106e597a08e270d397c327256e7362452cd;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/round_handler.qc b/qcsrc/server/round_handler.qc index 15c0c4924..af69e8e9e 100644 --- a/qcsrc/server/round_handler.qc +++ b/qcsrc/server/round_handler.qc @@ -33,7 +33,7 @@ void round_handler_Think() if(f == 0) { self.cnt = 0; - self.round_endtime = time + self.round_timelimit; + self.round_endtime = (self.round_timelimit) ? time + self.round_timelimit : 0; self.nextthink = time; if(self.roundStart) self.roundStart(); @@ -67,7 +67,16 @@ void round_handler_Init(float the_delay, float the_count, float the_round_timeli round_handler.delay = (the_delay > 0) ? the_delay : 0; round_handler.count = fabs(floor(the_count)); round_handler.cnt = round_handler.count + 1; - round_handler.round_timelimit = max(10, the_round_timelimit); + round_handler.round_timelimit = (the_round_timelimit > 0) ? the_round_timelimit : 0; +} + +// NOTE: this is only needed because if round_handler spawns at time 1 +// gamestarttime isn't initialized yet +void round_handler_FirstThink() +{ + round_starttime = max(time, game_starttime) + round_handler.count; + round_handler.think = round_handler_Think; + round_handler.nextthink = max(time, game_starttime); } void round_handler_Spawn(float() canRoundStart_func, float() canRoundEnd_func, void() roundStart_func) @@ -80,16 +89,13 @@ void round_handler_Spawn(float() canRoundStart_func, float() canRoundEnd_func, v round_handler = spawn(); round_handler.classname = "round_handler"; - round_handler.think = round_handler_Think; + round_handler.think = round_handler_FirstThink; round_handler.canRoundStart = canRoundStart_func; round_handler.canRoundEnd = canRoundEnd_func; round_handler.roundStart = roundStart_func; round_handler.wait = FALSE; round_handler_Init(5, 5, 180); - // if round_handler spawns at time 1 gamestarttime isn't initialized yet - //round_handler.nextthink = max(time, game_starttime + 1); round_handler.nextthink = time; - round_starttime = time + round_handler.count; } void round_handler_Reset(float next_think)