-
Notifications
You must be signed in to change notification settings - Fork 0
/
MMM-Halloween.js
103 lines (95 loc) · 2.51 KB
/
MMM-Halloween.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
/* Magic Mirror
* Module: MMM-Halloween
*
* By Voigtus
* MIT Licensed.
*/
let currentScareId = "";
let baitId = "";
let elements = 0;
Module.register("MMM-Halloween", {
defaults: {
imageNameList: [],
videoNameList: [],
scareInterval: 0,
scareTime: 0,
muted: true,
bait: ""
},
//set interval for scare
start: function () {
setInterval(() => {
triggerNewScare();
setTimeout(() => {
hideScare();
}, this.config.scareTime);
}, this.config.scareInterval);
},
// Override dom generator.
getDom: function () {
var wrapper = document.createElement("div");
if (this.config.bait !== "") {
var image = document.createElement("img");
image.src = `modules/MMM-Halloween/bait/${this.config.bait}`;
image.id = `bait`;
image.hidden = false;
wrapper.appendChild(image);
baitId = `bait`;
}
var counter = 0;
this.config.videoNameList.forEach(v => {
var video = document.createElement('video');
video.src = `modules/MMM-Halloween/videos/${v}`;
video.type = "video/mp4";
video.autoplay = false;
video.id = `scare_${counter}`;
video.hidden = true;
video.muted = this.muted;
wrapper.appendChild(video);
counter++;
});
this.config.imageNameList.forEach(imageName => {
var image = document.createElement("img");
image.src = `modules/MMM-Halloween/images/${imageName}`;
image.id = `scare_${counter}`;
image.hidden = true;
wrapper.appendChild(image);
counter++;
});
elements = counter;
return wrapper;
},
//TODO add reaction for motion sensor
// notificationReceived: function (notification, payload, sender) {
// if (notification === "MOTION_DETECTED") {
// triggerNewScare();
// }
// },
});
function triggerNewScare() {
const randomNumber = Math.floor(Math.random() * elements);
var newScare = document.getElementById(`scare_${randomNumber}`);
if (newScare.tagName === "VIDEO") {
newScare.currentTime = 0;
newScare.play();
}
if(baitId!== ""){
var bait = document.getElementById(baitId);
bait.hidden = true;
}
newScare.hidden = false;
currentScareId = `scare_${randomNumber}`;
}
function hideScare() {
if (currentScareId !== "") {
var oldScare = document.getElementById(currentScareId);
if (oldScare.tagName === "VIDEO") {
oldScare.pause();
}
oldScare.hidden = true;
}
if(baitId!== ""){
var bait = document.getElementById(baitId);
bait.hidden = false;
}
}