Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

continue.cpp

Go to the documentation of this file.
00001 #include "borqueror.h"
00002 
00003 #include "continue.h"
00004 
00005 class SetupGalaxyScreen : public Thread {
00006 public:
00007         virtual long Run( void * )
00008         {
00009                 XRect   grect( 0 , 0 , GalaxyScreen::img->w , GalaxyScreen::img->h );
00010                 SDL_FillRect( GalaxyScreen::img , &grect , 0xff000000 );
00011                 return 1;
00012         }
00013 };
00014 
00015 class LoadGalaxyData : public Thread    {
00016 public:
00017         virtual long Run( void * )
00018         {
00019                 if( !GetGalaxy().IsLoaded() )
00020                 {
00021                         ArsSendMessage( UserMessage( Message::USER , 0 , LOAD_GALAXY , 0 ) );
00022                         ArsSendMessage( UserMessage( Message::USER , 0 , LOAD_SPECIES , 0 ) );
00023                         return 1;
00024                 }
00025                 return 2;
00026         }
00027 };
00028 
00030 Continue::Continue( Window *aParent )
00031 : BqBase( ePlayGame , aParent )
00032 {
00033 }
00034 
00035 Continue::~Continue( void )
00036 {
00037 }
00038 
00039 const bool Continue::SetupWindow( const Message &aMsg )
00040 {
00041         BqBase::SetupWindow( aMsg );
00042 
00043         for( vector<Thread*>::iterator it = initTasks.begin() ;it != initTasks.end() ; ++it )
00044                 (*it)->Wait();
00045 
00046         for( it = initTasks.begin() ;it != initTasks.end() ; ++it )
00047                 delete *it;
00048         initTasks.clear();
00049         return true;
00050 }
00051 
00052 void Continue::SetupDialog( const std::string &aFormname )
00053 {
00054         if( !f )
00055                 f = Load( aFormname , ePlayGame );
00056 
00057         ArsSendMessage( Message( Message::SETUP_WINDOW , this ) );
00058 
00059         if( f )
00060         {
00061                 f->InitDialog( this );
00062                 InitDialog();
00063                 f->Draw();
00064                 isDisplayed = true;
00065         }
00066         SetTextAlign( S_ALIGN_TOP , S_ALIGN_LEFT );
00067 }
00068 
00069 const bool Continue::MainLoop( void )
00070 {
00071         initTasks.clear();
00072         initTasks.push_back( new SetupGalaxyScreen );
00073         initTasks.push_back( new LoadGalaxyData );
00074 
00075         for( vector<Thread*>::iterator it = initTasks.begin() ;it != initTasks.end() ; ++it )
00076                 (*it)->Start( 0 );
00077 
00078         SetupDialog( "PlayGame" );
00079 
00080         return BqBase::MainLoop();
00081 }
00082 
00083 const bool Continue::evMouseLClick( const CtrlMessage &msg )
00084 {
00085         if( isDisplayed )
00086                 if( ((Window *)msg.source)->GetId() == 11 )
00087                 {
00088                         isDisplayed= false;
00089                         GetParent()->UpdateWindow();
00090                         return !isDisplayed;
00091                 }
00092 
00093         return isDisplayed;
00094 }
00095 

Generated on Fri Dec 5 04:05:59 2003 for Borqueror by doxygen 1.3.3