Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void PedestrianCrossing::handleMessage(cMessage *msg) {
- simtime_t greenLightTime = par("greenLightTime"), pauseTime = par("pauseTime");
- // reagować na: nadejście pieszego, zapalenie światła czerwonego, zapalenie światła // zielonego
- if (strcmp(msg->getName(), "pedestrian") == 0) // przybycie pieszego
- {
- ++noPedestrians;
- if (green == 0) {
- simtime_t now = simTime();
- simtime_t greenTime;
- if (now >= nextGreenAvailable) {
- greenTime = now;
- histw.collect(0.0);
- } else {
- greenTime = nextGreenAvailable;
- histw.collect(greenTime - now);
- }
- if (button == 0) {
- button = 1;
- scheduleAt(greenTime, new cMessage("green"));
- }
- } else {
- histw.collect(0.0);
- }
- } else if (strcmp(msg->getName(), "green") == 0) // zielone dla pieszych
- {
- button = 0;
- green = 1;
- scheduleAt(simTime() + greenLightTime, new cMessage("red"));
- } else if (strcmp(msg->getName(), "red") == 0) // czerwone dla pieszych
- {
- histq.collect(noPedestrians);
- noPedestrians = 0;
- green = 0;
- nextGreenAvailable = simTime() + pauseTime;
- send(new cMessage("cykl"), "out");
- }
- delete msg;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement