diff --git a/site/vue/js/createElement.js b/site/vue/js/createElement.js index bef7982..fed2be6 100644 --- a/site/vue/js/createElement.js +++ b/site/vue/js/createElement.js @@ -54,7 +54,10 @@ function createSwitch(id, x, y) { } function createLine(points, id) { - let startX = points[0], startY = points[1], endX = points[2], endY = points[3]; + let startX = points[0], + startY = points[1], + endX = points[2], + endY = points[3]; let distance20 = (endX - startX) / 100 * pourcentageBreak; let newPoints = [startX, startY, startX + distance20, startY, endX - distance20, endY, endX, endY]; let line = new Konva.Line({ @@ -78,7 +81,6 @@ function createLink(entre, sortie) { switch (whatIsElement(sortie)) { case "logique": switch (giveLineId(sortie.name, entre)) { - case "id1": let switchMidX = entre.getX() + entre.getWidth(); let switchMidY = entre.getY() + entre.getHeight() / 2; @@ -144,6 +146,7 @@ function createLink(entre, sortie) { } } + function createLogique(x, y, id, type) { var imageObj = new Image(); imageObj.onload = function () { @@ -249,8 +252,7 @@ function createLinkSwitch() { switchs = element; } }); - } - else { + } else { switchsInfoCopy.forEach(function (element) { if (stage.findOne("#" + element.id).id3.length === 0) { if (Math.abs(logique.y - element.y) < distanceSwitch) { diff --git a/site/vue/js/generateGame.js b/site/vue/js/generateGame.js index 108e07a..8f3feaa 100644 --- a/site/vue/js/generateGame.js +++ b/site/vue/js/generateGame.js @@ -404,19 +404,92 @@ function generate2() { else logique.type = getTypeFromSameMatch(listeSame, logique.matchId1); switch (logique.type) { case 0: - console.log(logique.id + " type : " + logique.type + " col : " + logique.col); insertLogiqueColonne(logique.id, "et", logique.col - 1); break; case 1: - console.log(logique.id + " type : " + logique.type + " col : " + logique.col); insertLogiqueColonne(logique.id, "ou", logique.col - 1); break; case 2: - console.log(logique.id + " type : " + logique.type + " col : " + logique.col); insertLogiqueColonne(logique.id, "inv", logique.col - 1); break; } }); + var logiques; + //creation de liens entre les portes logiques : + for (let col = 1; col < colonneTot; col++) { + //recuperer tout les logiques : + logiques = new Array(); + listeLogiqueObj.forEach(function (logique) { + if (logique.col === col && logique.id3 === null) logiques.push(logique); + }); + //check si y a des fork + while (getNumberFork(fork, col) > 0) { + fork.forEach(function (element) { + if (element[0] === col) { + //selection de la sortie a forker : + let logiqueFork = logiques[getRandomArbitrary(0, logiques.length)]; + //recupération des logiques d'entree : + let logiqueEntre = new Array(); + let sameId = null; + listeLogiqueObj.forEach(function (logique) { + + if (logique.col === col + 1) { + if (sameId === null) { + sameId = logique.matchId1; + logiqueEntre.push(logique); + } else if (sameId === logique.matchId1) + logiqueEntre.push(logique); + } + }); + logiqueFork.id3 = "done"; + //creation du lien avec fork : + for (let i = 0; i < logiqueEntre.length; i++) { + createLink(findLogique(logiqueFork.id), findLogique(logiqueEntre[i].id)); + } + + fork.splice(fork.indexOf(element), 1); + } + }); + + } + + } + //creation des autres liens : + //recupération des logiques restants : + for (x in listeLogiqueObj) { + if (listeLogiqueObj[x].id3 === null && listeLogiqueObj[x].col !== colonneTot) { + //liste des logiques possible : + let loqiques = new Array(); + listeLogiqueObj.forEach(function (logique) { + if (logique.col === listeLogiqueObj[x].col + 1) { + if (logique.type === 2 && checkLogiqueLines(logique.id, "id1") === null) logiques.push(logique); + else if (logique.type !== 2) { + if (checkLogiqueLines(logique.id, "id1") === null || checkLogiqueLines(logique.id, "id2") === null) logiques.push(logique); + } + } + }); + //attribution du logique le plus proche : + let logiqueFinal = null; + logiques.forEach(function (logique) { + if (logiqueFinal === null) { + logiqueFinal = logique; + } else if (Math.abs(findLogique(listeLogiqueObj[x].id).y - findLogique(logique.id).y) < Math.abs(findLogique(listeLogiqueObj[x].id).y - findLogique(logiqueFinal.id).y)) { + logiqueFinal = logique; + } + }); + //console.log(listeLogiqueObj[x].id + " => " + logiqueFinal.id); + console.log(findLogique(listeLogiqueObj[x].id)); + createLink(findLogique(listeLogiqueObj[x].id), findLogique(logiqueFinal.id)); + } + } +} + +function getNumberFork(arr, col) { + let num = 0; + arr.forEach(function (item) { + if (item[0] === col) num++; + }); + return num; } function getElementArray(one, array) {