void ShowAdvisorWindow::_exec(Game& game, unsigned int) { bool advEnabled = game.city()->getOption( PlayerCity::adviserEnabled ) > 0; if( !advEnabled ) { events::GameEventPtr e = events::WarningMessage::create( "##not_available##" ); e->dispatch(); return; } city::Helper helper( game.city() ); SenateList senates = helper.find<Senate>( objects::senate ); if( senates.empty() ) { events::GameEventPtr e = events::WarningMessage::create( "##build_senate_for_advisors##" ); e->dispatch(); return; } List<gui::advisorwnd::AWindow*> wndList = game.gui()->rootWidget()->findChildren<gui::advisorwnd::AWindow*>(); if( _show ) { if( !wndList.empty() ) { wndList.front()->bringToFront(); wndList.front()->showAdvisor( _advisor ); } else { gui::advisorwnd::AWindow::create( game.gui()->rootWidget(), -1, _advisor, game.city() ); } } else { if( !wndList.empty() ) { wndList.front()->deleteLater(); } } }
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(); } }
void ShowAdvisorWindow::_exec(Game& game, unsigned int) { bool advEnabled = game.city()->getOption( PlayerCity::adviserEnabled ) > 0; if( !advEnabled ) { GameEventPtr e = WarningMessage::create( "##not_available##", 1 ); e->dispatch(); return; } SenateList senates = city::statistic::getObjects<Senate>( game.city(), object::senate ); if( senates.empty() ) { GameEventPtr e = WarningMessage::create( "##build_senate_for_advisors##", 1 ); e->dispatch(); return; } Parlor* parlor = gui::findChildA<Parlor*>( true, game.gui()->rootWidget() ); if( _show ) { if( parlor ) { parlor->bringToFront(); parlor->showAdvisor( _advisor ); } else { Parlor::create( game.gui()->rootWidget(), -1, _advisor, game.city() ); } } else { if( parlor ) { parlor->deleteLater(); } } }