UNPKG

inertialrush-game-test

Version:

This package enables the integration of the Inertial Rush game into any React application, making it easy to showcase the game.

406 lines (364 loc) 13.2 kB
// Generated by CoffeeScript 2.7.0 (function () { const localStorageKeySettings = "settings"; function $(selector) { return document.querySelector(selector); } function $$(selector) { return document.querySelectorAll(selector); } function init(controlType, quality, hud, music, sounds, idShipModel, botLevel, gameMode, name) { const hexGL = new bkcore.hexgl.HexGL({ document: document, width: window.innerWidth, height: window.innerHeight, container: $("#main"), overlay: $("#overlay"), gameover: $("#step-5"), quality: quality, difficulty: 0, hud: hud, music: music, sounds: sounds, controlType: controlType, idShipModel: idShipModel, godmode: 0, track: "Cityscape", botLevel: botLevel, gameMode: gameMode, player: name, }); window.hexGL = hexGL; return hexGL.load({ onLoad: function () { console.log("LOADED."); hexGL.init(); $("#step-3").style.display = "none"; $("#step-4").style.display = "block"; return hexGL.start(); }, onError: function (error) { return console.error(`Error loading ${error}.`); }, onProgress: function (p, t, n) { return console.log("LOADED " + t + " : " + n + " ( " + p.loaded + " / " + p.total + " )."); }, }); } /*const URLParameter = bkcore.Utils.getURLParameter;*/ const settings = localStorageGetItem(); let name = settings?.name; const defaultControls = bkcore.Utils.isTouchDevice() ? 1 : 0; let defaultSettings = [ [ "controlType", ["Keyboard", "Touch" /*, 'LEAP MOTION CONTROLLER', 'GAMEPAD'*/], defaultControls, "Controls", ], ["quality", ["Low", "Middle", "High", "Very High"], 3, "Quality"], ["hud", ["Off", "On"], 1, "HUD"], ["music", ["Off", "On"], 1, "Music"], [ "sounds", ["Off", "On"], 1, "Sounds", ] /*, ['bot', ['EASY', 'MEDIUM', "HARD"], 2, 'BOT LEVEL: '], ['mode', ['AGAINST BOTS', 'SCORE RESULTS'], 0, 'GAME MODE: ']*/, ]; let botSettings = ["bot", ["Easy", "Medium", "Hard"], 2, "Choose bot level"]; let gameSettings = [ "mode", ["Score Results", "Play against bots" /*, "Are weapons possible?"*/], 1, "Choose race type", ]; let shipSettings = [ "ship", [ "Basic Orange", "Basic Blue", "Black Hawk", "Dropship", "Fighter GR2", "Tiger Fighter", "SF Fighter Multirole", ], 0, "Choose space ship", ]; if (settings.defaultSettings !== undefined) defaultSettings = settings.defaultSettings; if (settings.botSettings !== undefined) botSettings = settings.botSettings; if (settings.gameSettings !== undefined) gameSettings = settings.gameSettings; if (settings.shipSettings !== undefined) shipSettings = settings.shipSettings; let newSettings = []; function checkMode() { if (gameSettings[2] === 1) { $("#s-bot").closest(".race_settings__block").style.display = "block"; $$(".settings-block .settings-type")[2].style.display = "block"; } else { $("#s-bot").closest(".race_settings__block").style.display = "none"; $$(".settings-block .settings-type")[2].style.display = "none"; } } function checkName() { if (name) { sendMessage(bkcore.hexgl.connectionToSocket, "savedName", name); bkcore.hexgl.connectionToSocket.on("savedNameFail", () => { $(".promo__btns__first_row").style.display = "flex"; $("#start").style.display = "none"; }); bkcore.hexgl.connectionToSocket.on("savedNameOk", () => { $(".promo__btns__first_row").style.display = "none"; $("#start").style.display = "flex"; $("#change_name__button").style.display = "flex"; }); } } function updateSettings() { checkMode(); $$(".settings-block .settings-type .type")[0].textContent = gameSettings[1][gameSettings[2]]; $$(".settings-block .settings-type .type")[1].textContent = shipSettings[1][shipSettings[2]]; $$(".settings-block .settings-type .type")[2].textContent = botSettings[1][botSettings[2]]; $(".p2").src = `./css/spaceShip/${shipSettings[2] + 1}.png`; } function handleDefaultSettings(param) { /*let current; param[2] = (current = URLParameter(param[0])) != null ? current : param[2];*/ selector = $("#s-" + param[0]); selector.closest(".modal__main_wrapper").querySelector(".modal__main_title").textContent = param[3]; return selector.querySelectorAll("label").forEach((el, i) => { el.querySelector(".checkbox__name").textContent = param[1][i]; el.querySelector("input").checked = param[2] === i; }); } function handleGameSettings(param) { /*let current; param[2] = (current = URLParameter(param[0])) != null ? current : param[2];*/ selector = $("#s-" + param[0]); selector.closest(".race_settings__block").querySelector(".race_settings_title").textContent = param[3]; return selector.querySelectorAll(".race_settings__type_block").forEach((el, i) => { el.querySelector(".race_type_title").textContent = param[1][i]; if (param[2] === i) el.classList.add("race_settings__type_block-active"); el.onclick = function () { removeActive(".race_settings__type_block", "race_settings__type_block-active"); el.classList.add("race_settings__type_block-active"); if (i === 1) { $("#s-bot").closest(".race_settings__block").style.display = "block"; } else $("#s-bot").closest(".race_settings__block").style.display = "none"; }; }); } function handleBotSettings(param) { /*let current; param[2] = (current = URLParameter(param[0])) != null ? current : param[2];*/ selector = $("#s-" + param[0]); selector.closest(".race_settings__block").querySelector(".race_settings_title").textContent = param[3]; return selector.querySelectorAll(".race_level").forEach((el, i) => { el.textContent = param[1][i]; if (param[2] === i) el.classList.add("active"); el.onclick = function () { removeActive(".race_level", "active"); el.classList.add("active"); }; }); } function handleShipSettings(param) { removeActive(".swiper-slide", "swiper-slide_active"); [...$("#s-" + shipSettings[0]).querySelectorAll(".swiper-slide")][param[2]].classList.add( "swiper-slide_active" ); } updateSettings(); checkName(); $("#step-2").onclick = function () { $("#step-2").style.display = "none"; $("#step-3").style.display = "block"; return init( newSettings[0][2], newSettings[1][2], newSettings[2][2], newSettings[3][2], newSettings[4][2], shipSettings[2], botSettings[2], gameSettings[2], name ); }; $("#back").onclick = function () { return window.location.reload(); }; $("#play-again").onclick = function () { localStorageSetItem({ ...settings, isPlay: true }); return window.location.reload(); }; $("#settings").onclick = function () { $(".modal").style.display = "block"; const currentSettings = newSettings.length ? newSettings : defaultSettings; for (let i = 0; i < currentSettings.length; i++) { handleDefaultSettings(currentSettings[i]); } }; $("#name__button").onclick = function () { name = $("#name__input input").value; sendMessage(bkcore.hexgl.connectionToSocket, "name", name); bkcore.hexgl.connectionToSocket.on("nameFail", () => { alert("This name already exist! Choose another name!"); }); bkcore.hexgl.connectionToSocket.on("nameOk", () => { localStorageSetItem({ ...settings, name }); $(".promo__btns__first_row").style.display = "none"; $("#start").style.display = "flex"; $("#change_name__button").style.display = "flex"; }); }; $("#change_name__button").onclick = function () { $("#name__input input").value = name; $(".promo__btns__first_row").style.display = "flex"; $("#change_name__button").style.display = "none"; $("#start").style.display = "none"; $("#change_name__button__cancel").style.display = "flex"; }; $("#change_name__button__cancel").onclick = function () { $(".promo__btns__first_row").style.display = "none"; $("#change_name__button").style.display = "flex"; $("#start").style.display = "flex"; $("#change_name__button__cancel").style.display = "none"; }; $("#save").onclick = function () { $(".modal").style.display = "none"; newSettings = defaultSettings.map((settingsEl) => { neEl = [...settingsEl]; neEl[2] = [...$("#s-" + settingsEl[0]).querySelectorAll("input")].findIndex( (selectorEl) => selectorEl.checked ); return neEl; }); localStorageSetItem({ ...settings, defaultSettings: newSettings }); }; $(".modal__close").onclick = function () { $(".modal").style.display = "none"; }; $("#change").onclick = function () { $("#step-1").style.display = "none"; $("#step-0").style.display = "block"; handleGameSettings(gameSettings); handleBotSettings(botSettings); handleShipSettings(shipSettings); }; $("#save-mode").onclick = function () { $("#step-0").style.display = "none"; $("#step-1").style.display = "block"; gameSettings[2] = [ ...$("#s-" + gameSettings[0]).querySelectorAll(".race_settings__type_block"), ].findIndex((el) => el.classList.contains("race_settings__type_block-active")); botSettings[2] = [...$("#s-" + botSettings[0]).querySelectorAll(".race_level")].findIndex( (el) => el.classList.contains("active") ); shipSettings[2] = [...$("#s-" + shipSettings[0]).querySelectorAll(".swiper-slide")].findIndex( (el) => el.classList.contains("swiper-slide_active") ); localStorageSetItem({ ...settings, gameSettings, botSettings, shipSettings }); updateSettings(); }; function hasWebGL() { var canvas, gl; gl = null; canvas = document.createElement("canvas"); try { gl = canvas.getContext("webgl"); } catch (error) {} if (gl == null) { try { gl = canvas.getContext("experimental-webgl"); } catch (error) {} } return gl != null; } if (!hasWebGL()) { const getWebGL = $("#start"); getWebGL.innerHTML = "WebGL is not supported!"; getWebGL.onclick = function () { return (window.location.href = "http://get.webgl.org/"); }; } else { $("#start").onclick = function () { if (!bkcore.hexgl.connectionToSocket.connected) { alert("No connection to server! Please reload page."); } else { $("#step-1").style.display = "none"; $("#step-2").style.display = "block"; newSettings.length ? newSettings : (newSettings = defaultSettings); return ($("#controls").style.backgroundImage = `url(css/help-${newSettings[0][2]}.png)`); } }; } let swiper = new Swiper(".mySwiper", { slidesPerView: "auto", spaceBetween: 20, navigation: { nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev", }, breakpoints: { 576: { spaceBetween: 30, }, }, }); const removeActive = (element, activeClass) => { $$(element).forEach((item) => { item.classList.remove(activeClass); }); }; if ($$(".swiper-slide_open")) { let opened = $$(".swiper-slide_open"); opened.forEach((item) => { item.onclick = () => { let idShipModel = item.getAttribute("aria-label").charAt(0); document.querySelector(".p2").src = `./css/spaceShip/${idShipModel}.png`; removeActive(".swiper-slide", "swiper-slide_active"); item.classList.add("swiper-slide_active"); }; }); } if (settings.isPlay) { localStorageSetItem({ ...settings, isPlay: false }); bkcore.hexgl.connectionToSocket.on("connect", () => { $("#step-3").style.display = "block"; newSettings.length ? newSettings : (newSettings = defaultSettings); init( newSettings[0][2], newSettings[1][2], newSettings[2][2], newSettings[3][2], newSettings[4][2], shipSettings[2], botSettings[2], gameSettings[2], name ); }); } else { $("#step-1").style.display = "block"; } function localStorageSetItem(value) { try { localStorage.setItem(localStorageKeySettings, JSON.stringify(value)); } catch (e) { alert(e); } } function localStorageGetItem() { try { return JSON.parse(localStorage.getItem(localStorageKeySettings) || "{}"); } catch (e) { alert(e); return {}; } } }).call(this);