Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- init: function(elevators, floors) {
- var callUp = [];
- var callDown = [];
- var elevatorList = [];
- var floorList = [];
- var optimiseMoves = false;
- var Floor = function (floor) {
- var self = this;
- self.floor = floor;
- self.wakeIdleElevator = function() {
- for (var i = 0; i < elevatorList.length; ++i) {
- if (elevatorList[i].elevator.destinationQueue.length == 0) {
- elevatorList[i].doSomething();
- }
- }
- }
- self.floor.on("up_button_pressed", function() {
- callUp[self.floor.floorNum()] = true;
- self.wakeIdleElevator();
- });
- self.floor.on("down_button_pressed", function() {
- callDown[self.floor.floorNum()] = true;
- self.wakeIdleElevator();
- });
- }
- var Elevator = function(elevator) {
- var self = this;
- self.elevator = elevator;
- self.doSomething = function() {
- if (!optimiseMoves || self.elevator.loadFactor() > 0.7) {
- for (var i = 1; i < floors.length; ++i) {
- var above = self.elevator.currentFloor() + i;
- if (above < floors.length && (callDown[above] || callUp[above])) {
- self.elevator.goToFloor(above);
- callUp[above] = false;
- callDown[above] = false;
- return;
- }
- var under = self.elevator.currentFloor() - i
- if (under >= 0 && (callDown[under] || callUp[under])) {
- self.elevator.goToFloor(under);
- callUp[under] = false;
- callDown[under] = false;
- return;
- }
- }
- }
- }
- self.elevator.on("idle", self.doSomething);
- self.elevator.on("floor_button_pressed", function(floorNum) {
- self.elevator.goToFloor(floorNum);
- });
- self.elevator.on("stopped_at_floor", function(floorNum) {
- callUp[floorNum] = false;
- callDown[floorNum] = false;
- })
- }
- for (var i = 0; i < floors.length; ++i) {
- var floor = new Floor(floors[i]);
- floorList.push(floor);
- }
- for (var i = 0; i < elevators.length; ++i) {
- var elevator = new Elevator(elevators[i]);
- elevatorList.push(elevator);
- }
- },
- update: function(dt, elevators, floors) {
- // We normally don't need to do anything here
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement