void Forum::deliverService() { if( numberWorkers() > 0 && walkers().size() == 0 ) { TaxCollectorPtr walker = TaxCollector::create( _city() ); walker->send2City( this, ServiceWalker::goServiceMaximum|ServiceWalker::anywayWhenFailed ); addWalker( walker.object() ); } }
void Forum::deliverService() { if( getWorkers() > 0 && getWalkerList().size() == 0 ) { TaxCollectorPtr walker = TaxCollector::create( _getCity() ); walker->send2City( this ); if( !walker->isDeleted() ) { addWalker( walker.as<Walker>() ); } } }
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 ); }
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 ); }