Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by Torkil Djurhuus on 01.11.17.
- //
- #include "Event.h"
- #include "Simulation.h"
- #include "Station.h"
- #include "Train.h"
- void AssembleEvent::processEvent()
- {
- if(stationPtr->assembleTrain(trainID))
- {
- stationPtr->setState(ASSEMBLED, trainID); //sets state of train.
- shared_ptr<Event> Ready = shared_ptr<Event>(new ReadyEvent(trainID, getTime().Int() + 20, theSimulator, stationPtr)); //assemble event constructor filled
- theSimulator->scheduleEvent(Ready); //20 minutes before departure.
- cout << '\n' << "-----------------" << '\n' << endl;
- cout << "Current time: " << getTime().String() << endl;
- stationPtr->printTrainsbyID(trainID, MEDIUM); //print train when it's assembled.
- }
- else
- {
- stationPtr->setState(INCOMPLETE, trainID);
- shared_ptr<Event> AssemEvent = shared_ptr<Event>(new AssembleEvent(trainID, getTime().Int() + 10, theSimulator, stationPtr)); //if incomplete, add 10 minutes to time.
- theSimulator->scheduleEvent(AssemEvent);
- theSimulator->addTime(trainID);
- cout << '\n' << "-----------------" << '\n' << endl;
- cout << "Current time: " << getTime().String() << endl;
- stationPtr->printTrainsbyID(trainID, MEDIUM);
- }
- }
- void ReadyEvent::processEvent()
- {
- stationPtr->setState(READY, trainID);
- shared_ptr<Event> Depart = shared_ptr<Event> (new DepartureEvent(trainID, getTime().Int() + 10, theSimulator, stationPtr));
- theSimulator->scheduleEvent(Depart);
- cout << '\n' << "-----------------"<< '\n' << endl;
- cout << "Current time: " << getTime().String() << endl;
- stationPtr->printTrainsbyID(trainID, MEDIUM);
- }
- void DepartureEvent::processEvent()
- {
- stationPtr->setState(RUNNING, trainID);
- int arrTime = stationPtr->getArrTime(trainID);
- shared_ptr<Event> Arrived = shared_ptr<Event> (new ArriveEvent(trainID, arrTime, theSimulator, stationPtr));
- theSimulator->scheduleEvent(Arrived);
- cout << '\n' << "-----------------" << '\n' << endl;
- cout << "Current time: " << getTime().String() << endl;
- stationPtr->printTrainsbyID(trainID, MEDIUM);
- }
- void ArriveEvent::processEvent()
- {
- unique_ptr<Train> train(move(theSimulator->getTrain(trainID)));
- shared_ptr<Station> arrStationPtr = theSimulator->getArriveStation(train->getArriveStation());
- train->setState(ARRIVED);
- theSimulator->totalDelay.addTime(train->setDelay());
- cout << '\n' << "-----------------" << '\n' << endl;
- cout << "Current time: " << getTime().String() << endl;
- stationPtr->printTrainsbyID(trainID, MEDIUM);
- shared_ptr<Event> Disassemble = shared_ptr<Event> (new DisassembleEvent(trainID, getTime().Int(), theSimulator, arrStationPtr));
- theSimulator->scheduleEvent(Disassemble);
- theSimulator->moveTrain(train);
- }
- void DisassembleEvent::processEvent()
- {
- stationPtr->setState(FINISHED, trainID);
- stationPtr->disassemble(trainID);
- cout << '\n' << "-----------------" << '\n' << endl;
- cout << "Current time: " << getTime().String() << endl;
- stationPtr->printTrainsbyID(trainID, MEDIUM);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement