Advertisement
Guest User

Untitled

a guest
Jul 28th, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. {
  2. init: function(elevators, floors) {
  3.  
  4. var floorWait = floors.map( function(floor) {
  5. return {up:false, down: false};
  6. });
  7. function distance(a,b) {
  8. return Math.abs(a-b);
  9. }
  10. function addQueue(floorNum) {
  11. var exist = false;
  12. elevators.forEach( function (elevator) {
  13. if( elevator.destinationQueue.indexOf(floorNum) >= 0 ) {
  14. exist = true;
  15. }
  16. });
  17. if (exist) {
  18. return;
  19. }
  20. var lessbusy = elevators.reduce(function (a, b) {
  21.  
  22. if ( a.destinationQueue.length < b.destinationQueue.length ) {
  23. return a;
  24. }
  25. else if ( a.destinationQueue.length > b.destinationQueue.length ) {
  26. return b;
  27. }
  28. else if ( distance(a.currentFloor(), floorNum) < distance(b.currentFloor(), floorNum) ) {
  29. return a;
  30. }
  31. else if ( distance(a.currentFloor(), floorNum) > distance(b.currentFloor(), floorNum) ) {
  32. return b;
  33. }
  34. else {
  35. return a;
  36. }
  37. });
  38.  
  39. lessbusy.goToFloor(floorNum);
  40. }
  41.  
  42.  
  43. elevators.forEach( function (elevator, index) {
  44. elevator.on("idle", function() {
  45. elevator.goToFloor(index*2);
  46. });
  47.  
  48. elevator.on("floor_button_pressed", function(floorNum) {
  49. elevator.goToFloor(floorNum, true);
  50. });
  51. elevator.on("passing_floor", function(floorNum) {
  52. if ( elevator.destinationQueue.indexOf(floorNum) >= 0 || (
  53. !elevator.loadFactor && (
  54. /*elevator.goingDownIndicator() &&*/ floorWait[floorNum].down ||
  55. /*elevator.goingUpIndicator() &&*/ floorWait[floorNum].up )
  56. ) ){
  57. elevator.goToFloor(floorNum, true);
  58. if ( elevator.goingDownIndicator() ) {
  59. floorWait[floorNum].down = false;
  60. }
  61. else {
  62. floorWait[floorNum].up = false;
  63. }
  64. }
  65.  
  66. });
  67. elevator.on("stopped_at_floor", function(floorNum) {
  68. elevator.destinationQueue = elevator.destinationQueue.filter( function (f) {
  69. return (f !== floorNum );
  70. });
  71. });
  72. });
  73.  
  74. floors.forEach(function (floor) {
  75. floor.on("up_button_pressed", function() {
  76. floorWait[floor.floorNum()].up = true;
  77. addQueue(floor.floorNum());
  78. });
  79. floor.on("down_button_pressed", function() {
  80. floorWait[floor.floorNum()].down = true;
  81. addQueue(floor.floorNum());
  82. });
  83. });
  84. },
  85. update: function(dt, elevators, floors) {
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement