6060#include " Common/GameEngine.h"
6161#include " Common/GameLOD.h"
6262#include " Common/GameState.h"
63+ #include " Common/MessageStream.h"
6364#include " Common/MultiplayerSettings.h"
6465#include " Common/Player.h"
6566#include " Common/PlayerList.h"
6869#include " GameClient/Display.h"
6970#include " GameClient/GadgetProgressBar.h"
7071#include " GameClient/GadgetStaticText.h"
72+ #include " GameClient/GameClient.h"
7173#include " GameClient/GameText.h"
7274#include " GameClient/GameWindowManager.h"
7375#include " GameClient/GameWindowTransitions.h"
@@ -157,7 +159,7 @@ LoadScreen::~LoadScreen()
157159void LoadScreen::update ( Int percent )
158160{
159161 TheGameEngine->serviceWindowsOS ();
160- if (TheGameEngine->getQuitting ())
162+ if (TheGameEngine->getQuitting () || (TheGameLogic && TheGameLogic-> isQuitToDesktopRequested ()) )
161163 return ; // don't bother with any of this if the player is exiting game.
162164
163165 TheWindowManager->update ();
@@ -539,20 +541,11 @@ void SinglePlayerLoadScreen::init( GameInfo *game )
539541 Int shiftedPercent = -FRAME_FUDGE_ADD + 1 ;
540542 while (m_videoStream->frameIndex () < m_videoStream->frameCount () - 1 )
541543 {
542- // TheSuperHackers @feature User can now skip video by pressing ESC
543- if (TheKeyboard)
544+ if (GameClient::isMovieAbortRequested ())
544545 {
545- TheKeyboard->UPDATE ();
546- KeyboardIO *io = TheKeyboard->findKey (KEY_ESC, KeyboardIO::STATUS_UNUSED);
547- if (io && BitIsSet (io->state , KEY_STATE_DOWN))
548- {
549- io->setUsed ();
550- break ;
551- }
546+ break ;
552547 }
553548
554- TheGameEngine->serviceWindowsOS ();
555-
556549 if (!m_videoStream->isFrameReady ())
557550 {
558551 Sleep (1 );
@@ -634,6 +627,11 @@ void SinglePlayerLoadScreen::init( GameInfo *game )
634627 fudgeFactor = 30 * ((currTime - begin)/ INT_TO_REAL (delay ));
635628 GadgetProgressBarSetProgress (m_progressBar, fudgeFactor);
636629
630+ if (GameClient::isMovieAbortRequested ())
631+ {
632+ break ;
633+ }
634+
637635 TheWindowManager->update ();
638636 TheDisplay->draw ();
639637 Sleep (100 );
@@ -1054,20 +1052,11 @@ void ChallengeLoadScreen::init( GameInfo *game )
10541052 Int shiftedPercent = -FRAME_FUDGE_ADD + 1 ;
10551053 while (m_videoStream->frameIndex () < m_videoStream->frameCount () - 1 )
10561054 {
1057- // TheSuperHackers @feature User can now skip video by pressing ESC
1058- if (TheKeyboard)
1055+ if (GameClient::isMovieAbortRequested ())
10591056 {
1060- TheKeyboard->UPDATE ();
1061- KeyboardIO *io = TheKeyboard->findKey (KEY_ESC, KeyboardIO::STATUS_UNUSED);
1062- if (io && BitIsSet (io->state , KEY_STATE_DOWN))
1063- {
1064- io->setUsed ();
1065- break ;
1066- }
1057+ break ;
10671058 }
10681059
1069- TheGameEngine->serviceWindowsOS ();
1070-
10711060 if (!m_videoStream->isFrameReady ())
10721061 {
10731062 Sleep (1 );
@@ -1109,7 +1098,13 @@ void ChallengeLoadScreen::init( GameInfo *game )
11091098 // if we're min speced
11101099 m_videoStream->frameGoto (m_videoStream->frameCount ()); // zero based
11111100 while (!m_videoStream->isFrameReady ())
1101+ {
1102+ if (GameClient::isMovieAbortRequested ())
1103+ {
1104+ return ;
1105+ }
11121106 Sleep (1 );
1107+ }
11131108 m_videoStream->frameDecompress ();
11141109 m_videoStream->frameRender (m_videoBuffer);
11151110 if (m_videoBuffer)
@@ -1126,6 +1121,11 @@ void ChallengeLoadScreen::init( GameInfo *game )
11261121 fudgeFactor = 30 * ((currTime - begin)/ INT_TO_REAL (delay ));
11271122 GadgetProgressBarSetProgress (m_progressBar, fudgeFactor);
11281123
1124+ if (GameClient::isMovieAbortRequested ())
1125+ {
1126+ break ;
1127+ }
1128+
11291129 TheWindowManager->update ();
11301130 TheDisplay->draw ();
11311131 Sleep (100 );
0 commit comments