diff options
author | Minteck <nekostarfan@gmail.com> | 2021-06-05 19:27:48 +0200 |
---|---|---|
committer | Minteck <nekostarfan@gmail.com> | 2021-06-05 19:27:48 +0200 |
commit | 8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6 (patch) | |
tree | 7096b67b189c0220826123c7d5b121752545d140 /race/cars/car1.js | |
download | kartik-client-8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6.tar.gz kartik-client-8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6.tar.bz2 kartik-client-8cf5cefe6e91a5a1ed6eeaae4d94760d84c304a6.zip |
Presque sortie du jeu
Diffstat (limited to 'race/cars/car1.js')
-rw-r--r-- | race/cars/car1.js | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/race/cars/car1.js b/race/cars/car1.js new file mode 100644 index 0000000..750cbb3 --- /dev/null +++ b/race/cars/car1.js @@ -0,0 +1,224 @@ +startHooks.push(() => { + car1speed = 16; + car1cspeed = 0; + if (online && role === "guest") { + car1startx = 428; + car1starty = 42.9; + } else { + car1startx = 388.9; + car1starty = 79.4; + } + if (online) { + car1collisionon = false; + } else { + car1collisionon = true; + } + car1enableOOBChecker = false; + +// Collision Manager + function car1collision() { + 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 (!car1collisionon) { return; } + + walls = Array.from(document.getElementsByClassName("wall")); + + walls.forEach((wall) => { + carshb = document.getElementById("car1").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:car1", "Wall collision at X " + document.getElementById("car1").style.left + ", Y " + document.getElementById("car1").style.top); + if (location.search === "?sp") { + scenar("wall2", "angry"); + } + Sound.crash() + document.getElementById("car1").style.left = car1startx + "px"; + document.getElementById("car1").style.top = car1starty + "px"; + Array.from(document.getElementById('oil').children).forEach((item) => { + spreadOil(item); + }) + document.getElementById("car1").style.transform = "rotate(0deg)"; + car1cspeed = 0; + } + }) + + Array.from(document.getElementById('oil').children).forEach((item) => { + carshb = document.getElementById("car1").getBoundingClientRect(); + hitbox = item.getBoundingClientRect(); + + var overlap = !(carshb.right < hitbox.left || + carshb.left > hitbox.right || + carshb.bottom < hitbox.top || + carshb.top > hitbox.bottom) + + if (overlap) { + car1cspeed = 7; + } + }) + + carshb = document.getElementById("car1").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-car1').innerText.split("/")[0] - 1 + 1) < 4) { + info("CarManager:car1", "New lap"); + Array.from(document.getElementById('oil').children).forEach((item) => { + spreadOil(item); + }) + if ((document.getElementById('laps-car1').innerText.split("/")[0] - 1 + 1) < 3) { + Sound.pass() + } else { + Sound.last() + } + document.getElementById('laps-car1').innerText = (document.getElementById('laps-car1').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:car1", "Car won the game"); + if (location.search === "?sp") { + scenar("won2", "happy"); + } + try { document.getElementById('music').src = "about:blank"; } catch (e) { console.error(e); } + Sound.win(); + keysEnabled = false; + car1cspeed = 0; + car1speed = 0; + document.getElementById('laps-car1').innerText = (document.getElementById('laps-car1').innerText.split("/")[0] - 1 + 2).toString(); + $("#box").fadeOut(500); + setTimeout(() => { + setTimeout(() => { + if (location.search === "?sp" || (online && role === "guest")) { + if (online) {} else { + location.href = "win.html?sp#car1"; + } + } else { + location.href = "win.html#car1"; + } + }, 3500) + }, 3000) + } + document.getElementById("car1").style.left = car1startx + "px"; + document.getElementById("car1").style.top = car1starty + "px"; + Array.from(document.getElementById('oil').children).forEach((item) => { + spreadOil(item); + }) + document.getElementById("car1").style.transform = "rotate(0deg)"; + Array.from(document.getElementById('oil').children).forEach((item) => { + spreadOil(item); + }) + car1cspeed = 0; + setTimeout(() => { + started = true; + }, 150) + } + + carshb = document.getElementById("car1").getBoundingClientRect(); + hitbox = document.getElementById("car0").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("wall2", "angry"); + } + Sound.crash(); + document.getElementById("car1").style.left = car1startx + "px"; + document.getElementById("car1").style.top = car1starty + "px"; + document.getElementById("car1").style.transform = "rotate(0deg)"; + Array.from(document.getElementById('oil').children).forEach((item) => { + spreadOil(item); + }) + car1cspeed = 0; + } + } + +// General Movements + setInterval(() => { + if (!paused) { + if (car1cspeed > 0) { + car1cspeed = car1cspeed - 0.1; + } + switch (document.getElementById("car1").style.transform) { + case "rotate(0deg)": + document.getElementById("car1").style.left = ((document.getElementById("car1").style.left.split("p")[0] - 1) + (1 + car1cspeed)) + "px"; + break; + case "rotate(180deg)": + document.getElementById("car1").style.left = ((document.getElementById("car1").style.left.split("p")[0] - 1) - (1 + car1cspeed)) + "px"; + break; + case "rotate(90deg)": + document.getElementById("car1").style.top = ((document.getElementById("car1").style.top.split("p")[0] - 1) + (1 + car1cspeed)) + "px"; + break; + case "rotate(-90deg)": + document.getElementById("car1").style.top = ((document.getElementById("car1").style.top.split("p")[0] - 1) - (1 + car1cspeed)) + "px"; + break; + } + if (document.getElementById("car1").style.left.split("p")[0] - 1 + 1 > (window.innerWidth - 30)) { + warn("CarManager:car1", "Colliding with screen border"); + if (car1enableOOBChecker) { + document.getElementById("car1").style.left = (window.innerWidth - 30) + "px"; + } + } + if (document.getElementById("car1").style.top.split("p")[0] - 1 + 1 > (window.innerHeight - 30)) { + warn("CarManager:car1", "Colliding with screen border"); + if (car1enableOOBChecker) { + document.getElementById("car1").style.top = (window.innerHeight - 30) + "px"; + } + } + if (document.getElementById("car1").style.top.split("p")[0] - 1 + 1 < 30) { + warn("CarManager:car1", "Colliding with screen border"); + if (car1enableOOBChecker) { + document.getElementById("car1").style.top = "30px"; + } + } + if (document.getElementById("car1").style.left.split("p")[0] - 1 + 1 < 30) { + warn("CarManager:car1", "Colliding with screen border"); + if (car1enableOOBChecker) { + document.getElementById("car1").style.left = "30px"; + } + } + if (car1cspeed > -0.1 && car1cspeed < 0) { + car1cspeed = 0; + } + car1collision(); + } + }, 200) + +})
\ No newline at end of file |