-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsimple_logic.js
44 lines (36 loc) · 1.41 KB
/
simple_logic.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var simpleLogic = function(){
var logic = {
};
function getNearestElevatorIndex(level) {
var nearestElevatorIndex = 0
var minimalDistance = Math.abs(looper.state.elevators[nearestElevatorIndex].currentLevel - level)
for (var i = 0; i < looper.state.elevators.length; i++) {
if(Math.abs(looper.state.elevators[i].currentLevel - level) < minimalDistance) {
minimalDistance = Math.abs(looper.state.elevators[i].currentLevel - level)
nearestElevatorIndex = i
}
}
return nearestElevatorIndex
}
logic.onElevatorUpRequested = function(level) {
//send closest unused elevator or elevator that will visit the level anyways
//console.log("onElevatorUpRequested");
looper.state.elevators[getNearestElevatorIndex()].addTargetLevel(level.id);
}
logic.onElevatorDownRequested = function(level) {
//send closest unused elevator or elevator that will visit the level anyways
//console.log("onElevatorDownRequested");
looper.state.elevators[getNearestElevatorIndex()].addTargetLevel(level.id);
}
logic.onTargetLevelsChanged = function(currentState, elevator, targetLevels) {
//go to target levels one after another
}
logic.onElevatorIdle = function(elevator) {
//stay on the level
//console.log("onElevatorIdle");
}
logic.onElevatorStopped = function(elevator) {
//console.log("onElevatorStopped");
}
return logic;
}();