Browse Source

Initial commit

master
Ashton Charbonneau 5 years ago
commit
f80547b054
1 changed files with 76 additions and 0 deletions
  1. 76
    0
      elevator.js

+ 76
- 0
elevator.js View File

@@ -0,0 +1,76 @@
1
+{
2
+	init: function(elevators, floors) {
3
+		console.clear();
4
+		console.log("----" + "\n");
5
+		console.log("Starting...");
6
+		console.log("----" + "\n");
7
+
8
+		let floorCount = floors.length;
9
+		let bottomFloor = 0;
10
+		let topFloor = floorCount - 1;
11
+		let elevatorCount = elevators.length;
12
+
13
+		let upRequestFloorSet = new Set();
14
+		let downRequestFloorSet = new Set();
15
+
16
+		// Register floor button presses
17
+		floors.forEach(function (floor) {
18
+			floor.on("up_button_pressed", function() {
19
+				console.log("Up request: " + floor.level);
20
+				upRequestFloorSet.add(floor.floorNum);
21
+			});
22
+
23
+			floor.on("down_button_pressed", function() {
24
+				console.log("Down request: " + floor.level);
25
+				downRequestFloorSet.add(floor.floorNum);
26
+			});
27
+		});
28
+
29
+		// Individual elevators
30
+		let elevator = elevators[0];
31
+		let elevatorIndex = elevators.indexOf(elevator);
32
+
33
+		let destinationSet = new Set();
34
+
35
+		let defaultRange = [
36
+			(elevatorIndex + 0) * Math.floor(floorCount / (elevatorCount + 1)),
37
+			(elevatorIndex + 1) * Math.floor(floorCount / (elevatorCount + 1)),
38
+			(elevatorIndex + 2) * Math.floor(floorCount / (elevatorCount + 1))
39
+		]
40
+
41
+		// Elevator starts on floor 0; must be going up
42
+		elevator.goingUpIndicator(true);
43
+		elevator.goingDownIndicator(false);
44
+
45
+		// Go to designated starting floor
46
+		console.log("Sending elevator[" + elevatorIndex + "] to floor[" + defaultRange[0] + "]")
47
+		elevator.goToFloor((elevatorIndex + 0) * Math.floor(floorCount / (elevatorCount + 1)));
48
+
49
+		elevator.on("idle", function() {
50
+			console.log("Idle...");
51
+			elevator.goingUpIndicator(false);
52
+			elevator.goingDownIndicator(false);
53
+		});
54
+
55
+		elevator.on("floor_button_pressed", function(floorNum) {
56
+			console.log("Floor pressed: " + floorNum);
57
+			destinationSet.add(floorNum);
58
+			elevator.goToFloor(floorNum);
59
+		});
60
+
61
+		elevator.on("passing_floor", function(floorNum, direction) {
62
+			if(upRequestFloorSet.has(floorNum) || downRequestFloorSet.has(floorNum) || destinationSet.has(floorNum)) {
63
+				elevator.goToFloor(floorNum);
64
+			}
65
+		});
66
+
67
+		elevator.on("stopped_at_floor", function(floorNum) {
68
+			console.log("Stopped at: " + floorNum);
69
+			upRequestFloorSet.delete(floorNum);
70
+			downRequestFloorSet.delete(floorNum);
71
+			destinationSet.delete(floorNum);
72
+		});
73
+	},
74
+
75
+	update: function(dt, elevators, floors) {}
76
+}

Loading…
Cancel
Save