31 #include "laStagesJR.h"
38 char _strFileName[128];
44 _strFileName[0] =
'\0';
50 void setFileName(
char*strFileName) {
51 strcpy(_strFileName, strFileName);
59 ASSERT(_pObjects,
"Nil objects");
72 progressReset(
"Creating game objects...");
73 ASSERT(!_pObjects,
"Any old objects must be discarded");
78 progressIncrease(0.1,
"Loading sounds and music...");
80 _pObjects->pIntroSound = laSystemIntegrator::getSound()->soundCreate(
"sound\\loading(Aesma Daeva - Lost Melody).mp3");
81 _pObjects->pIntroSound->play();
83 _pObjects->pMusicLoop = laSystemIntegrator::getSound()->soundCreate(
"sound\\loop(In The Desert).mp3");
84 _pObjects->pMusicLoop->setLoopMode(M_TRUE, 95);
88 progressIncrease(0.1);
90 progressSubtask( &(_pObjects->level), 0.7);
91 laTexture::toggleLazyLoad(M_TRUE);
92 _pObjects->level.load( _strFileName );
93 laTexture::toggleLazyLoad(M_FALSE);
94 progressSubtask(NULL,0);
98 progressIncrease(0.1,
"Ready.");
100 _pObjects->pIntroSound->stop();
107 ::LeaveCriticalSection(&cs);
109 MSG(
"uiParametersDialog::run() catched the following error:\n\n %s", error.getText());
110 laSystemIntegrator::getEnvironment()->
terminate();
115 stageLoad::stageLoad(
void) {
120 stageLoad::~stageLoad(
void) {
124 void stageLoad::onInit()
128 _uiDesktop.create(
"ui\\desktop-mm.dsk");
130 _uiProgress =
new uiContainer(
"ui\\dialogs\\gen-progress-centered.cui");
131 ((
uiLabel*)(_uiProgress->get(1)))->setText(
"Loading...");
132 _uiDesktop.insert(_uiProgress);
137 void stageLoad::onActivate()
140 laSystemIntegrator::getEnvironment()->setTitle(
"LOADING...");
142 ASSERT(!_pThread,
"Old thread object must be discarded");
143 _pThread =
new laLoadingThread();
148 _pThread->setFileName( M_INTRO_LEVEL );
149 laSystemIntegrator::getSettings()->load_player_name[0] =
'\0';
154 _pThread->setFileName( laSystemIntegrator::getSettings()->load_level );
157 ::laSystemIntegrator::getEnvironment()->thread(_pThread);
158 ((
uiProgress*)(_uiProgress->get(2)))->setTask(_pThread);
163 void stageLoad::onDeactivate()
170 ((
uiProgress*)(_uiProgress->get(2)))->setTask(NULL);
181 void stageLoad::onFini() {
187 ASSERT(_pThread,
"Nil thread object");
192 _uiDesktop.drawBackground();
201 ::EnterCriticalSection( &(_pThread->cs) );
202 ((
uiLabel*)(_uiProgress->get(1)))->setText(_pThread->status());
203 ::LeaveCriticalSection( &(_pThread->cs) );
205 if( _pThread->isReady() )
207 unsigned nTargetStage;
209 ::laTexture::loadForceAll();
213 _bFirstRun = M_FALSE;
214 nTargetStage = M_STAGE_MENU;
218 nTargetStage = M_STAGE_GAME;
221 stageJR *jr = ((stageJR*)(laSystemIntegrator::getGame()->getStage(nTargetStage)));
222 jr->setGameObjects( _pThread->getObjects() );
224 laSystemIntegrator::getGame()->setStage(nTargetStage);
virtual void terminate()=0
Terminate application.
Virtual interface for the Engine graphics renderer.
virtual void modeInterface()=0
Switch to interface rendering (2D projection mode)
virtual void reply()
Handle input message.
virtual void draw()
Display the window.
virtual void run()=0
Virtual execution function can be defined by children.
Level objects to be created during the Loading stage.
Engine multi-threading class.