Advertisement
Guest User

Untitled

a guest
May 25th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. void PedestrianCrossing::handleMessage(cMessage *msg) {
  2. simtime_t greenLightTime = par("greenLightTime"), pauseTime = par("pauseTime");
  3. // reagować na: nadejście pieszego, zapalenie światła czerwonego, zapalenie światła // zielonego
  4. if (strcmp(msg->getName(), "pedestrian") == 0) // przybycie pieszego
  5. {
  6. ++noPedestrians;
  7. if (green == 0) {
  8. simtime_t now = simTime();
  9. simtime_t greenTime;
  10. if (now >= nextGreenAvailable) {
  11. greenTime = now;
  12. histw.collect(0.0);
  13. } else {
  14. greenTime = nextGreenAvailable;
  15. histw.collect(greenTime - now);
  16. }
  17. if (button == 0) {
  18. button = 1;
  19. scheduleAt(greenTime, new cMessage("green"));
  20. }
  21. } else {
  22. histw.collect(0.0);
  23. }
  24. } else if (strcmp(msg->getName(), "green") == 0) // zielone dla pieszych
  25. {
  26. button = 0;
  27. green = 1;
  28. scheduleAt(simTime() + greenLightTime, new cMessage("red"));
  29. } else if (strcmp(msg->getName(), "red") == 0) // czerwone dla pieszych
  30. {
  31. histq.collect(noPedestrians);
  32. noPedestrians = 0;
  33. green = 0;
  34. nextGreenAvailable = simTime() + pauseTime;
  35. send(new cMessage("cykl"), "out");
  36. }
  37. delete msg;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement