void Simple::renderUi(Engine &engine) { Layer::renderUi( engine ); Tile* lastTile = _currentTile(); if( lastTile ) { SenatePtr senate = lastTile->overlay<Senate>(); if( senate.isValid() ) { _d->senateInfo.draw( _lastCursorPos(), Engine::instance(), senate ); } } }
void Forum::Impl::removeMoney(PlayerCityPtr city) { SenatePtr senate; SenateList senates = city::statistic::getObjects<Senate>( city, object::senate ); if( !senates.empty() ) senate = senates.front(); int maxMoney = city->treasury().money(); if( maxMoney > 0 ) { ForumList forums = city::statistic::getObjects<Forum>( city ); if( senate.isValid() ) maxMoney /= 2; maxMoney /= forums.size(); events::GameEventPtr e = events::Payment::create( econ::Issue::moneyStolen, -maxMoney ); e->dispatch(); } }
AboutSenate::AboutSenate(Widget* parent, PlayerCityPtr city, const Tile& tile ) : Simple( parent, Rect( 0, 0, 510, 290 ), Rect( 16, 126, 510 - 16, 126 + 62 ) ) { SenatePtr senate = ptr_cast<Senate>( tile.overlay() ); std::string title = MetaDataHolder::instance().getData( building::senate ).prettyName(); setTitle( _(title) ); // number of workers _updateWorkersLabel( Point( 32, 136), 542, senate->maximumWorkers(), senate->numberWorkers() ); std::string denariesStr = StringHelper::format( 0xff, "%s %d", _("##senate_save##"), senate->funds() ); Label* lb = new Label( this, Rect( 60, 35, width() - 16, 35 + 30 ), denariesStr ); lb->setIcon( GoodHelper::picture( Good::denaries ) ); lb->setText( denariesStr ); lb->setTextOffset( Point( 30, 0 )); new Label( this, Rect( 60, 215, 60 + 300, 215 + 24 ), _("##visit_rating_advisor##") ); TexturedButton* btnAdvisor = new TexturedButton( this, Point( 350, 215 ), Size(28), advisorBtnId, 289 ); CONNECT( btnAdvisor, onClicked(), this, AboutSenate::_showRatingAdvisor ); CONNECT( btnAdvisor, onClicked(), this, AboutSenate::deleteLater ); }