00001 #include "../borqueror.h" 00002 00003 void SunImageObject::Draw( void ) 00004 { 00005 XBox::Draw(); 00006 00007 XRect r( 0 , 0 , -1 , -1 ); 00008 SDL_Surface *suns = Graf::Img( id , &r ); 00009 00010 XRect src( r.h * atSun , 0 , r.h , r.h ); 00011 00012 Graf::SDL_StretchBlt( suns , &src , GetGDI() , this ); 00013 } 00014 00016 StarInfoDlg::StarInfoDlg( const int aid , StarSystem *&aSs , Window *aParent ) 00017 : ss( aSs ) , BqBase( eStarInfoDlg , aParent ) , id( aid ) 00018 { 00019 } 00020 00021 StarInfoDlg::~StarInfoDlg( void ) 00022 { 00023 } 00024 00025 const bool StarInfoDlg::SetupWindow( const Message &aMsg ) 00026 { 00027 BqBase::SetupWindow( aMsg ); 00028 00029 if( f ) 00030 { 00031 SunImageObject *img = dynamic_cast<SunImageObject *>( f->GetArsObject( 10 ) ); 00032 img->SetImageId( id ); 00033 img->SetSunIndex( ss->GetStarType() ); 00034 00035 f->GetArsObject( 20 )->SetWndText( string( " " ) + ss->ssName ); 00036 string str = ss->starName; 00037 if( !ss->starNameDescr.empty() ) 00038 { 00039 str += " ("; 00040 str += ss->starNameDescr + ")"; 00041 } 00042 f->GetArsObject( 21 )->SetWndText( string( " " ) + str ); 00043 00044 int thisId = ss->GetStarType() << 8 | ss->GetStarSize() - 1; 00045 vector<StarInfo *>::iterator pos = find_if( Parameters::starInfo.begin() , Parameters::starInfo.end() , bind2nd( mem_fun( &StarInfo::IsId ) , &thisId ) ); 00046 if( pos != Parameters::starInfo.end() ) 00047 { 00048 f->GetArsObject( 22 )->SetWndText( string( " " ) + (*pos)->classInf ); 00049 00050 f->GetArsObject( 23 )->SetWndText( string( " " ) + Parameters::sizeStr[(*pos)->ssize] ); 00051 f->GetArsObject( 24 )->SetWndText( string( " Approx. " ) + (*pos)->ageInf ); 00052 char temp[128]; 00053 sprintf( temp , " Approx. %d C" , (*pos)->temperature ); 00054 f->GetArsObject( 25 )->SetWndText( temp ); 00055 f->GetArsObject( 30 )->SetWndText( (*pos)->descrInf + "\n" ); 00056 } 00057 else 00058 { 00059 f->GetArsObject( 22 )->SetWndText( "" ); 00060 f->GetArsObject( 23 )->SetWndText( "" ); 00061 f->GetArsObject( 24 )->SetWndText( "" ); 00062 f->GetArsObject( 25 )->SetWndText( "" ); 00063 f->GetArsObject( 30 )->SetWndText( "" ); 00064 } 00065 } 00066 return true; 00067 } 00068 00069 const bool StarInfoDlg::MainLoop( void ) 00070 { 00071 SetupDialog( "StarInfoDlg" ); 00072 00073 ans = true; 00074 00075 BqBase::MainLoop(); 00076 00077 return ans; 00078 } 00079 00080 const bool StarInfoDlg::evMouseLClick( const CtrlMessage &msg ) 00081 { 00082 BqBase::evMouseLClick( msg ); 00083 00084 if( isDisplayed ) 00085 if( ((Window *)msg.source)->GetId() == 1 ) 00086 isDisplayed= false; 00087 else if( ((Window *)msg.source)->GetId() == 2 ) 00088 { 00089 ans = isDisplayed= false; 00090 } 00091 00092 return true; 00093 }