Advertisement
Guest User

_hostmigration - Notesblok

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