// depart.cc: the Departure class.

#include "main.h"
#include "car.h"
#include "carqueue.h"
#include "event.h"
#include "pump.h"
#include "pstand.h"
#include "stats.h"
#include "depart.h"

// makeItHappen: departure event routine.
void Departure::makeItHappen () {
   // precondition: pump != null && pump->getCarInService != null
   
   // Identify the departing car and collect statistics.
   Car *departingCar = pump->getCarInService();
   sim->stats->accumSale (departingCar->getLitresNeeded());
   
   // The car vanishes and the pump is free; can we serve another car?
   delete departingCar;
   if (sim->carQueue->getQueueSize() > 0)
      pump->startService (sim->carQueue->takeFirstCar());
   else
      sim->pumpStand->releasePump (pump);

   // This departure event is all done.
   delete this;
}

