function initAll() { darkMode(); setLang("fr"); dysFont(); } var mobile = false; var switchs = [], lineCount = [], logiques = [], lines = [], endLines = [], end, switchsInfo = [], switchsInfoCopy = [], lineRemove = []; var width = window.innerWidth - window.innerWidth / 100 * 30; var height = window.innerHeight / 2.5; var stage = new Konva.Stage({ container: 'setting_container', width: width, height: height, }); var layer = new Konva.Layer(); tutoCreateLayer(); function tutoCreateLayer() { isTuto = true; width = window.innerWidth - window.innerWidth / 100 * 30; height = window.innerHeight / 2.5; stage = new Konva.Stage({ container: 'setting_container', width: width, height: height, }); stage.add(layer); colonneTot = 1; numberPerColonne = [1]; var logiqueCount = 0; for (let i = 0; i < colonneTot; i++) { liveColonneNumber.push([]); } insertLogiqueColonne("logique1", "et", 0); calculNombreSwitch(); switchCreator(numberOfSwitch); createAllLinkSwitch(); initAllSwitch(); createEnd(); initEnd(); } width = (window.innerWidth - window.innerWidth / 100 * 10); height = window.innerHeight / 1.5; function resetAllTabs(save) { if (!save) { logiques = []; numberPerColonne = []; liveColonneNumber = []; timeEnd = 5; numberOfSwitch = 0; colonneTot = 0; } switchs = [], lineCount = [], lines = [], endLines = [], end, switchsInfo = [], lineRemove = [], switchsInfoCopy = []; layer.destroyChildren(); stage.draw(); } function gameOne() { document.querySelector("#play_container").style.maxHeight = window.innerHeight / 1.5 + "px"; createGameOne(niveauActuel); click = 0; while (checkIfEnd() || isLineCollapsing()) { resetAllTabs(false); createGameOne(niveauActuel); } //console.log(stage); //gameData = new GameData(height,width,2,10,"mode1",false,"play_container"); //gameData.createGame(); //checkAllSortieLogique(); } function createGameOne(niveau) { windowWidth = window.innerWidth; windowHeight = window.innerHeight; var numberColonne1 = 2; var numberColonne2 = 1; var isEtNonAllowed = false; var isOuNonAllowed = false; var isNotAllowed = false; var isOuAllowed = false; double = false; var firstTime = []; switch (niveauActuel) { case 1: firstTime.push("et"); break; case 2: numberColonne1 = 2; numberColonne2 = 0; timeEnd = 15; break; case 3: numberColonne1 = 2; numberColonne2 = 1; timeEnd = 15; break; case 4: numberColonne1 = 3; numberColonne2 = 1; timeEnd = 20; break; //Fin premiere serie case 5: firstTime.push("inv"); isNotAllowed = true; timeEnd = 20; break; case 6: numberColonne1 = 2; numberColonne2 = 0; isNotAllowed = true; timeEnd = 20; break; case 7: numberColonne1 = 2; numberColonne2 = 1; isNotAllowed = true; timeEnd = 20; break; case 8: numberColonne1 = 3; numberColonne2 = 1; isNotAllowed = true; timeEnd = 20; break; case 9: numberColonne1 = 4; numberColonne2 = 1; isNotAllowed = true; double = true; timeEnd = 20; break; case 10: firstTime.push("ou"); break; case 11: isNotAllowed = true; isOuAllowed = true; numberColonne1 = 3; numberColonne2 = 1; timeEnd = 20; break; case 12: case 13: case 14: isNotAllowed = true; isOuAllowed = true; numberColonne1 = 3; numberColonne2 = 1; timeEnd = 20; break; default: isEtNonAllowed = true; isOuNonAllowed = true; timeEnd = 20; numberColonne1 = 4; break; } isTuto = false; createStage("play_container"); stage.add(layer); colonneTot = 2; numberPerColonne = [numberColonne1, numberColonne2]; var logiqueCount = 0; if (firstTime.length > 0) { numberColonne1 = 1; numberColonne2 = 0; numberPerColonne = [numberColonne1, numberColonne2]; liveColonneNumber.push([]); timeEnd = 20; insertLogiqueColonne("logique" + logiqueCount, firstTime[0], 0); if (allowedInfoPorte) { openModal('firstTime' + firstTime[0]); timer.pause(); } } else { for (let i = 0; i < colonneTot; i++) { liveColonneNumber.push([]); } for (let i = 0; i < colonneTot; i++) { for (let j = 0; j < numberPerColonne[i]; j++) { logiqueCount++; let type = null; let x = 1; if (isOuAllowed) x++; if (isEtNonAllowed) x++; if (isOuNonAllowed) x++; if (isNotAllowed) x++; let numberRandom = getRandomArbitrary(0, x); switch (numberRandom) { case 0: type = "et"; break; case 1: type = "inv"; break; case 2: type = "ou"; break; case 3: type = "etnon"; break; case 4: type = "nonou"; break; } insertLogiqueColonne("logique" + logiqueCount, type, i); } } } logiques.forEach(function (element) { createLinkAuto(element.name); }); initEndGame(); } function initEndGame() { calculNombreSwitch(); switchCreator(numberOfSwitch); createAllLinkSwitch(); initAllSwitch(); logiques.forEach(function (element) { checkEntreCroisement(element.name); }); createEnd(); initEnd(); initTimer(); checkAllSortieLogique(); } function resetCache() { openModal("reset_cache"); setTimeout(() => { location.reload(); }, 3000); } window.addEventListener('resize', saveStage); function getSwitchState() { var stateSwitch = new Array(); switchsInfoCopy.forEach(function (element) { if (stage.findOne("#" + element.id).fill() == colorSwitchActiveBackground) stateSwitch.push(1); else stateSwitch.push(0); }); return stateSwitch; } function saveStage() { var oldSwitch = getSwitchState(); resetAllTabs(true); if (isTuto) { createStage("setting_container"); } else { createStage("play_container"); } stage.add(layer); logique2 = logiques; logiques = []; var logiqueCount = 0; for (let i = 0; i < colonneTot; i++) { liveColonneNumber[i] = []; } for (let i = 0; i < colonneTot; i++) { for (let j = 0; j < numberPerColonne[i]; j++) { insertLogiqueColonne("logique" + logiqueCount, logique2[logiqueCount].type, i); logiqueCount++; } } logiques.forEach(function (element) { createLinkAuto(element.name); }); initEndGame(); for (let i = 0; i < oldSwitch.length; i++) { let id = i + 1; if (oldSwitch[i] == 1) { if (stage.findOne("#s" + id).fill() == colorSwitchInnactiveBackground) activeSwitch("s" + id); } else { if (stage.findOne("#s" + id).fill() == colorSwitchActiveBackground) activeSwitch("s" + id); } } checkAllSortieLogique(); } function showInfo() { if (document.querySelector("#info_check_input").checked) allowedInfoPorte = false; else allowedInfoPorte = true; }