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"
@@ -157,7 +159,8 @@ LoadScreen::~LoadScreen( void )
157159void LoadScreen::update ( Int percent )
158160{
159161 TheGameEngine->serviceWindowsOS ();
160- if (TheGameEngine->getQuitting ())
162+ TheMessageStream->propagateMessages ();
163+ if (TheGameEngine->getQuitting () || TheGameLogic->m_quitToDesktopAfterMatch )
161164 return ; // don't bother with any of this if the player is exiting game.
162165
163166 TheWindowManager->update ();
@@ -539,20 +542,11 @@ void SinglePlayerLoadScreen::init( GameInfo *game )
539542 Int shiftedPercent = -FRAME_FUDGE_ADD + 1 ;
540543 while (m_videoStream->frameIndex () < m_videoStream->frameCount () - 1 )
541544 {
542- // TheSuperHackers @feature User can now skip video by pressing ESC
543- if (TheKeyboard)
545+ if (TheGameClient->isMovieAbortRequested ())
544546 {
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- }
547+ break ;
552548 }
553549
554- TheGameEngine->serviceWindowsOS ();
555-
556550 if (!m_videoStream->isFrameReady ())
557551 {
558552 Sleep (1 );
@@ -634,6 +628,11 @@ void SinglePlayerLoadScreen::init( GameInfo *game )
634628 fudgeFactor = 30 * ((currTime - begin)/ INT_TO_REAL (delay ));
635629 GadgetProgressBarSetProgress (m_progressBar, fudgeFactor);
636630
631+ if (TheGameClient->isMovieAbortRequested ())
632+ {
633+ break ;
634+ }
635+
637636 TheWindowManager->update ();
638637 TheDisplay->draw ();
639638 Sleep (100 );
@@ -1054,20 +1053,11 @@ void ChallengeLoadScreen::init( GameInfo *game )
10541053 Int shiftedPercent = -FRAME_FUDGE_ADD + 1 ;
10551054 while (m_videoStream->frameIndex () < m_videoStream->frameCount () - 1 )
10561055 {
1057- // TheSuperHackers @feature User can now skip video by pressing ESC
1058- if (TheKeyboard)
1056+ if (TheGameClient->isMovieAbortRequested ())
10591057 {
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- }
1058+ break ;
10671059 }
10681060
1069- TheGameEngine->serviceWindowsOS ();
1070-
10711061 if (!m_videoStream->isFrameReady ())
10721062 {
10731063 Sleep (1 );
@@ -1109,7 +1099,13 @@ void ChallengeLoadScreen::init( GameInfo *game )
11091099 // if we're min speced
11101100 m_videoStream->frameGoto (m_videoStream->frameCount ()); // zero based
11111101 while (!m_videoStream->isFrameReady ())
1102+ {
1103+ if (TheGameClient->isMovieAbortRequested ())
1104+ {
1105+ break ;
1106+ }
11121107 Sleep (1 );
1108+ }
11131109 m_videoStream->frameDecompress ();
11141110 m_videoStream->frameRender (m_videoBuffer);
11151111 if (m_videoBuffer)
@@ -1126,6 +1122,11 @@ void ChallengeLoadScreen::init( GameInfo *game )
11261122 fudgeFactor = 30 * ((currTime - begin)/ INT_TO_REAL (delay ));
11271123 GadgetProgressBarSetProgress (m_progressBar, fudgeFactor);
11281124
1125+ if (TheGameClient->isMovieAbortRequested ())
1126+ {
1127+ break ;
1128+ }
1129+
11291130 TheWindowManager->update ();
11301131 TheDisplay->draw ();
11311132 Sleep (100 );
0 commit comments