RomeDivinityPtr DivinePantheon::get( RomeDivinityType name ) const { if( (unsigned int)name > _d->divinties.size() ) return RomeDivinityPtr(); return _d->divinties.at( name ); }
AdvisorReligionWindow::AdvisorReligionWindow( CityPtr city, Widget* parent, int id ) : Widget( parent, id, Rect( 0, 0, 1, 1 ) ), _d( new Impl ) { setGeometry( Rect( Point( (parent->getWidth() - 640 )/2, parent->getHeight() / 2 - 242 ), Size( 640, 280 ) ) ); Label* title = new Label( this, Rect( 60, 10, 60 + 210, 10 + 40) ); title->setText( _("##Religion advisor##") ); title->setFont( Font::create( FONT_3 ) ); title->setTextAlignment( alignUpperLeft, alignCenter ); _d->background.reset( Picture::create( getSize() ) ); //main _d->_d->background PictureDecorator::draw( *_d->background, Rect( Point( 0, 0 ), getSize() ), PictureDecorator::whiteFrame ); //buttons _d->_d->background PictureDecorator::draw( *_d->background, Rect( 35, 62, getWidth() - 35, 62 + 130 ), PictureDecorator::blackFrame ); Picture& icon = Picture::load( ResourceGroup::panelBackground, 264 ); _d->background->draw( icon, Point( 11, 11 ) ); Font font = Font::create( FONT_1 ); font.draw( *_d->background, _("##Temples##"), 268, 32, false ); font.draw( *_d->background, _("##small##"), 240, 47, false ); font.draw( *_d->background, _("##large##"), 297, 47, false ); font.draw( *_d->background, _("##Fest.##"), 370, 47, false ); font.draw( *_d->background, _("##Mood##"), 450, 47, false ); Point startPoint( 42, 65 ); Size labelSize( 550, 20 ); Impl::InfrastructureInfo info = _d->getInfo( city, building::templeCeres, building::B_BIG_TEMPLE_CERES ); _d->lbCeresInfo = new ReligionInfoLabel( this, Rect( startPoint, labelSize ), DivinePantheon::ceres(), info.smallTemplCount, info.bigTempleCount ); info = _d->getInfo( city, building::B_TEMPLE_NEPTUNE, building::B_BIG_TEMPLE_NEPTUNE ); _d->lbNeptuneInfo = new ReligionInfoLabel( this, Rect( startPoint + Point( 0, 20), labelSize), DivinePantheon::neptune(), info.smallTemplCount, info.bigTempleCount ); info = _d->getInfo( city, building::B_TEMPLE_MERCURE, building::B_BIG_TEMPLE_MERCURE ); _d->lbMercuryInfo = new ReligionInfoLabel( this, Rect( startPoint + Point( 0, 40), labelSize), DivinePantheon::mercury(), info.smallTemplCount, info.bigTempleCount ); info = _d->getInfo( city, building::B_TEMPLE_MARS, building::B_BIG_TEMPLE_MARS ); _d->lbMarsInfo = new ReligionInfoLabel( this, Rect( startPoint + Point( 0, 60), labelSize), DivinePantheon::mars(), info.smallTemplCount, info.bigTempleCount ); info = _d->getInfo( city, building::B_TEMPLE_VENUS, building::B_BIG_TEMPLE_VENUS ); _d->lbVenusInfo = new ReligionInfoLabel( this, Rect( startPoint + Point( 0, 80), labelSize), DivinePantheon::venus(), info.smallTemplCount, info.bigTempleCount ); info = _d->getInfo( city, building::B_TEMPLE_ORACLE, building::B_TEMPLE_ORACLE ); _d->lbOracleInfo = new ReligionInfoLabel( this, Rect( startPoint + Point( 0, 100), labelSize), RomeDivinityPtr(), info.smallTemplCount, 0 ); _d->btnHelp = new TexturedButton( this, Point( 12, getHeight() - 39), Size( 24 ), -1, ResourceMenu::helpInfBtnPicId ); }