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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
startHooks.push(() => {
car0speed = 16;
car0cspeed = 0;
if (online && role === "guest") {
car0startx = 388.9;
car0starty = 79.4;
} else {
car0startx = 428;
car0starty = 42.9;
}
car0collisionon = true;
car0enableOOBChecker = false;
// Collision Manager
function car0collision() {
if (!keysEnabled) { return; }
if (started) {
carshb = document.getElementById("car0").getBoundingClientRect();
hitbox = document.getElementById("barrier").getBoundingClientRect();
var overlap = !(carshb.right < hitbox.left ||
carshb.left > hitbox.right ||
carshb.bottom < hitbox.top ||
carshb.top > hitbox.bottom)
if (overlap) {
info("CarManager:car0", "Reversal prevented at X " + document.getElementById("car0").style.left + ", Y " + document.getElementById("car0").style.top);
document.getElementById("car0").style.left = car0startx + "px";
document.getElementById("car0").style.top = car0starty + "px";
document.getElementById("car0").style.transform = "rotate(0deg)";
car0cspeed = 0;
}
}
if (!car0collisionon) { return; }
walls = Array.from(document.getElementsByClassName("wall"));
walls.forEach((wall) => {
carshb = document.getElementById("car0").getBoundingClientRect();
hitbox = wall.getBoundingClientRect();
var overlap = !(carshb.right < hitbox.left ||
carshb.left > hitbox.right ||
carshb.bottom < hitbox.top ||
carshb.top > hitbox.bottom)
if (overlap) {
info("CarManager:car0", "Wall collision at X " + document.getElementById("car0").style.left + ", Y " + document.getElementById("car0").style.top);
if (location.search === "?sp") {
scenar("wall1", "happy");
}
Sound.crash()
document.getElementById("car0").style.left = car0startx + "px";
document.getElementById("car0").style.top = car0starty + "px";
require('electron').ipcRenderer.send('addstats', { catalog: "ingame", key: "walls", add: 1 });
Array.from(document.getElementById('oil').children).forEach((item) => {
spreadOil(item);
})
document.getElementById("car0").style.transform = "rotate(0deg)";
car0cspeed = 0;
}
})
Array.from(document.getElementById('oil').children).forEach((item) => {
carshb = document.getElementById("car0").getBoundingClientRect();
hitbox = item.getBoundingClientRect();
var overlap = !(carshb.right < hitbox.left ||
carshb.left > hitbox.right ||
carshb.bottom < hitbox.top ||
carshb.top > hitbox.bottom)
if (overlap) {
car0cspeed = 7;
}
})
carshb = document.getElementById("car0").getBoundingClientRect();
hitbox = document.getElementById("arrival").getBoundingClientRect();
var overlap = !(carshb.right < hitbox.left ||
carshb.left > hitbox.right ||
carshb.bottom < hitbox.top ||
carshb.top > hitbox.bottom)
if (overlap && started) {
started = false;
if ((document.getElementById('laps-car0').innerText.split("/")[0] - 1 + 1) < 4) {
info("CarManager:car0", "New lap");
Array.from(document.getElementById('oil').children).forEach((item) => {
spreadOil(item);
})
if ((document.getElementById('laps-car0').innerText.split("/")[0] - 1 + 1) < 3) {
Sound.pass()
} else {
Sound.last()
}
require('electron').ipcRenderer.send('addstats', { catalog: "ingame", key: "laps", add: 1 });
document.getElementById('laps-car0').innerText = (document.getElementById('laps-car0').innerText.split("/")[0] - 1 + 2).toString();
if (location.search === "?sp") {
if ((document.getElementById('laps-car0').innerText.split("/")[0] - 1 + 1) > (document.getElementById('laps-car1').innerText.split("/")[0] - 1 + 1)) {
scenar("ahead1", "angry");
} else {
scenar("ahead2", "happy");
}
}
} else {
info("CarManager:car0", "Car won the game");
require('electron').ipcRenderer.send('addstats', { catalog: "results", key: "wins", add: 1 });
if (location.search === "?sp") {
scenar("won1", "sad");
}
try { document.getElementById('music').src = "about:blank"; } catch (e) { console.error(e); }
Sound.win();
keysEnabled = false;
car0cspeed = 0;
car0speed = 0;
document.getElementById('laps-car0').innerText = (document.getElementById('laps-car0').innerText.split("/")[0] - 1 + 2).toString();
$("#box").fadeOut(500);
setTimeout(() => {
if (online) {
clientWriter(JSON.stringify({
_type: "ipc",
action: "progressLose",
message: null
}) + "|")
}
if (location.search === "?sp" || online) {
location.href = "win.html?sp#car0";
} else {
location.href = "win.html#car0";
}
}, 3500)
}
document.getElementById("car0").style.left = car0startx + "px";
document.getElementById("car0").style.top = car0starty + "px";
document.getElementById("car0").style.transform = "rotate(0deg)";
Array.from(document.getElementById('oil').children).forEach((item) => {
spreadOil(item);
})
car0cspeed = 0;
setTimeout(() => {
started = true;
}, 150)
}
carshb = document.getElementById("car0").getBoundingClientRect();
hitbox = document.getElementById("car1").getBoundingClientRect();
var overlap = !(carshb.right < hitbox.left ||
carshb.left > hitbox.right ||
carshb.bottom < hitbox.top ||
carshb.top > hitbox.bottom)
if (overlap) {
if (location.search === "?sp") {
scenar("wall1", "happy");
}
Sound.crash();
require('electron').ipcRenderer.send('addstats', { catalog: "ingame", key: "walls", add: 1 });
document.getElementById("car0").style.left = car0startx + "px";
document.getElementById("car0").style.top = car0starty + "px";
Array.from(document.getElementById('oil').children).forEach((item) => {
spreadOil(item);
})
document.getElementById("car0").style.transform = "rotate(0deg)";
car0cspeed = 0;
}
}
// General Movements
setInterval(() => {
if (!paused) {
if (car0cspeed > 0) {
car0cspeed = car0cspeed - 0.1;
}
switch (document.getElementById("car0").style.transform) {
case "rotate(0deg)":
document.getElementById("car0").style.left = ((document.getElementById("car0").style.left.split("p")[0] - 1) + (1 + car0cspeed)) + "px";
break;
case "rotate(180deg)":
document.getElementById("car0").style.left = ((document.getElementById("car0").style.left.split("p")[0] - 1) - (1 + car0cspeed)) + "px";
break;
case "rotate(90deg)":
document.getElementById("car0").style.top = ((document.getElementById("car0").style.top.split("p")[0] - 1) + (1 + car0cspeed)) + "px";
break;
case "rotate(-90deg)":
document.getElementById("car0").style.top = ((document.getElementById("car0").style.top.split("p")[0] - 1) - (1 + car0cspeed)) + "px";
break;
}
if (document.getElementById("car0").style.left.split("p")[0] - 1 + 1 > (window.innerWidth - 30)) {
warn("CarManager:car0", "Colliding with screen border");
document.getElementById("car0").style.left = (window.innerWidth - 30) + "px";
}
if (document.getElementById("car0").style.top.split("p")[0] - 1 + 1 > (window.innerHeight - 30)) {
warn("CarManager:car0", "Colliding with screen border");
document.getElementById("car0").style.top = (window.innerHeight - 30) + "px";
}
if (document.getElementById("car0").style.top.split("p")[0] - 1 + 1 < 30) {
warn("CarManager:car0", "Colliding with screen border");
document.getElementById("car0").style.top = "30px";
}
if (document.getElementById("car0").style.left.split("p")[0] - 1 + 1 < 30) {
warn("CarManager:car0", "Colliding with screen border");
document.getElementById("car0").style.left = "30px";
}
if (car0cspeed > -0.1 && car0cspeed < 0) {
car0cspeed = 0;
}
car0collision();
}
}, 200)
})
|