Advertisement
Guest User

Untitled

a guest
Sep 29th, 2010
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. #include maps\mp\_utility;
  2. #include common_scripts\utility;
  3.  
  4. Callback_HostMigration()
  5. {
  6. level.hostMigrationReturnedPlayerCount = 0;
  7.  
  8. if ( level.gameEnded )
  9. {
  10. println( "Migration starting at time " + gettime() + ", but game has ended, so no countdown." );
  11. return;
  12. }
  13.  
  14. println( "Migration starting at time " + gettime() );
  15.  
  16. level.hostMigrationTimer = true;
  17.  
  18. level notify( "host_migration_begin" );
  19. maps\mp\gametypes\_gamelogic::UpdateTimerPausedness();
  20.  
  21. foreach ( player in level.players )
  22. {
  23. player thread hostMigrationTimerThink();
  24. }
  25.  
  26. level endon( "host_migration_begin" );
  27. hostMigrationWait();
  28.  
  29.  
  30. level.hostMigrationTimer = undefined;
  31. println( "Migration finished at time " + gettime() );
  32.  
  33. level notify( "host_migration_end" );
  34. maps\mp\gametypes\_gamelogic::UpdateTimerPausedness();
  35. }
  36.  
  37. hostMigrationWait()
  38. {
  39. level endon( "game_ended" );
  40. level endon( "nuke_death" );
  41.  
  42. // start with a 20 second wait.
  43. // once we get enough players, or the first 15 seconds pass, switch to a 5 second timer.
  44.  
  45. thread maps\mp\gametypes\_gamelogic::matchStartTimer( "waiting_for_players", 20.0 );
  46. hostMigrationWaitForPlayers();
  47.  
  48. thread maps\mp\gametypes\_gamelogic::matchStartTimer( "match_resuming_in", 5.0 );
  49. wait 5;
  50. }
  51.  
  52. hostMigrationWaitForPlayers()
  53. {
  54. level endon( "hostmigration_enoughplayers" );
  55. wait 15;
  56. }
  57.  
  58. hostMigrationTimerThink_Internal()
  59. {
  60. level endon( "host_migration_begin" );
  61. level endon( "host_migration_end" );
  62.  
  63. self.hostMigrationControlsFrozen = false;
  64.  
  65. while ( !isReallyAlive( self ) )
  66. {
  67. self waittill( "spawned" );
  68. }
  69.  
  70. self.hostMigrationControlsFrozen = true;
  71. self freezeControlsWrapper( true );
  72.  
  73. level waittill( "host_migration_end" );
  74. }
  75.  
  76. hostMigrationTimerThink()
  77. {
  78. self endon( "disconnect" );
  79.  
  80. self setClientDvar( "cg_scoreboardPingGraph", "0" );
  81.  
  82. hostMigrationTimerThink_Internal();
  83.  
  84. if ( self.hostMigrationControlsFrozen )
  85. self freezeControlsWrapper( false );
  86.  
  87. self setClientDvar( "cg_scoreboardPingGraph", "1" );
  88. }
  89.  
  90. waitTillHostMigrationDone()
  91. {
  92. if ( !isDefined( level.hostMigrationTimer ) )
  93. return 0;
  94.  
  95. starttime = gettime();
  96. level waittill( "host_migration_end" );
  97. return gettime() - starttime;
  98. }
  99.  
  100. waitTillHostMigrationStarts( duration )
  101. {
  102. if ( isDefined( level.hostMigrationTimer ) )
  103. return;
  104.  
  105. level endon( "host_migration_begin" );
  106. wait duration;
  107. }
  108.  
  109. waitLongDurationWithHostMigrationPause( duration )
  110. {
  111. if ( duration == 0 )
  112. return;
  113. assert( duration > 0 );
  114.  
  115. starttime = gettime();
  116.  
  117. endtime = gettime() + duration * 1000;
  118.  
  119. while ( gettime() < endtime )
  120. {
  121. waitTillHostMigrationStarts( (endtime - gettime()) / 1000 );
  122.  
  123. if ( isDefined( level.hostMigrationTimer ) )
  124. {
  125. timePassed = waitTillHostMigrationDone();
  126. endtime += timePassed;
  127. }
  128. }
  129.  
  130. assert( gettime() == endtime );
  131. waitTillHostMigrationDone();
  132.  
  133. return gettime() - starttime;
  134. }
  135.  
  136. waitLongDurationWithGameEndTimeUpdate( duration )
  137. {
  138. if ( duration == 0 )
  139. return;
  140. assert( duration > 0 );
  141.  
  142. starttime = gettime();
  143.  
  144. endtime = gettime() + duration * 1000;
  145.  
  146. while ( gettime() < endtime )
  147. {
  148. waitTillHostMigrationStarts( (endtime - gettime()) / 1000 );
  149.  
  150. while ( isDefined( level.hostMigrationTimer ) )
  151. {
  152. endTime += 1000;
  153. setGameEndTime( int( endTime ) );
  154. wait 1;
  155. }
  156. }
  157.  
  158. assert( gettime() == endtime );
  159. while ( isDefined( level.hostMigrationTimer ) )
  160. {
  161. endTime += 1000;
  162. setGameEndTime( int( endTime ) );
  163. wait 1;
  164. }
  165.  
  166. return gettime() - starttime;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement