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();
        }
    }
}
Exemple #2
0
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();
    }
  }
}