6868#include " GameClient/Display.h"
6969#include " GameClient/GadgetProgressBar.h"
7070#include " GameClient/GadgetStaticText.h"
71+ #include " GameClient/GameClient.h"
7172#include " GameClient/GameText.h"
7273#include " GameClient/GameWindowManager.h"
7374#include " GameClient/GameWindowTransitions.h"
7475#include " GameClient/Keyboard.h"
7576#include " GameClient/LoadScreen.h"
7677#include " GameClient/MapUtil.h"
7778#include " GameClient/Mouse.h"
79+ #include " Common/MessageStream.h"
7880#include " GameClient/Shell.h"
7981#include " GameClient/VideoPlayer.h"
8082#include " GameClient/WindowLayout.h"
@@ -160,7 +162,8 @@ LoadScreen::~LoadScreen( void )
160162void LoadScreen::update ( Int percent )
161163{
162164 TheGameEngine->serviceWindowsOS ();
163- if (TheGameEngine->getQuitting ())
165+ TheMessageStream->propagateMessages ();
166+ if (TheGameEngine->getQuitting () || TheGameLogic->m_quitToDesktopAfterMatch )
164167 return ; // don't bother with any of this if the player is exiting game.
165168
166169 TheWindowManager->update ();
@@ -534,20 +537,11 @@ void SinglePlayerLoadScreen::init( GameInfo *game )
534537 Int shiftedPercent = -FRAME_FUDGE_ADD + 1 ;
535538 while (m_videoStream->frameIndex () < m_videoStream->frameCount () - 1 )
536539 {
537- // TheSuperHackers @feature User can now skip video by pressing ESC
538- if (TheKeyboard)
540+ if (TheGameClient->isMovieAbortRequested ())
539541 {
540- TheKeyboard->UPDATE ();
541- KeyboardIO *io = TheKeyboard->findKey (KEY_ESC, KeyboardIO::STATUS_UNUSED);
542- if (io && BitIsSet (io->state , KEY_STATE_DOWN))
543- {
544- io->setUsed ();
545- break ;
546- }
542+ break ;
547543 }
548544
549- TheGameEngine->serviceWindowsOS ();
550-
551545 if (!m_videoStream->isFrameReady ())
552546 {
553547 Sleep (1 );
@@ -602,6 +596,11 @@ void SinglePlayerLoadScreen::init( GameInfo *game )
602596 fudgeFactor = 30 * ((currTime - begin)/ INT_TO_REAL (delay ));
603597 GadgetProgressBarSetProgress (m_progressBar, fudgeFactor);
604598
599+ if (TheGameClient->isMovieAbortRequested ())
600+ {
601+ break ;
602+ }
603+
605604 TheWindowManager->update ();
606605 TheDisplay->draw ();
607606 Sleep (100 );
@@ -1060,20 +1059,11 @@ void ChallengeLoadScreen::init( GameInfo *game )
10601059 Int shiftedPercent = -FRAME_FUDGE_ADD + 1 ;
10611060 while (m_videoStream->frameIndex () < m_videoStream->frameCount () - 1 )
10621061 {
1063- // TheSuperHackers @feature User can now skip video by pressing ESC
1064- if (TheKeyboard)
1062+ if (TheGameClient->isMovieAbortRequested ())
10651063 {
1066- TheKeyboard->UPDATE ();
1067- KeyboardIO *io = TheKeyboard->findKey (KEY_ESC, KeyboardIO::STATUS_UNUSED);
1068- if (io && BitIsSet (io->state , KEY_STATE_DOWN))
1069- {
1070- io->setUsed ();
1071- break ;
1072- }
1064+ break ;
10731065 }
10741066
1075- TheGameEngine->serviceWindowsOS ();
1076-
10771067 if (!m_videoStream->isFrameReady ())
10781068 {
10791069 Sleep (1 );
@@ -1115,7 +1105,13 @@ void ChallengeLoadScreen::init( GameInfo *game )
11151105 // if we're min speced
11161106 m_videoStream->frameGoto (m_videoStream->frameCount ()); // zero based
11171107 while (!m_videoStream->isFrameReady ())
1108+ {
1109+ if (TheGameClient->isMovieAbortRequested ())
1110+ {
1111+ break ;
1112+ }
11181113 Sleep (1 );
1114+ }
11191115 m_videoStream->frameDecompress ();
11201116 m_videoStream->frameRender (m_videoBuffer);
11211117 if (m_videoBuffer)
@@ -1132,6 +1128,11 @@ void ChallengeLoadScreen::init( GameInfo *game )
11321128 fudgeFactor = 30 * ((currTime - begin)/ INT_TO_REAL (delay ));
11331129 GadgetProgressBarSetProgress (m_progressBar, fudgeFactor);
11341130
1131+ if (TheGameClient->isMovieAbortRequested ())
1132+ {
1133+ break ;
1134+ }
1135+
11351136 TheWindowManager->update ();
11361137 TheDisplay->draw ();
11371138 Sleep (100 );
0 commit comments