{ init: function(elevators, floors) { console.clear(); console.log("----" + "\n"); console.log("Starting..."); console.log("----" + "\n"); let floorCount = floors.length; let bottomFloor = 0; let topFloor = floorCount - 1; let elevatorCount = elevators.length; let upRequestFloorSet = new Set(); let downRequestFloorSet = new Set(); // Register floor button presses floors.forEach(function (floor) { floor.on("up_button_pressed", function() { console.log("Up request: " + floor.level); upRequestFloorSet.add(floor.floorNum); }); floor.on("down_button_pressed", function() { console.log("Down request: " + floor.level); downRequestFloorSet.add(floor.floorNum); }); }); // Individual elevators let elevator = elevators[0]; let elevatorIndex = elevators.indexOf(elevator); let destinationSet = new Set(); let defaultRange = [ (elevatorIndex + 0) * Math.floor(floorCount / (elevatorCount + 1)), (elevatorIndex + 1) * Math.floor(floorCount / (elevatorCount + 1)), (elevatorIndex + 2) * Math.floor(floorCount / (elevatorCount + 1)) ] // Elevator starts on floor 0; must be going up elevator.goingUpIndicator(true); elevator.goingDownIndicator(false); // Go to designated starting floor console.log("Sending elevator[" + elevatorIndex + "] to floor[" + defaultRange[0] + "]") elevator.goToFloor((elevatorIndex + 0) * Math.floor(floorCount / (elevatorCount + 1))); elevator.on("idle", function() { console.log("Idle..."); elevator.goingUpIndicator(false); elevator.goingDownIndicator(false); }); elevator.on("floor_button_pressed", function(floorNum) { console.log("Floor pressed: " + floorNum); destinationSet.add(floorNum); elevator.goToFloor(floorNum); }); elevator.on("passing_floor", function(floorNum, direction) { if(upRequestFloorSet.has(floorNum) || downRequestFloorSet.has(floorNum) || destinationSet.has(floorNum)) { elevator.goToFloor(floorNum); } }); elevator.on("stopped_at_floor", function(floorNum) { console.log("Stopped at: " + floorNum); upRequestFloorSet.delete(floorNum); downRequestFloorSet.delete(floorNum); destinationSet.delete(floorNum); }); }, update: function(dt, elevators, floors) {} }