diff --git a/cryptide_project/src/Components/ChoiceBar.tsx b/cryptide_project/src/Components/ChoiceBar.tsx index 96422d2..1329712 100644 --- a/cryptide_project/src/Components/ChoiceBar.tsx +++ b/cryptide_project/src/Components/ChoiceBar.tsx @@ -29,7 +29,7 @@ const ChoiceBar = () => { let playerIndex = actualPlayerIndex + 1 if (indiceTester.Works(person)){ - socket.emit("node checked", nodeId, true, positionToColor(actualPlayerIndex), room, nextPlayerIndex) + socket.emit("node checked", nodeId, true, actualPlayerIndex, room, nextPlayerIndex) while(playerIndex != actualPlayerIndex){ if (playerIndex == players.length){ playerIndex = 0 @@ -38,7 +38,7 @@ const ChoiceBar = () => { const works = tester.Works(person) await delay(500); socket.emit("asked all 1by1", person.getId(), players[playerIndex].id) - socket.emit("node checked", nodeId, works, positionToColor(playerIndex), room, nextPlayerIndex) + socket.emit("node checked", nodeId, works, playerIndex, room, nextPlayerIndex) if(!works){ return } diff --git a/cryptide_project/src/Components/GraphContainer.tsx b/cryptide_project/src/Components/GraphContainer.tsx index 0aa002c..de859f5 100644 --- a/cryptide_project/src/Components/GraphContainer.tsx +++ b/cryptide_project/src/Components/GraphContainer.tsx @@ -16,7 +16,7 @@ import JSONParser from "../JSONParser"; import PersonNetwork from "../model/PersonsNetwork"; import Person from "../model/Person"; import Indice from "../model/Indices/Indice"; -import { useLocation } from "react-router-dom"; +import { Navigate, useLocation, useNavigate } from "react-router-dom"; import { useGame } from "../Contexts/GameContext"; import { socket } from "../SocketConfig" import { colorToEmoji, positionToColor } from "../ColorHelper"; @@ -33,6 +33,7 @@ let lastNodeId = -1 let first = true let askedWrong = false let solo: boolean = true +let mapIndexPersons: Map = new Map() const MyGraphComponent: React.FC = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange}) => { @@ -41,6 +42,8 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS const params = new URLSearchParams(window.location.search); const solotmp = params.get('solo'); + const navigate = useNavigate(); + let playerIndex: number = turnPlayerIndex @@ -60,6 +63,9 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS solo=false } if (!solo){ + for(let i = 0; i = ({onNodeClick, handleS } }) - socket.on("node checked",(id, works, color, newPlayerIndex) => { + socket.on("node checked",(id, works, askedIndex, newPlayerIndex) => { const node = nodes.get().find((n) => id == n.id) if (node!=undefined){ onNodeClick(false) playerIndex = newPlayerIndex - if (!node.label.includes(colorToEmoji(color, works))){ - networkData.nodes.update({id: id, label: node.label + colorToEmoji(color, works)}) + if (!node.label.includes(colorToEmoji(positionToColor(askedIndex), works))){ + networkData.nodes.update({id: id, label: node.label + colorToEmoji(positionToColor(askedIndex), works)}) } if (playerIndex === thisPlayerIndex){ handleTurnBarTextChange("À vous de jouer") @@ -167,14 +173,14 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS playerIndex = 0 } if (tester.Works(pers)){ - socket.emit("node checked", nodeId, true, positionToColor(thisPlayerIndex), room, playerIndex) + socket.emit("node checked", nodeId, true, thisPlayerIndex, room, playerIndex) } else{ maybe = maybe - 1 if(maybe == 0){ maybe = players.length - 1 } - socket.emit("node checked", nodeId, false, positionToColor(thisPlayerIndex), room, maybe) + socket.emit("node checked", nodeId, false, thisPlayerIndex, room, maybe) socket.emit("asked wrong", askingPlayer, room) } } @@ -213,7 +219,7 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS } }); - network.on("click", (params) => { + network.on("click", async (params) => { if(params.nodes.length > 0){ setNodeIdData(params.nodes[0]) @@ -227,7 +233,7 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS if(playerIndex == players.length){ playerIndex = 0 } - socket.emit("node checked", params.nodes[0], false, positionToColor(thisPlayerIndex), room, playerIndex) + socket.emit("node checked", params.nodes[0], false, thisPlayerIndex, room, playerIndex) askedPersons.push(person) askedWrong = false } @@ -243,14 +249,28 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS else{ const person = personNetwork?.getPersons().find((p) => p.getId() == params.nodes[0]) //person sélectionnée if (person != undefined){ - indices.forEach(async (i, index) =>{ + let index =0 + let works = true + let promises: Promise[] = [] + for (const i of indices){ const tester = IndiceTesterFactory.Create(i) const test = tester.Works(person) const node = nodes.get().find((n) => params.nodes[0] == n.id) if (node!=undefined){ - networkData.nodes.update({id: params.nodes[0], label: node.label + colorToEmoji(positionToColor(index), test)}) + if (!node.label.includes(colorToEmoji(positionToColor(index), test))){ + networkData.nodes.update({id: params.nodes[0], label: node.label + colorToEmoji(positionToColor(index), test)}) + await delay(500) + if(!test){ + works = false + } + if (index == indices.length - 1 && works){ + navigate("/endgame") + } + + } } - }) + index++ + } } } } @@ -268,7 +288,7 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS ); - function delay(ms: number) { + function delay(ms: number): Promise { return new Promise(resolve => setTimeout(resolve, ms)); } } diff --git a/cryptide_project/src/Pages/Play.tsx b/cryptide_project/src/Pages/Play.tsx index 13d3f62..2c4b42a 100644 --- a/cryptide_project/src/Pages/Play.tsx +++ b/cryptide_project/src/Pages/Play.tsx @@ -37,7 +37,7 @@ function Play() { } function launchMastermind(){ - const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(5, 30) + const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(3, 30) setPersonData(choosenPerson) setPersonNetworkData(networkPerson) setIndicesData(choosenIndices) diff --git a/cryptide_project/src/Style/Theme.tsx b/cryptide_project/src/Style/Theme.tsx index 50df20a..d29d470 100644 --- a/cryptide_project/src/Style/Theme.tsx +++ b/cryptide_project/src/Style/Theme.tsx @@ -1,7 +1,7 @@ // theme.js const theme = { colors: { - primary: '#0064E0', + primary: '#7AA3F4', secondary: '#0052B8', text: '#fff' @@ -10,4 +10,4 @@ const theme = { }, }; -export default theme; +export default theme; \ No newline at end of file