Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- init: function(elevators, floors) {
- var upAsked = [];
- var downAsked =[];
- var state = [];
- var passengers = [];
- var figureOutNextFloor = function(elevator, stops, state) {
- //passenger load is updated after the stop event, so I track stops and return empty also if this was the last one
- var empty = elevator.loadFactor() == 0 || stops.every(function(k){return !k;});
- if (elevator.destinationQueue.length>0) return
- console.log('elevator stats: floor '+elevator.currentFloor() + ' up/down flags '+ elevator.goingUpIndicator()+'/'+ elevator.goingDownIndicator());
- console.log('passenger stats: called floors '+stops + ' down reservations '+ downAsked+' up reservations '+ upAsked);
- //your code goes here
- if (empty && upAsked[0]) {
- elevator.goToFloor(0);
- }
- }
- for (var i = 0; i < elevators.length ; i++) {
- passengers[i] = [];
- state[i] = -1;
- var fcb = function(k) { return function(j) {
- passengers[k][j]=true;
- figureOutNextFloor(elevators[k], passengers[k], state[k]);
- }};
- var icb = function(k) { return function() {
- figureOutNextFloor(elevators[k], passengers[k], state[k]);
- }};
- elevators[i].on("idle", icb(i));
- //elevators[i].on("passing_floor", icb(i));
- elevators[i].on("floor_button_pressed", fcb(i));
- var scb = function(k) { return function(j) {
- if(elevators[j].goingUpIndicator()) {
- upAsked[j]=false;
- }
- if(elevators[j].goingDownIndicator()) {
- downAsked[j]=false;
- }
- passengers[k][j]=false;
- }};
- elevators[i].on("stopped_at_floor", scb(i));
- };
- for (var i = 0; i < floors.length ; i++) {
- downAsked[i]=false;
- upAsked[i]=false;
- for (var k = 0; k<elevators.length;k++)
- passengers[k][i] = false;
- var ucb = function(k) { return function() {
- upAsked[k] = true;
- for(var z=0;z<elevators.length;z++) {
- figureOutNextFloor(elevators[z], passengers[z], state[z]);
- }
- }};
- floors[i].on("up_button_pressed", ucb(i));
- var dcb = function(k) { return function() {
- downAsked[k] = true;
- for(var z=0;z<elevators.length;z++) {
- figureOutNextFloor(elevators[z], passengers[z], state[z]);
- }
- }};
- floors[i].on("down_button_pressed", dcb(i));
- };
- },
- update: function(dt, elevators, floors) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment