This repository has been archived by the owner on Nov 6, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathevents.js
64 lines (54 loc) · 1.66 KB
/
events.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
const { EventEmitter } = require("events");
const { getID } = require("./consts");
const ZenoEvents = {
GAME_LOADED: "GameLoaded",
GAME_ACTIVITY_LOADED: "GameActivityLoaded",
USER_CHANGED: "UserChanged",
CLASS_CHANGED: "ClassChanged",
MATCH_ENDED: "MatchEnded"
}
const ZenoEmitter = new EventEmitter();
ZenoEmitter.events = ZenoEvents;
//#region Game Load Event
new MutationObserver(async (mutationRecords, observer) => {
if (getID("customizeButton")) {
ZenoEmitter.emit(ZenoEvents.GAME_LOADED);
observer.disconnect();
}
}).observe(document, {
childList: true,
subtree: true,
characterDataOldValue: true,
});
//#endregion
//#region Events based on Game Activity
let gameActivity = false;
let gameEnded;
let prev = { user: "", class: { name: "" }};
setInterval(() => {
let gameData;
try{ gameData = window.getGameActivity() } catch (err) {return}
if(!gameActivity) {
gameActivity = true;
ZenoEmitter.emit(ZenoEvents.GAME_ACTIVITY_LOADED);
}
if(prev.user != gameData.user){
prev.user = gameData.user;
ZenoEmitter.emit(ZenoEvents.USER_CHANGED);
}
if(prev.class.name != gameData.class.name){
prev.class.name = gameData.class.name;
ZenoEmitter.emit(ZenoEvents.CLASS_CHANGED);
}
if(gameData.time <= 0 && !gameEnded && gameActivity){
gameEnded = true;
setTimeout(() => { ZenoEmitter.emit(ZenoEvents.MATCH_ENDED); }, 9000);
} else if(gameData.time > 0 && gameEnded) {
gameEnded = false;
}
return;
}, 1000);
//#endregion
window.ZenoEmitter = ZenoEmitter;
exports.ZenoEmitter = ZenoEmitter;
exports.ZenoEvents = ZenoEvents;