1 #using scripts\codescripts\struct;
3 #using scripts\shared\hud_shared;
4 #using scripts\shared\hud_util_shared;
5 #using scripts\shared\util_shared;
7 #insert scripts\shared\shared.gsh;
9 #namespace hostmigration;
17 shouldBeStopped = isdefined( level.hostMigrationTimer );
19 if ( !level.timerStopped && shouldBeStopped )
21 level.timerStopped =
true;
22 level.playableTimerStopped =
true;
23 level.timerPauseTime = gettime();
25 else if ( level.timerStopped && !shouldBeStopped )
27 level.timerStopped =
false;
28 level.playableTimerStopped =
false;
29 level.discardTime += gettime() - level.timerPauseTime;
35 level.migrationTimerPauseTime = gettime();
41 level.discardTime += gettime() - level.migrationTimerPauseTime;
46 level endon(
"host_migration_begin" );
47 level endon(
"host_migration_end" );
53 if ( !level.timerStopped && isdefined(level.discardTime) )
55 level.discardTime += gettime() - currTime;
64 level endon(
"match_start_timer_beginning" );
65 while ( countTime > 0 && !level.gameEnded )
72 visionSetNaked( GetDvarString(
"mapname" ), 3.0 );
81 level notify(
"match_start_timer_beginning" );
86 matchStartText.sort = 1001;
87 matchStartText setText( game[
"strings"][
"waiting_for_teams"] );
88 matchStartText.foreground =
false;
89 matchStartText.hidewheninmenu =
true;
92 matchStartText setText( game[
"strings"][type] );
103 countTime = int( duration );
105 if ( IsDefined( level.host_migration_activate_visionset_func ) )
107 level thread [[level.host_migration_activate_visionset_func]]();
110 if ( countTime >= 2 )
115 if ( IsDefined( level.host_migration_deactivate_visionset_func ) )
117 level thread [[level.host_migration_deactivate_visionset_func]]();
126 level endon(
"game_ended" );
132 if ( level.hostMigrationReturnedPlayerCount < level.players.size * 2 / 3 )
138 level notify(
"host_migration_countdown_begin" );
145 level endon(
"host_migration_end" );
147 if ( !isDefined( level.hostMigrationTimer ) )
152 level waittill(
"host_migration_countdown_begin" );
158 level endon(
"hostmigration_enoughplayers" );
164 level endon(
"host_migration_begin" );
165 level endon(
"host_migration_end" );
167 self.hostMigrationControlsFrozen =
false;
169 while ( !isAlive(
self ) )
171 self waittill(
"spawned" );
174 self.hostMigrationControlsFrozen =
true;
175 self freezeControls(
true );
177 level waittill(
"host_migration_end" );
182 self endon(
"disconnect" );
183 level endon(
"host_migration_begin" );
187 if (
self.hostMigrationControlsFrozen )
189 self freezeControls(
false );
195 if ( !isdefined( level.hostMigrationTimer ) )
200 starttime = gettime();
201 level waittill(
"host_migration_end" );
202 return gettime() - starttime;
207 if ( isdefined( level.hostMigrationTimer ) )
212 level endon(
"host_migration_begin" );
222 assert( duration > 0 );
224 starttime = gettime();
226 endtime = gettime() + duration * 1000;
228 while ( gettime() < endtime )
232 if ( isdefined( level.hostMigrationTimer ) )
235 endtime += timePassed;
240 if( gettime() != endtime )
242 println(
"SCRIPT WARNING: gettime() = " + gettime() +
" NOT EQUAL TO endtime = " + endtime);
247 return gettime() - starttime;
257 assert( duration > 0 );
259 starttime = gettime();
261 empendtime = gettime() + duration * 1000;
262 level.empendtime = empendtime;
264 while ( gettime() < empendtime )
268 if ( isdefined( level.hostMigrationTimer ) )
271 if ( isdefined ( empendtime ) )
273 empendtime += timePassed;
279 if( gettime() != empendtime )
281 println(
"SCRIPT WARNING: gettime() = " + gettime() +
" NOT EQUAL TO empendtime = " + empendtime);
287 level.empendtime = undefined;
288 return gettime() - starttime;
298 assert( duration > 0 );
300 starttime = gettime();
302 endtime = gettime() + duration * 1000;
304 while ( gettime() < endtime )
308 while ( isdefined( level.hostMigrationTimer ) )
311 setGameEndTime(
int( endTime ) );
317 if( gettime() != endtime )
319 println(
"SCRIPT WARNING: gettime() = " + gettime() +
" NOT EQUAL TO endtime = " + endtime);
323 while ( isdefined( level.hostMigrationTimer ) )
326 setGameEndTime(
int( endTime ) );
330 return gettime() - starttime;
337 endTime = gettime() + durationMs;
338 timeRemaining = durationMs;
344 if ( !isdefined( event ) )
349 if( event !=
"host_migration_begin" )
354 timeRemaining = endTime - gettime();
355 if( timeRemaining <= 0 )
360 endTime = gettime() + durationMs;