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
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;
|
|
|
|
}
|