#include <maingame.h>
Inheritance diagram for MainGame:
Public Member Functions | |
MainGame (const XRect r, const string &appName) | |
virtual | ~MainGame (void) |
virtual const bool | SetupWindow (const Message &msg) |
const bool | InitDone (void) |
Static Public Attributes | |
Galaxy * | galaxy = 0 |
PlayGame * | game = 0 |
Protected Member Functions | |
virtual const bool | MainLoop (void) |
virtual const bool | evMouseLClick (const CtrlMessage &msg) |
virtual const bool | evMouseButtonDown (const MouseMessage &msg) |
virtual const bool | evMessage (const UserMessage &msg) |
Private Member Functions | |
void | EnableWindow (void) |
void | PlayIntro (void) |
Private Attributes | |
Form * | f |
Mix_Music * | wave |
vector< BqBase * > | links |
vector< Thread * > | initTasks |
|
Definition at line 108 of file maingame.cpp. References galaxy, game, and initTasks.
00109 : View( r , appName , false ) , wave( 0 ) 00110 { 00111 galaxy = new Galaxy(); 00112 game = new PlayGame(); 00113 00114 initTasks.push_back( new InitStarName ); 00115 initTasks.push_back( new InitPlanetInfo ); 00116 initTasks.push_back( new InitPlanetSize ); 00117 initTasks.push_back( new InitEcoZone ); 00118 initTasks.push_back( new InitSpecies ); 00119 initTasks.push_back( new InitGalaxyScreen ); 00120 initTasks.push_back( new InitStarInfo ); 00121 } |
|
Definition at line 123 of file maingame.cpp. References GalaxyScreen::bkgnd, eLast, eMainDialog, f, galaxy, game, GalaxyScreen::img, links, Galaxy::Reset(), Colony::ResetAllColonies(), Parameters::ResetInfo(), ExprParser::toDelinExprParser, and wave.
00124 { 00125 galaxy->Reset(); 00126 Colony::ResetAllColonies(); 00127 Parameters::ResetInfo(); 00128 00129 if( GalaxyScreen::img ) 00130 SDL_FreeSurface( GalaxyScreen::img ); 00131 GalaxyScreen::img = 0; 00132 if( GalaxyScreen::bkgnd ) 00133 SDL_FreeSurface( GalaxyScreen::bkgnd ); 00134 GalaxyScreen::bkgnd = 0; 00135 00136 delete game; 00137 game = 0; 00138 delete galaxy; 00139 galaxy = 0; 00140 00141 Mix_HaltMusic(); 00142 Mix_HaltChannel( 0 ); 00143 Mix_HaltChannel( 1 ); 00144 if( wave ) 00145 Mix_FreeMusic( wave ); 00146 wave = 0; 00147 00148 Mix_CloseAudio(); 00149 00150 f->ShutdownDialog( this ); 00151 00152 for( int i = eMainDialog ; i < eLast ; i++ ) 00153 Free( i ); 00154 00155 for( vector<BqBase *>::iterator it = links.begin() ; it != links.end() ; ++it ) 00156 delete (*it); 00157 links.clear(); 00158 00159 { 00160 for( vector<Uniform *>::iterator it = ExprParser::toDelinExprParser.begin() ; it != ExprParser::toDelinExprParser.end() ; ++it ) 00161 delete (*it); 00162 ExprParser::toDelinExprParser.clear(); 00163 } 00164 00165 clear(); 00166 } |
|
Definition at line 204 of file maingame.cpp. References f, Cfg::GetCfg(), Cfg::Handler::GetCfgString(), Cfg::Handler::GetFilename(), and GetGalaxy(). Referenced by evMouseLClick(), and SetupWindow().
00205 { 00206 Cfg::Handler &h = Cfg::GetCfg(); 00207 Rsrc res( h.GetFilename() ); 00208 Window *ContinueButton = f->GetArsObject( 4 ); 00209 Window *LoadButton = f->GetArsObject( 5 ); 00210 Window *SaveButton = f->GetArsObject( 6 ); 00211 00212 ContinueButton->EnableWindow( !h.GetCfgString( "SavedGames" , "0" ).empty() ); 00213 LoadButton->EnableWindow( !h.GetCfgString( "SavedGames" , "1" ).empty() ); 00214 SaveButton->EnableWindow( !GetGalaxy().empty() ); 00215 00216 SaveButton->UpdateWindow(); 00217 ContinueButton->UpdateWindow(); 00218 LoadButton->UpdateWindow(); 00219 } |
|
Definition at line 291 of file maingame.cpp. References ArsPostMessage, f, and links.
00292 { 00293 const unsigned int i = msg.SubMessage(); 00294 00295 if( i < links.size() ) 00296 { 00297 f->ShutdownDialog( this ); 00298 00299 links[i]->MainLoop(); 00300 00301 f->InitDialog( this ); 00302 f->Draw(); 00303 } 00304 else if( i == 8 ) 00305 ArsPostMessage( Message( Message::APP_EXIT , 0 ) ); 00306 /* 00307 else if( msg.SubMessage() == SAVE_GALAXY || msg.SubMessage() == LOAD_GALAXY ) 00308 return false; 00309 else if( msg.SubMessage() == SAVE_SPECIES ) 00310 { 00311 00312 } 00313 */ 00314 return true; 00315 } |
|
Definition at line 284 of file maingame.cpp.
00285 { 00286 View::evMouseButtonDown( msg ); 00287 00288 return false; 00289 } |
|
Definition at line 317 of file maingame.cpp. References ArsPostMessage, EnableWindow(), f, links, S_FOCUS, S_HIGHLIGHT, and S_SELECTED.
00318 { 00319 const int i = ((Window *)msg.source)->GetId(); 00320 bool doredraw = false; 00321 if( i < (int)links.size() ) 00322 doredraw = links[i]->MainLoop(); 00323 else if( i == 8 ) 00324 ArsPostMessage( Message( Message::APP_EXIT , 0 ) ); 00325 00326 EnableWindow(); 00327 if( doredraw ) 00328 { 00329 f->GetArsObject( i )->ResetState( S_SELECTED|S_HIGHLIGHT|S_FOCUS ); 00330 f->Draw(); 00331 } 00332 return true; 00333 } |
|
Definition at line 168 of file maingame.cpp. References initTasks. Referenced by MainLoop().
|
|
Definition at line 221 of file maingame.cpp. References Ars::AddSound(), ArsSendMessage, eMainDialog, f, InitDone(), initTasks, PlayIntro(), S_ALIGN_LEFT, and S_ALIGN_TOP.
00222 { 00223 Graf::ShowMouse( false ); 00224 00225 f = Load( "MainDialog" , eMainDialog ); 00226 00227 ArsSendMessage( Message( Message::SETUP_WINDOW , this ) ); 00228 00229 if( f ) 00230 { 00231 f->InitDialog( this ); 00232 f->Draw(); 00233 } 00234 SetTextAlign( S_ALIGN_TOP , S_ALIGN_LEFT ); 00235 00236 AddSound( "Splash-Greeting" , "Splash" , "Greeting" ).Configure( 1 ); 00237 00238 PlayIntro(); 00239 for( vector<Thread*>::iterator it = initTasks.begin() ;it != initTasks.end() ; ++it ) 00240 (*it)->Start( 0 ); 00241 00242 InitDone(); 00243 00244 Graf::ShowMouse( true ); 00245 00246 while( View::MainLoop() ) ; 00247 00248 return false; 00249 } |
|
Definition at line 251 of file maingame.cpp. References f, Cfg::GetCfg(), Cfg::Handler::GetCfgFile(), Ars::GetSound(), Ars::Preload(), and wave. Referenced by MainLoop().
00252 { 00253 if( Cfg::GetCfg().GetCfgInt( "SetupScreen" , "PlayIntro" , 1 ) ) 00254 { 00255 Cfg::Handler &h = Cfg::GetCfg( "@sounds" ); 00256 00257 XMPEG *mpeg = dynamic_cast<XMPEG *>( f->GetArsObject( 20 ) ); 00258 SMPEG_rewind( mpeg->GetMPEG() ); 00259 Mix_Chunk *wave; 00260 if( (wave = Mix_LoadWAV( h.GetCfgFile( "Splash" , "Intro" ).c_str() )) != 0 ) 00261 Mix_PlayChannel( 0 , wave , 0 ); 00262 mpeg->Play(); 00263 00264 while( SMPEG_status( mpeg->GetMPEG() ) == SMPEG_PLAYING ) 00265 SDL_Delay( 10 ); 00266 00267 mpeg->EndPlay(); 00268 if( wave ) 00269 Mix_FreeChunk( wave ); 00270 00271 mpeg->SetDirty(); 00272 UpdateWindow( true ); 00273 } 00274 00275 Cfg::Handler &h = Cfg::GetCfg( "@sounds" ); 00276 wave = Mix_LoadMUS( h.GetCfgFile( "music" , "MainScreen" ).c_str() ); 00277 if( wave ) 00278 Mix_PlayMusic( wave , -1 ); 00279 GetSound( "Splash-Greeting" ).Play(); 00280 00281 Preload( "SoundEvent" ); 00282 } |
|
Definition at line 179 of file maingame.cpp. References bqObjectCreate(), cbObjCreateType, EnableWindow(), and links.
00180 { 00181 View::SetupWindow( msg ); 00182 00183 SetBgColor( Cfg::GetCfg().GetCfgColorHex( "Ars" , "back_color" , RGBColor( 0 , 0 , 0 ) ) ); 00184 00185 MessageServer::Instance().RegisterMessageClient( this , Message::CTRL_LCLICK ); 00186 MessageServer::Instance().RegisterMessageClient( this , Message::MOUSE_BUTTONDOWN ); 00187 MessageServer::Instance().RegisterMessageClient( this , Message::USER ); 00188 00189 links.push_back( new MainCredits( this ) ); 00190 links.push_back( new HallOfFame( this ) ); 00191 links.push_back( new Retire( this ) ); 00192 links.push_back( new Parameters( this ) ); 00193 links.push_back( new Continue( this ) ); 00194 links.push_back( new MainLoad( this ) ); 00195 links.push_back( new MainSave( this ) ); 00196 00197 EnableWindow(); 00198 00199 ArsApplication::objCreate.push_back( (cbObjCreateType)bqObjectCreate ); 00200 00201 return true; 00202 } |
|
Definition at line 24 of file maingame.h. Referenced by EnableWindow(), evMessage(), evMouseLClick(), MainLoop(), PlayIntro(), and ~MainGame(). |
|
Definition at line 9 of file maingame.cpp. Referenced by Parameters::CreateGalaxy(), GetGalaxy(), MainGame(), and ~MainGame(). |
|
Definition at line 16 of file maingame.cpp. Referenced by GetGame(), MainGame(), and ~MainGame(). |
|
Definition at line 28 of file maingame.h. Referenced by InitDone(), MainGame(), and MainLoop(). |
|
Definition at line 27 of file maingame.h. Referenced by evMessage(), evMouseLClick(), SetupWindow(), and ~MainGame(). |
|
Definition at line 26 of file maingame.h. Referenced by PlayIntro(), and ~MainGame(). |