Esempio n. 1
0
void Forum::deliverService()
{
  if( numberWorkers() > 0 && walkers().size() == 0 )
  {
    TaxCollectorPtr walker = TaxCollector::create( _city() );
    walker->send2City( this, ServiceWalker::goServiceMaximum|ServiceWalker::anywayWhenFailed );

    addWalker( walker.object() );
  }
}
Esempio n. 2
0
void Forum::deliverService()
{
  if( getWorkers() > 0 && getWalkerList().size() == 0 )
  {
    TaxCollectorPtr walker = TaxCollector::create( _getCity() );
    walker->send2City( this );

    if( !walker->isDeleted() )
    {
      addWalker( walker.as<Walker>() );
    }
  }
}
Esempio n. 3
0
void Forum::timeStep( const unsigned long time )
{
  WalkerList walkers = getWalkerList();
  foreach( WalkerPtr walker, walkers )
  {
    if( walker->isDeleted() )
    {
      TaxCollectorPtr collector = walker.as< TaxCollector >();
      if( collector.isValid() )
      {
        _d->taxInThisMonth += collector->getMoney();
        _d->citizensReached += collector->getCitizensReachedCount();
      }
    }
  }

  Building::timeStep( time );
}
Esempio n. 4
0
void Forum::applyService(ServiceWalkerPtr walker)
{
  switch( walker->type() )
  {
  case walker::taxCollector:
  {
    TaxCollectorPtr txcl = ptr_cast<TaxCollector>( walker );
    if( txcl.isValid() )
    {
      float tax = txcl->takeMoney();;
      _d->taxValue += tax;
      Logger::warning( "Forum: collect money %f. All money %f", tax, _d->taxValue );
    }
  }
  break;

  default:
  break;
  }

  ServiceBuilding::applyService( walker );
}