Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.19 KB | None | 0 0
  1. //
  2. // Created by Torkil Djurhuus on 01.11.17.
  3. //
  4.  
  5. #include "Event.h"
  6. #include "Simulation.h"
  7. #include "Station.h"
  8. #include "Train.h"
  9.  
  10.  
  11.  
  12. void AssembleEvent::processEvent()
  13. {
  14.     if(stationPtr->assembleTrain(trainID))
  15.     {
  16.         stationPtr->setState(ASSEMBLED, trainID); //sets state of train.
  17.         shared_ptr<Event> Ready = shared_ptr<Event>(new ReadyEvent(trainID, getTime().Int() + 20, theSimulator, stationPtr)); //assemble event constructor filled
  18.         theSimulator->scheduleEvent(Ready);                                                                                   //20 minutes before departure.
  19.         cout << '\n' << "-----------------" << '\n' << endl;
  20.         cout << "Current time: " << getTime().String() << endl;
  21.         stationPtr->printTrainsbyID(trainID, MEDIUM); //print train when it's assembled.
  22.     }
  23.     else
  24.     {
  25.         stationPtr->setState(INCOMPLETE, trainID);
  26.         shared_ptr<Event> AssemEvent = shared_ptr<Event>(new AssembleEvent(trainID, getTime().Int() + 10, theSimulator, stationPtr)); //if incomplete, add 10 minutes to time.
  27.         theSimulator->scheduleEvent(AssemEvent);
  28.         theSimulator->addTime(trainID);
  29.         cout << '\n' << "-----------------" << '\n'  << endl;
  30.         cout << "Current time: " << getTime().String() << endl;
  31.         stationPtr->printTrainsbyID(trainID, MEDIUM);
  32.     }
  33. }
  34.  
  35. void ReadyEvent::processEvent()
  36. {
  37.     stationPtr->setState(READY, trainID);
  38.     shared_ptr<Event> Depart = shared_ptr<Event> (new DepartureEvent(trainID, getTime().Int() + 10, theSimulator, stationPtr));
  39.     theSimulator->scheduleEvent(Depart);
  40.     cout << '\n' << "-----------------"<< '\n' << endl;
  41.     cout << "Current time: " << getTime().String() << endl;
  42.     stationPtr->printTrainsbyID(trainID, MEDIUM);
  43. }
  44.  
  45. void DepartureEvent::processEvent()
  46. {
  47.     stationPtr->setState(RUNNING, trainID);
  48.     int arrTime = stationPtr->getArrTime(trainID);
  49.     shared_ptr<Event> Arrived = shared_ptr<Event> (new ArriveEvent(trainID, arrTime, theSimulator, stationPtr));
  50.     theSimulator->scheduleEvent(Arrived);
  51.     cout << '\n' << "-----------------" << '\n' << endl;
  52.     cout << "Current time: " << getTime().String() << endl;
  53.     stationPtr->printTrainsbyID(trainID, MEDIUM);
  54. }
  55.  
  56. void ArriveEvent::processEvent()
  57. {
  58.     unique_ptr<Train> train(move(theSimulator->getTrain(trainID)));
  59.     shared_ptr<Station> arrStationPtr = theSimulator->getArriveStation(train->getArriveStation());
  60.     train->setState(ARRIVED);
  61.     theSimulator->totalDelay.addTime(train->setDelay());
  62.     cout << '\n' << "-----------------" << '\n' << endl;
  63.     cout << "Current time: " << getTime().String() << endl;
  64.     stationPtr->printTrainsbyID(trainID, MEDIUM);
  65.     shared_ptr<Event> Disassemble = shared_ptr<Event> (new DisassembleEvent(trainID, getTime().Int(), theSimulator, arrStationPtr));
  66.     theSimulator->scheduleEvent(Disassemble);
  67.     theSimulator->moveTrain(train);
  68. }
  69.  
  70. void DisassembleEvent::processEvent()
  71. {
  72.     stationPtr->setState(FINISHED, trainID);
  73.     stationPtr->disassemble(trainID);
  74.     cout << '\n' << "-----------------" << '\n' << endl;
  75.     cout << "Current time: " << getTime().String() << endl;
  76.     stationPtr->printTrainsbyID(trainID, MEDIUM);
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement