Advertisement
BlueMagma

Untitled

Jul 20th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.     init: function(elevators, floors) {
  3.         var callUp = [];
  4.         var callDown = [];
  5.         var elevatorList = [];
  6.         var floorList = [];
  7.         var optimiseMoves = false;
  8.        
  9.         var Floor = function (floor) {
  10.             var self = this;
  11.             self.floor = floor;
  12.             self.wakeIdleElevator = function() {
  13.                 for (var i = 0; i < elevatorList.length; ++i) {
  14.                     if (elevatorList[i].elevator.destinationQueue.length == 0) {
  15.                         elevatorList[i].doSomething();
  16.                     }
  17.                 }
  18.             }
  19.             self.floor.on("up_button_pressed", function() {
  20.                 callUp[self.floor.floorNum()] = true;
  21.                 self.wakeIdleElevator();
  22.             });
  23.             self.floor.on("down_button_pressed", function() {
  24.                 callDown[self.floor.floorNum()] = true;
  25.                 self.wakeIdleElevator();
  26.             });
  27.         }
  28.        
  29.         var Elevator = function(elevator) {
  30.             var self = this;
  31.             self.elevator = elevator;
  32.            
  33.             self.doSomething = function() {
  34.                 if (!optimiseMoves || self.elevator.loadFactor() > 0.7) {
  35.                     for (var i = 1; i < floors.length; ++i) {
  36.                         var above = self.elevator.currentFloor() + i;
  37.                         if (above < floors.length && (callDown[above] || callUp[above])) {
  38.                             self.elevator.goToFloor(above);
  39.                             callUp[above] = false;
  40.                             callDown[above] = false;
  41.                             return;
  42.                         }
  43.                         var under = self.elevator.currentFloor() - i
  44.                         if (under >= 0 && (callDown[under] || callUp[under])) {
  45.                             self.elevator.goToFloor(under);
  46.                             callUp[under] = false;
  47.                             callDown[under] = false;
  48.                             return;
  49.                         }
  50.                     }
  51.                 }
  52.             }
  53.            
  54.             self.elevator.on("idle", self.doSomething);
  55.  
  56.             self.elevator.on("floor_button_pressed", function(floorNum) {
  57.                 self.elevator.goToFloor(floorNum);
  58.             });
  59.             self.elevator.on("stopped_at_floor", function(floorNum) {
  60.                 callUp[floorNum] = false;
  61.                 callDown[floorNum] = false;
  62.             })
  63.         }
  64.        
  65.         for (var i = 0; i < floors.length; ++i) {
  66.             var floor =  new Floor(floors[i]);
  67.             floorList.push(floor);
  68.         }
  69.        
  70.         for (var i = 0; i < elevators.length; ++i) {
  71.             var elevator = new Elevator(elevators[i]);
  72.             elevatorList.push(elevator);
  73.         }
  74.  
  75.     },
  76.     update: function(dt, elevators, floors) {
  77.         // We normally don't need to do anything here
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement