You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

322 lines
8.1 KiB

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 (9) {
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 = 7;
numberColonne2 = 4;
isNotAllowed = true;
isOuAllowed = true;
double = true;
timeEnd = 5000;
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;
numberColonne2 = 4;
break;
}
isTuto = false;
createStage("play_container");
stage.add(layer);
colonneTot = 3;
numberPerColonne = [numberColonne1, numberColonne2, 2];
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;
}