-
Notifications
You must be signed in to change notification settings - Fork 112
/
swarm.js
112 lines (93 loc) · 2.62 KB
/
swarm.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'use strict';
var keypress = require('keypress');
var Swarm = require('../').Swarm;
var ACTIVE = true;
var STEPS = 2;
function cooldown() {
ACTIVE = false;
setTimeout(function () {
ACTIVE = true;
}, STEPS * 12);
}
// make `process.stdin` begin emitting 'keypress' events
keypress(process.stdin);
// listen for the 'keypress' event
process.stdin.setRawMode(true);
process.stdin.resume();
var swarm = new Swarm({timeout: 10});
swarm.assemble();
swarm.on('assembled', function () {
ACTIVE = true;
});
process.stdin.on('keypress', function (ch, key) {
if (ACTIVE && key) {
if (key.name === 'm') {
swarm.emergency();
setTimeout(function () {
process.exit();
}, 3000);
} else if (key.name === 't') {
console.log('swarm#takeoff');
swarm.takeOff();
} else if (key.name === 'w') {
console.log('swarm#forward');
swarm.forward({ steps: STEPS });
cooldown();
} else if (key.name === 's') {
console.log('swarm#backward');
swarm.backward({ steps: STEPS });
cooldown();
} else if (key.name === 'left') {
console.log('swarm#turnleft');
swarm.turnLeft({ steps: STEPS });
cooldown();
} else if (key.name === 'a') {
console.log('swarm#tiltleft');
swarm.tiltLeft({ steps: STEPS });
cooldown();
} else if (key.name === 'd') {
console.log('swarm#tiltright');
swarm.tiltRight({ steps: STEPS });
cooldown();
} else if (key.name === 'right') {
console.log('swarm#turnright');
swarm.turnRight({ steps: STEPS });
cooldown();
} else if (key.name === 'up') {
console.log('swarm#up');
swarm.up({ steps: STEPS * 2.5 });
cooldown();
} else if (key.name === 'down') {
console.log('swarm#down');
swarm.down({ steps: STEPS * 2.5 });
cooldown();
} else if (key.name === 'i' || key.name === 'f') {
swarm.frontFlip({ steps: STEPS });
cooldown();
} else if (key.name === 'j') {
swarm.leftFlip({ steps: STEPS });
cooldown();
} else if (key.name === 'l') {
swarm.rightFlip({ steps: STEPS });
cooldown();
} else if (key.name === 'k') {
swarm.backFlip({ steps: STEPS });
cooldown();
} else if (key.name === 'q') {
console.log('Initiated Landing Sequence...');
swarm.land(function () {
console.log('land');
swarm.release( function () {
console.log('release');
});
});
// setTimeout(function () {
// process.exit();
// }, 3000);
}
}
if (key && key.ctrl && key.name === 'c') {
process.stdin.pause();
process.exit();
}
});