From 0bd45cb2cae3af05adaad3f38d129bb67c3e0ec0 Mon Sep 17 00:00:00 2001 From: Minteck Date: Wed, 18 May 2022 18:50:12 +0200 Subject: Add Kartik --- kartik/race/_archived/furry.html | 115 ++++++++++ kartik/race/_archived/furry.png | Bin 0 -> 29980 bytes kartik/race/_archived/triangle.html | 127 +++++++++++ kartik/race/_archived/triangle.png | Bin 0 -> 43576 bytes kartik/race/cars/car0.js | 216 +++++++++++++++++++ kartik/race/cars/car1.js | 239 +++++++++++++++++++++ kartik/race/cars/car1ai.js | 160 ++++++++++++++ kartik/race/cars/keymap.js | 174 +++++++++++++++ kartik/race/circuits/main.html | 115 ++++++++++ kartik/race/circuits/main.png | Bin 0 -> 51835 bytes kartik/race/circuits/snowy.html | 115 ++++++++++ kartik/race/circuits/snowy.png | Bin 0 -> 36850 bytes kartik/race/circuits/water.html | 133 ++++++++++++ kartik/race/circuits/water.png | Bin 0 -> 42954 bytes kartik/race/models/alpspin_by_redman_blue.png | Bin 0 -> 8734 bytes kartik/race/models/alpspin_by_redman_green.png | Bin 0 -> 9912 bytes kartik/race/models/alpspin_by_redman_orange.png | Bin 0 -> 9946 bytes kartik/race/models/alpspin_by_redman_red.png | Bin 0 -> 9866 bytes kartik/race/models/alpspin_by_redman_turquoise.png | Bin 0 -> 10062 bytes kartik/race/models/alpspin_by_redman_violet.png | Bin 0 -> 10062 bytes kartik/race/models/alpspin_by_redman_yellow.png | Bin 0 -> 9976 bytes kartik/race/models/argenquirie_by_redman.png | Bin 0 -> 29978 bytes kartik/race/models/argenquiriedx_by_redman.png | Bin 0 -> 28862 bytes kartik/race/models/base_by_minteck_blue.png | Bin 0 -> 20410 bytes kartik/race/models/base_by_minteck_green.png | Bin 0 -> 20670 bytes kartik/race/models/base_by_minteck_orange.png | Bin 0 -> 20605 bytes kartik/race/models/base_by_minteck_red.png | Bin 0 -> 20647 bytes kartik/race/models/base_by_minteck_turquoise.png | Bin 0 -> 20736 bytes kartik/race/models/base_by_minteck_violet.png | Bin 0 -> 20457 bytes kartik/race/models/base_by_minteck_yellow.png | Bin 0 -> 20945 bytes kartik/race/models/pride_month_2021.png | Bin 0 -> 56178 bytes kartik/race/models/spagetti11_by_redman.png | Bin 0 -> 53823 bytes kartik/race/models/spagetti11_by_redman_blue.png | Bin 0 -> 57439 bytes kartik/race/models/spagetti11_by_redman_green.png | Bin 0 -> 57720 bytes kartik/race/models/spagetti11_by_redman_orange.png | Bin 0 -> 57399 bytes .../race/models/spagetti11_by_redman_turquoise.png | Bin 0 -> 58713 bytes kartik/race/models/spagetti11_by_redman_violet.png | Bin 0 -> 57717 bytes kartik/race/models/spagetti11_by_redman_yellow.png | Bin 0 -> 57958 bytes kartik/race/oil.png | Bin 0 -> 55418 bytes kartik/race/pause.js | 82 +++++++ 40 files changed, 1476 insertions(+) create mode 100755 kartik/race/_archived/furry.html create mode 100755 kartik/race/_archived/furry.png create mode 100755 kartik/race/_archived/triangle.html create mode 100755 kartik/race/_archived/triangle.png create mode 100755 kartik/race/cars/car0.js create mode 100755 kartik/race/cars/car1.js create mode 100755 kartik/race/cars/car1ai.js create mode 100755 kartik/race/cars/keymap.js create mode 100755 kartik/race/circuits/main.html create mode 100755 kartik/race/circuits/main.png create mode 100755 kartik/race/circuits/snowy.html create mode 100755 kartik/race/circuits/snowy.png create mode 100755 kartik/race/circuits/water.html create mode 100755 kartik/race/circuits/water.png create mode 100755 kartik/race/models/alpspin_by_redman_blue.png create mode 100755 kartik/race/models/alpspin_by_redman_green.png create mode 100755 kartik/race/models/alpspin_by_redman_orange.png create mode 100755 kartik/race/models/alpspin_by_redman_red.png create mode 100755 kartik/race/models/alpspin_by_redman_turquoise.png create mode 100755 kartik/race/models/alpspin_by_redman_violet.png create mode 100755 kartik/race/models/alpspin_by_redman_yellow.png create mode 100755 kartik/race/models/argenquirie_by_redman.png create mode 100755 kartik/race/models/argenquiriedx_by_redman.png create mode 100755 kartik/race/models/base_by_minteck_blue.png create mode 100755 kartik/race/models/base_by_minteck_green.png create mode 100755 kartik/race/models/base_by_minteck_orange.png create mode 100755 kartik/race/models/base_by_minteck_red.png create mode 100755 kartik/race/models/base_by_minteck_turquoise.png create mode 100755 kartik/race/models/base_by_minteck_violet.png create mode 100755 kartik/race/models/base_by_minteck_yellow.png create mode 100755 kartik/race/models/pride_month_2021.png create mode 100755 kartik/race/models/spagetti11_by_redman.png create mode 100755 kartik/race/models/spagetti11_by_redman_blue.png create mode 100755 kartik/race/models/spagetti11_by_redman_green.png create mode 100755 kartik/race/models/spagetti11_by_redman_orange.png create mode 100755 kartik/race/models/spagetti11_by_redman_turquoise.png create mode 100755 kartik/race/models/spagetti11_by_redman_violet.png create mode 100755 kartik/race/models/spagetti11_by_redman_yellow.png create mode 100755 kartik/race/oil.png create mode 100755 kartik/race/pause.js (limited to 'kartik/race') diff --git a/kartik/race/_archived/furry.html b/kartik/race/_archived/furry.html new file mode 100755 index 0000000..1e4c8d5 --- /dev/null +++ b/kartik/race/_archived/furry.html @@ -0,0 +1,115 @@ + + + + + { + "name": { + "fr": "Les petites pattes", + "en": "The Little Paws" + }, + "author": "Minteck" + } + + + +
+
+ + +
+ + + + + +
+ + +
+ + + +
+ + +
+ + +
diff --git a/kartik/race/_archived/furry.png b/kartik/race/_archived/furry.png new file mode 100755 index 0000000..0e2dc77 Binary files /dev/null and b/kartik/race/_archived/furry.png differ diff --git a/kartik/race/_archived/triangle.html b/kartik/race/_archived/triangle.html new file mode 100755 index 0000000..59fe219 --- /dev/null +++ b/kartik/race/_archived/triangle.html @@ -0,0 +1,127 @@ + + + + + { + "name": { + "fr": "Le triangle des Bermudes", + "en": "The Bermuda Triangle" + }, + "author": "Minteck" + } + + + +
+
+ + +
+ + + + + +
+ + +
+ + + +
+ + +
+ + +
\ No newline at end of file diff --git a/kartik/race/_archived/triangle.png b/kartik/race/_archived/triangle.png new file mode 100755 index 0000000..8532bf5 Binary files /dev/null and b/kartik/race/_archived/triangle.png differ diff --git a/kartik/race/cars/car0.js b/kartik/race/cars/car0.js new file mode 100755 index 0000000..c3cf2cc --- /dev/null +++ b/kartik/race/cars/car0.js @@ -0,0 +1,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"; + // { 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() + } + // { 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"); + // { catalog: "results", key: "wins", add: 1 }); + if (location.search === "?sp") { + scenar("won1", "sad"); + } + + 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(); + // { 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) + +}) \ No newline at end of file diff --git a/kartik/race/cars/car1.js b/kartik/race/cars/car1.js new file mode 100755 index 0000000..4d31132 --- /dev/null +++ b/kartik/race/cars/car1.js @@ -0,0 +1,239 @@ +startHooks.push(() => { + car1speed = 16; + car1cspeed = 0; + if (online && role === "guest") { + car1startx = 428; + car1starty = 42.9; + } else { + car1startx = 388.9; + car1starty = 79.4; + } + car1collisionon = !online; + car1enableOOBChecker = false; + +// Collision Manager + function car1collision() { + if (!keysEnabled) { return; } + + if (started) { + carshb = document.getElementById("car1").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 && car1collisionon) { + info("CarManager:car0", "Reversal prevented at X " + document.getElementById("car1").style.left + ", Y " + document.getElementById("car1").style.top); + car1collisionon = false; + document.getElementById("car1").style.left = car1startx + "px"; + document.getElementById("car1").style.top = car1starty + "px"; + document.getElementById("car1").style.transform = "rotate(0deg)"; + car1cspeed = 0; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + } + + 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"); + } + car1collisionon = false; + 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; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + }) + + 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 = 5; + } + }) + + 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"); + } + car1collisionon = false; + 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; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + } + +// 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) + + setInterval(() => { + if (!car1collisionon) { return; } + + 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"); + } + // { catalog: "results", key: "loses", add: 1 }); + + 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) + } + car1collisionon = false; + 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; + setTimeout(() => { + car1collisionon = true; + }, 500) + setTimeout(() => { + started = true; + }, 150) + } + }, 20) + +}) \ No newline at end of file diff --git a/kartik/race/cars/car1ai.js b/kartik/race/cars/car1ai.js new file mode 100755 index 0000000..87e5920 --- /dev/null +++ b/kartik/race/cars/car1ai.js @@ -0,0 +1,160 @@ +aiorient = "right"; +elem = 10; + +function enableAI() { + car1enableOOBChecker = false; + setInterval(() => { + if (aiorient === "top") { + ai_up(); + } else if (aiorient === "right") { + ai_right(); + } else if (aiorient === "bottom") { + ai_down(); + } else if (aiorient === "left") { + ai_left(); + } + }, 100) + setInterval(() => { + carshb = document.getElementById("aibox-near").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) { + aiorient = "right"; + } + + if (elem < 10) { elem++; } + if (elem !== 10) { return; } + + walls = Array.from(document.getElementsByClassName("wall")); + + walls.forEach((wall) => { + carshb = document.getElementById("aibox-far").getBoundingClientRect(); + hitbox = wall.getBoundingClientRect(); + + var overlap = !(carshb.right < hitbox.left || + carshb.left > hitbox.right || + carshb.bottom < hitbox.top || + carshb.top > hitbox.bottom) + + carshb2 = document.getElementById("aibox-near").getBoundingClientRect(); + + var overlap2 = !(carshb2.right < hitbox.left || + carshb2.left > hitbox.right || + carshb2.bottom < hitbox.top || + carshb2.top > hitbox.bottom) + + if (overlap2) { + car1speed = 8; + } else if (overlap) { + car1speed = 9; + } else { + car1speed = 16; + } + + carshb = document.getElementById("aibox-far").getBoundingClientRect(); + hitbox = wall.getBoundingClientRect(); + + var overlap = !(carshb.right < hitbox.left || + carshb.left > hitbox.right || + carshb.bottom < hitbox.top || + carshb.top > hitbox.bottom) + + if (overlap) { + if (aiorient === "top") { + aiorient = "right"; + elem = 0; + } else if (aiorient === "right") { + aiorient = "bottom"; + elem = 0; + } else if (aiorient === "bottom") { + aiorient = "left"; + elem = 0; + } else if (aiorient === "left") { + aiorient = "top"; + elem = 0; + } + } + + carshb = document.getElementById("aibox-near").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 (aiorient === "top") { + aiorient = "bottom"; + elem = 0; + } else if (aiorient === "right") { + aiorient = "left"; + elem = 0; + } else if (aiorient === "bottom") { + aiorient = "top"; + elem = 0; + } else if (aiorient === "left") { + aiorient = "right"; + elem = 0; + } + } + }) + }, 50) +} + +function ai_up() { + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(-90deg)") { + document.getElementById("car1").style.transform = "rotate(-90deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } +} + +function ai_down() { + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(90deg)") { + document.getElementById("car1").style.transform = "rotate(90deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } +} + +function ai_left() { + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(180deg)") { + document.getElementById("car1").style.transform = "rotate(180deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } +} + +function ai_right() { + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(0deg)") { + document.getElementById("car1").style.transform = "rotate(0deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } +} \ No newline at end of file diff --git a/kartik/race/cars/keymap.js b/kartik/race/cars/keymap.js new file mode 100755 index 0000000..80a3c41 --- /dev/null +++ b/kartik/race/cars/keymap.js @@ -0,0 +1,174 @@ +startHooks.push(() => { + $(document).keydown(function(e) { + if (online && role === null) { + if (e.keyCode === 27 || e.keyCode === 8) { // esc + window.parent.musicManager.fadeMusic(); + $("body").fadeOut(200); + setTimeout(() => { + location.href = "menu.html?back"; + }, 250) + } + } + if (keysEnabled) { + if (!paused) { + if (e.keyCode === 115) { // F4 + if (hitshow) { + hitshow = false; + document.getElementById("circuit").classList.remove("hitboxes"); + document.getElementById('hitboxes').innerText = lang.game.gpause.showhb; + info("GameWindow", "Hitboxes hidden"); + } else { + hitshow = true; + document.getElementById("circuit").classList.add("hitboxes"); + document.getElementById('hitboxes').innerText = lang.game.gpause.hidehb; + info("GameWindow", "Hitboxes shown"); + } + } + + // Car 0 + if (car0collisionon) { + if (e.keyCode === 90 || e.keyCode === 87 || ((location.search === "?sp" || location.search === "?online") && e.keyCode === 38)) { // Z + if (car0cspeed < car0speed) { + car0cspeed = car0cspeed + 0.2; + } + if (document.getElementById("car0").style.transform !== "rotate(-90deg)") { + // { catalog: "ingame", key: "turns", add: 1 }); + document.getElementById("car0").style.transform = "rotate(-90deg)"; + car0collisionon = false; + setTimeout(() => { + car0collisionon = true; + }, 500) + } + } + if (e.keyCode === 83 || ((location.search === "?sp" || location.search === "?online") && e.keyCode === 40)) { // S + if (car0cspeed < car0speed) { + car0cspeed = car0cspeed + 0.2; + } + if (document.getElementById("car0").style.transform !== "rotate(90deg)") { + // { catalog: "ingame", key: "turns", add: 1 }); + document.getElementById("car0").style.transform = "rotate(90deg)"; + car0collisionon = false; + setTimeout(() => { + car0collisionon = true; + }, 500) + } + } + if (e.keyCode === 81 || e.keyCode === 65 || ((location.search === "?sp" || location.search === "?online") && e.keyCode === 37)) { // Q + if (car0cspeed < car0speed) { + car0cspeed = car0cspeed + 0.2; + } + if (document.getElementById("car0").style.transform !== "rotate(180deg)") { + // { catalog: "ingame", key: "turns", add: 1 }); + document.getElementById("car0").style.transform = "rotate(180deg)"; + car0collisionon = false; + setTimeout(() => { + car0collisionon = true; + }, 500) + } + } + if (e.keyCode === 68 || ((location.search === "?sp" || location.search === "?online") && e.keyCode === 39)) { // D + if (car0cspeed < car0speed) { + car0cspeed = car0cspeed + 0.2; + } + if (document.getElementById("car0").style.transform !== "rotate(0deg)") { + // { catalog: "ingame", key: "turns", add: 1 }); + document.getElementById("car0").style.transform = "rotate(0deg)"; + car0collisionon = false; + setTimeout(() => { + car0collisionon = true; + }, 500) + } + } + } + + // Car 1 + if (car1collisionon) { + if (location.search !== "?sp" && location.search !== "?online") { + if (e.keyCode === 38) { // up + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(-90deg)") { + document.getElementById("car1").style.transform = "rotate(-90deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + } + if (e.keyCode === 40) { // down + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(90deg)") { + document.getElementById("car1").style.transform = "rotate(90deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + } + if (e.keyCode === 37) { // left + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(180deg)") { + document.getElementById("car1").style.transform = "rotate(180deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + } + if (e.keyCode === 39) { // right + if (car1cspeed < car1speed) { + car1cspeed = car1cspeed + 0.2; + } + if (document.getElementById("car1").style.transform !== "rotate(0deg)") { + document.getElementById("car1").style.transform = "rotate(0deg)"; + car1collisionon = false; + setTimeout(() => { + car1collisionon = true; + }, 500) + } + } + } + } + if (e.keyCode === 27 || e.keyCode === 8) { // esc + pause(true); + } + } else { + if (e.keyCode === 13 || e.keyCode === 88 || e.keyCode === 32 || e.keyCode === 16) { // enter + if ($(".services").is(":visible")) { + selectOption(); + } else { + $(".services").show(); + } + } + if (e.keyCode === 38 || e.keyCode === 90) { // up + Sound.menu(); + var selected = $(".selected"); + $(".services li").removeClass("selected"); + if (selected.prev().length === 0) { + selected.siblings().last().addClass("selected"); + } else { + selected.prev().addClass("selected"); + } + } + if (e.keyCode === 40 || e.keyCode === 83) { // down + Sound.menu(); + var selected = $(".selected"); + $(".services li").removeClass("selected"); + if (selected.next().length === 0) { + selected.siblings().first().addClass("selected"); + } else { + selected.next().addClass("selected"); + } + } + if (e.keyCode === 27 || e.keyCode === 8) { // esc + pause(false); + } + } + } + }); +}) \ No newline at end of file diff --git a/kartik/race/circuits/main.html b/kartik/race/circuits/main.html new file mode 100755 index 0000000..2420a83 --- /dev/null +++ b/kartik/race/circuits/main.html @@ -0,0 +1,115 @@ + + + + + { + "name": { + "fr": "Un simple carré", + "en": "A Simple Square" + }, + "author": "Minteck" + } + + + +
+
+ + +
+ + + + + +
+ + +
+ + + +
+ + +
+ + +
\ No newline at end of file diff --git a/kartik/race/circuits/main.png b/kartik/race/circuits/main.png new file mode 100755 index 0000000..0bf2c03 Binary files /dev/null and b/kartik/race/circuits/main.png differ diff --git a/kartik/race/circuits/snowy.html b/kartik/race/circuits/snowy.html new file mode 100755 index 0000000..8254582 --- /dev/null +++ b/kartik/race/circuits/snowy.html @@ -0,0 +1,115 @@ + + + + + { + "name": { + "fr": "La montagne enneigée", + "en": "The Snowy Mountain" + }, + "author": "Minteck" + } + + + +
+
+ + +
+ + + + + +
+ + +
+ + + +
+ + +
+ + +
\ No newline at end of file diff --git a/kartik/race/circuits/snowy.png b/kartik/race/circuits/snowy.png new file mode 100755 index 0000000..31f28a9 Binary files /dev/null and b/kartik/race/circuits/snowy.png differ diff --git a/kartik/race/circuits/water.html b/kartik/race/circuits/water.html new file mode 100755 index 0000000..811010f --- /dev/null +++ b/kartik/race/circuits/water.html @@ -0,0 +1,133 @@ + + + + + { + "name": { + "fr": "Attention à l'eau", + "en": "Keep out the water" + }, + "author": "Minteck" + } + + + +
+
+ + +
+ + + + + +
+ + +
+ + + +
+ +
+
+ + +
\ No newline at end of file diff --git a/kartik/race/circuits/water.png b/kartik/race/circuits/water.png new file mode 100755 index 0000000..d065b1c Binary files /dev/null and b/kartik/race/circuits/water.png differ diff --git a/kartik/race/models/alpspin_by_redman_blue.png b/kartik/race/models/alpspin_by_redman_blue.png new file mode 100755 index 0000000..59bcd11 Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_blue.png differ diff --git a/kartik/race/models/alpspin_by_redman_green.png b/kartik/race/models/alpspin_by_redman_green.png new file mode 100755 index 0000000..3e4bfea Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_green.png differ diff --git a/kartik/race/models/alpspin_by_redman_orange.png b/kartik/race/models/alpspin_by_redman_orange.png new file mode 100755 index 0000000..9ec964a Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_orange.png differ diff --git a/kartik/race/models/alpspin_by_redman_red.png b/kartik/race/models/alpspin_by_redman_red.png new file mode 100755 index 0000000..2539a50 Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_red.png differ diff --git a/kartik/race/models/alpspin_by_redman_turquoise.png b/kartik/race/models/alpspin_by_redman_turquoise.png new file mode 100755 index 0000000..c2ecd6b Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_turquoise.png differ diff --git a/kartik/race/models/alpspin_by_redman_violet.png b/kartik/race/models/alpspin_by_redman_violet.png new file mode 100755 index 0000000..a617231 Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_violet.png differ diff --git a/kartik/race/models/alpspin_by_redman_yellow.png b/kartik/race/models/alpspin_by_redman_yellow.png new file mode 100755 index 0000000..fead3c9 Binary files /dev/null and b/kartik/race/models/alpspin_by_redman_yellow.png differ diff --git a/kartik/race/models/argenquirie_by_redman.png b/kartik/race/models/argenquirie_by_redman.png new file mode 100755 index 0000000..b3e0866 Binary files /dev/null and b/kartik/race/models/argenquirie_by_redman.png differ diff --git a/kartik/race/models/argenquiriedx_by_redman.png b/kartik/race/models/argenquiriedx_by_redman.png new file mode 100755 index 0000000..ea97f54 Binary files /dev/null and b/kartik/race/models/argenquiriedx_by_redman.png differ diff --git a/kartik/race/models/base_by_minteck_blue.png b/kartik/race/models/base_by_minteck_blue.png new file mode 100755 index 0000000..36d58b6 Binary files /dev/null and b/kartik/race/models/base_by_minteck_blue.png differ diff --git a/kartik/race/models/base_by_minteck_green.png b/kartik/race/models/base_by_minteck_green.png new file mode 100755 index 0000000..df387da Binary files /dev/null and b/kartik/race/models/base_by_minteck_green.png differ diff --git a/kartik/race/models/base_by_minteck_orange.png b/kartik/race/models/base_by_minteck_orange.png new file mode 100755 index 0000000..5dfb70b Binary files /dev/null and b/kartik/race/models/base_by_minteck_orange.png differ diff --git a/kartik/race/models/base_by_minteck_red.png b/kartik/race/models/base_by_minteck_red.png new file mode 100755 index 0000000..fa4db1a Binary files /dev/null and b/kartik/race/models/base_by_minteck_red.png differ diff --git a/kartik/race/models/base_by_minteck_turquoise.png b/kartik/race/models/base_by_minteck_turquoise.png new file mode 100755 index 0000000..0553739 Binary files /dev/null and b/kartik/race/models/base_by_minteck_turquoise.png differ diff --git a/kartik/race/models/base_by_minteck_violet.png b/kartik/race/models/base_by_minteck_violet.png new file mode 100755 index 0000000..2e541e0 Binary files /dev/null and b/kartik/race/models/base_by_minteck_violet.png differ diff --git a/kartik/race/models/base_by_minteck_yellow.png b/kartik/race/models/base_by_minteck_yellow.png new file mode 100755 index 0000000..25b9113 Binary files /dev/null and b/kartik/race/models/base_by_minteck_yellow.png differ diff --git a/kartik/race/models/pride_month_2021.png b/kartik/race/models/pride_month_2021.png new file mode 100755 index 0000000..97da379 Binary files /dev/null and b/kartik/race/models/pride_month_2021.png differ diff --git a/kartik/race/models/spagetti11_by_redman.png b/kartik/race/models/spagetti11_by_redman.png new file mode 100755 index 0000000..63707a5 Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman.png differ diff --git a/kartik/race/models/spagetti11_by_redman_blue.png b/kartik/race/models/spagetti11_by_redman_blue.png new file mode 100755 index 0000000..9a10a06 Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman_blue.png differ diff --git a/kartik/race/models/spagetti11_by_redman_green.png b/kartik/race/models/spagetti11_by_redman_green.png new file mode 100755 index 0000000..00767b7 Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman_green.png differ diff --git a/kartik/race/models/spagetti11_by_redman_orange.png b/kartik/race/models/spagetti11_by_redman_orange.png new file mode 100755 index 0000000..b600c96 Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman_orange.png differ diff --git a/kartik/race/models/spagetti11_by_redman_turquoise.png b/kartik/race/models/spagetti11_by_redman_turquoise.png new file mode 100755 index 0000000..37c5bac Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman_turquoise.png differ diff --git a/kartik/race/models/spagetti11_by_redman_violet.png b/kartik/race/models/spagetti11_by_redman_violet.png new file mode 100755 index 0000000..135b8cb Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman_violet.png differ diff --git a/kartik/race/models/spagetti11_by_redman_yellow.png b/kartik/race/models/spagetti11_by_redman_yellow.png new file mode 100755 index 0000000..e5fc81f Binary files /dev/null and b/kartik/race/models/spagetti11_by_redman_yellow.png differ diff --git a/kartik/race/oil.png b/kartik/race/oil.png new file mode 100755 index 0000000..cb23917 Binary files /dev/null and b/kartik/race/oil.png differ diff --git a/kartik/race/pause.js b/kartik/race/pause.js new file mode 100755 index 0000000..8cf46ea --- /dev/null +++ b/kartik/race/pause.js @@ -0,0 +1,82 @@ +global.quitting = false; + +startHooks.push(() => { + global.pause = (stat) => { + if (stat) { + warn("Suspend", "Game paused"); + Sound.pause(); + shouldMusicPlay = false; + window.parent.musicManager.fadeMusic(); + if (typeof e !== "undefined") { + if (e.currentTime < e.duration) { + e.pause(); + } + } + if (typeof b !== "undefined") { + b.pause(); + } + paused = true; + document.getElementById('box').classList.add('paused'); + $("#paused").show(); + } else { + warn("Suspend", "Game resumed"); + Sound.pause(); + shouldMusicPlay = true; + window.parent.musicManager.unfadeMusic(); + if (typeof me !== "undefined") { + if (me.currentTime < me.duration) { + me.play(); + } + } + if (typeof b !== "undefined") { + b.play(); + } + paused = false; + document.getElementById('box').classList.remove('paused'); + $("#paused").hide(); + } + } + + global.selectOption = () => { + item = document.querySelector(".selected a").id; + Sound.click(); + + switch (item) { + case 'continue': + pause(false); + break; + case 'hitboxes': + if (hitshow) { + hitshow = false; + document.getElementById("circuit").classList.remove("hitboxes"); + document.getElementById('hitboxes').innerText = lang.game.gpause.showhb; + info("GameWindow", "Hitboxes hidden"); + } else { + hitshow = true; + document.getElementById("circuit").classList.add("hitboxes"); + document.getElementById('hitboxes').innerText = lang.game.gpause.hidehb; + info("GameWindow", "Hitboxes shown"); + } + break; + case 'quit': + if (online) { + global.quitting = true; + clientWriter(JSON.stringify({ + _type: "ipc", + action: "abort", + message: null + }) + "|") + } + keysEnabled = false; + window.parent.musicManager.fadeMusic(); + $("#box").fadeOut(500); + $("#bg").fadeOut(500); + $("#paused").fadeOut(500); + setTimeout(() => { + info("GameWindow", "Switching control to MenuWindow"); + location.href = "menu.html?back"; + }, 1000) + break; + } + } +}) \ No newline at end of file -- cgit