Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- init: function(elevators, floors) {
- var floorWait = floors.map( function(floor) {
- return {up:false, down: false};
- });
- function distance(a,b) {
- return Math.abs(a-b);
- }
- function addQueue(floorNum) {
- var exist = false;
- elevators.forEach( function (elevator) {
- if( elevator.destinationQueue.indexOf(floorNum) >= 0 ) {
- exist = true;
- }
- });
- if (exist) {
- return;
- }
- var lessbusy = elevators.reduce(function (a, b) {
- if ( a.destinationQueue.length < b.destinationQueue.length ) {
- return a;
- }
- else if ( a.destinationQueue.length > b.destinationQueue.length ) {
- return b;
- }
- else if ( distance(a.currentFloor(), floorNum) < distance(b.currentFloor(), floorNum) ) {
- return a;
- }
- else if ( distance(a.currentFloor(), floorNum) > distance(b.currentFloor(), floorNum) ) {
- return b;
- }
- else {
- return a;
- }
- });
- lessbusy.goToFloor(floorNum);
- }
- elevators.forEach( function (elevator, index) {
- elevator.on("idle", function() {
- elevator.goToFloor(index*2);
- });
- elevator.on("floor_button_pressed", function(floorNum) {
- elevator.goToFloor(floorNum, true);
- });
- elevator.on("passing_floor", function(floorNum) {
- if ( elevator.destinationQueue.indexOf(floorNum) >= 0 || (
- !elevator.loadFactor && (
- /*elevator.goingDownIndicator() &&*/ floorWait[floorNum].down ||
- /*elevator.goingUpIndicator() &&*/ floorWait[floorNum].up )
- ) ){
- elevator.goToFloor(floorNum, true);
- if ( elevator.goingDownIndicator() ) {
- floorWait[floorNum].down = false;
- }
- else {
- floorWait[floorNum].up = false;
- }
- }
- });
- elevator.on("stopped_at_floor", function(floorNum) {
- elevator.destinationQueue = elevator.destinationQueue.filter( function (f) {
- return (f !== floorNum );
- });
- });
- });
- floors.forEach(function (floor) {
- floor.on("up_button_pressed", function() {
- floorWait[floor.floorNum()].up = true;
- addQueue(floor.floorNum());
- });
- floor.on("down_button_pressed", function() {
- floorWait[floor.floorNum()].down = true;
- addQueue(floor.floorNum());
- });
- });
- },
- update: function(dt, elevators, floors) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement