Пример #1
0
void CartSupplier::send2City( BuildingPtr building, const Good::Type type, const int qty )
{
  computeWalkerDestination( building, type, qty );

  GoodStore* storage = 0;
  if( building.is<Factory>() )
  {
    storage = &building.as<Factory>()->getGoodStore();
  }
  else if( building.is<Granary>() )
  {
    storage = &building.as<Granary>()->getGoodStore();
  }
  else if( building.is<Warehouse>() )
  {
    storage = &building.as<Warehouse>()->getGoodStore();
  }

  if( !isDeleted() && storage )
  {   
    _d->stock.setType( type );
    _d->stock._maxQty = qty;
    _d->rcvReservationID = storage->reserveStorage( _d->stock );
    _d->city->addWalker( WalkerPtr( this ) );
  }
}
Пример #2
0
void CartPusher::send2City()
{
  computeWalkerDestination();

  if( !isDeleted() )
    Scenario::instance().getCity().addWalker( WalkerPtr( this ) );
}
void CartPusher::timeStep( const unsigned long time )
{
  if( (time % 22 == 1) && (_getPathway().getLength() < 2) )
  {
    computeWalkerDestination();
  }

  Walker::timeStep( time );
}
Пример #4
0
void MarketLady::send2City( MarketPtr market )
{
  computeWalkerDestination( market );

  if( !isDeleted() )
  {
    _d->city->addWalker( WalkerPtr( this ) );   
  }
}
void CartPusher::send2City( BuildingPtr building, GoodStock& carry )
{
  _d->stock.append( carry );
  setProducerBuilding( building  );

  computeWalkerDestination();

  if( !isDeleted() )
  {
    _getCity()->addWalker( this );
  }
}