/
index.ts
57 lines (51 loc) · 1.85 KB
/
index.ts
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
import { NodeCG } from "nodecg/types/server";
import { StreamdeckServiceClient } from "nodecg-io-streamdeck";
import { requireService } from "nodecg-io-core";
module.exports = function (nodecg: NodeCG) {
nodecg.log.info("Sample bundle for streamdeck started");
const streamdeck = requireService<StreamdeckServiceClient>(nodecg, "streamdeck");
let timeout: NodeJS.Timeout | undefined;
streamdeck?.onAvailable((deck) => {
nodecg.log.info("Streamdeck client has been updated, painting the Streamdeck.");
try {
const colors: Array<[number, number, number]> = [
[231, 60, 60],
[231, 128, 60],
[231, 197, 60],
[197, 231, 60],
[128, 231, 60],
[60, 231, 60],
[60, 231, 128],
[60, 231, 179],
[60, 197, 231],
[60, 128, 231],
[60, 60, 231],
[128, 60, 231],
[197, 60, 179],
[231, 60, 128],
];
let i = 0;
timeout = setInterval(() => {
try {
deck.fillColor(
i % deck.NUM_KEYS,
colors[i % colors.length]?.[0] ?? 0,
colors[i % colors.length]?.[1] ?? 0,
colors[i % colors.length]?.[2] ?? 0,
);
i += 1;
} catch (err) {
nodecg.log.info("Streamdeck error: " + String(err));
}
}, 200);
} catch (err) {
nodecg.log.info("Streamdeck error: " + String(err));
}
});
streamdeck?.onUnavailable(() => {
nodecg.log.info("Streamdeck client has been unset.");
if (timeout) {
clearTimeout(timeout);
}
});
};