diff --git a/cryptide_project/src/Components/GraphContainer.tsx b/cryptide_project/src/Components/GraphContainer.tsx index 5399b83..a124dc7 100644 --- a/cryptide_project/src/Components/GraphContainer.tsx +++ b/cryptide_project/src/Components/GraphContainer.tsx @@ -39,13 +39,14 @@ let lastSocketId= "" let firstLap = true let cptHistory = 0 let lastNodes: NodePerson[] = [] +let firstEnigme = true const MyGraphComponent: React.FC = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange, playerTouched, setPlayerTouched, changecptTour, solo, addToHistory, showLast, setNetwork}) => { let cptTour: number = 0 const {user} = useAuth() - const { indices, indice, person, personNetwork, setNodeIdData, players, askedPersons, setActualPlayerIndexData, room, actualPlayerIndex, turnPlayerIndex, setTurnPlayerIndexData, setWinnerData } = useGame(); + const { indices, indice, person, personNetwork, setNodeIdData, players, askedPersons, setActualPlayerIndexData, room, actualPlayerIndex, turnPlayerIndex, setTurnPlayerIndexData, setWinnerData, dailyEnigme } = useGame(); const params = new URLSearchParams(window.location.search); const navigate = useNavigate(); @@ -258,6 +259,26 @@ let cptTour: number = 0 setNetwork(network) + dailyEnigme.forEach((pairs, index) => { + pairs.forEach((pair) => { + const i = indices.findIndex((indice) => pair.first.getId() === indice.getId()) + console.log(index) + const node = networkData.nodes.get().find((n) => index == n.id) + if (node != undefined){ + networkData.nodes.update({id: node.id, label: node.label + positionToEmoji(i, pair.second)}) + const test = networkData.nodes.get().find((n) => index == n.id) + if (test!=undefined){ + console.log(test.label) + } + } + }) + }); + + indices.forEach((i, index) => { + console.log(i.ToString("fr") + " => " + positionToEmoji(index, true)) + }) + + if (!solo){ socket.on("asked all", (id) =>{ const pers = personNetwork.getPersons().find((p) => p.getId() == id) diff --git a/cryptide_project/src/Contexts/GameContext.tsx b/cryptide_project/src/Contexts/GameContext.tsx index 32da9d2..ecc142d 100644 --- a/cryptide_project/src/Contexts/GameContext.tsx +++ b/cryptide_project/src/Contexts/GameContext.tsx @@ -1,5 +1,6 @@ import React, { createContext, useContext, useState, ReactNode } from 'react'; import Indice from '../model/Indices/Indice'; +import Pair from '../model/Pair'; import Person from '../model/Person'; import PersonNetwork from '../model/PersonsNetwork'; import Player from '../model/Player'; @@ -17,6 +18,7 @@ interface GameContextProps { room: string; onlyFalse: boolean winner: Player | null + dailyEnigme: Map[]> setIndicesData: (newIndices: Indice[]) => void; setIndiceData: (newIndice: Indice) => void; setPersonData: (newPerson: Person) => void; @@ -30,6 +32,7 @@ interface GameContextProps { setOnlyFalseData: (newOnlyFalse: boolean) => void setWinnerData: (winner: Player) => void reset: () => void + setDailyEnigmeData: (map: Map[]>) => void } const GameContext = createContext(undefined); @@ -51,6 +54,7 @@ export const GameProvider: React.FC = ({ children }) => { const [room, setRoom] = useState("") const [onlyFalse, setOnlyFalse] = useState(false) const [winner, setWinner] = useState(null) + const [dailyEnigme, setDailyEnigme] = useState[]>>(new Map()) const setIndicesData = (newIndices: Indice[]) => { @@ -102,6 +106,10 @@ export const GameProvider: React.FC = ({ children }) => { setWinner(winner) } + const setDailyEnigmeData = (map: Map[]>) => { + setDailyEnigme(map) + } + const reset = () => { setIndices([]) setActualPlayerIndex(-1) @@ -117,7 +125,7 @@ export const GameProvider: React.FC = ({ children }) => { } return ( - + {children} ); diff --git a/cryptide_project/src/Pages/Play.tsx b/cryptide_project/src/Pages/Play.tsx index 134ce23..281087a 100644 --- a/cryptide_project/src/Pages/Play.tsx +++ b/cryptide_project/src/Pages/Play.tsx @@ -26,11 +26,15 @@ import { PlayerProps } from '../types/Player'; import Player from '../model/Player'; import Human from '../model/User'; import User from '../model/User'; +import EnigmeDuJourCreator from '../model/EnigmeDuJourCreator'; +import Stub from '../model/Stub'; +let first = true function Play() { const theme=useTheme() const {isLoggedIn, login, user, setUserData } = useAuth(); + const {setDailyEnigmeData} = useGame() useEffect(() => { const fetchUserInformation = async () => { @@ -92,6 +96,11 @@ function Play() { setPersonNetworkData(networkPerson) setIndicesData(choosenIndices) setIndicesData(choosenIndices) + if (first){ + first = false + const map = EnigmeDuJourCreator.createEnigme(networkPerson, choosenIndices, choosenPerson, Stub.GenerateIndice()) + setDailyEnigmeData(map) + } navigate('/game?solo=true'); } diff --git a/cryptide_project/src/Translations/fr.json b/cryptide_project/src/Translations/fr.json index e9cf193..5b37344 100644 --- a/cryptide_project/src/Translations/fr.json +++ b/cryptide_project/src/Translations/fr.json @@ -55,7 +55,7 @@ "color_start": "Le suspect a les cheveux", "color_end": "", - "nb_friends_indice_start": "Le suspect", + "nb_friends_indice_start": "Le suspect a", "nb_friends_indice_end": "amis", "nb_sports_indice_start": "Le suspect pratique", diff --git a/cryptide_project/src/model/EnigmeDuJourCreator.ts b/cryptide_project/src/model/EnigmeDuJourCreator.ts new file mode 100644 index 0000000..126c3bb --- /dev/null +++ b/cryptide_project/src/model/EnigmeDuJourCreator.ts @@ -0,0 +1,74 @@ +import IndiceTesterFactory from "./Factory/IndiceTesterFactory"; +import Indice from "./Indices/Indice"; +import Pair from "./Pair"; +import Person from "./Person"; +import PersonNetwork from "./PersonsNetwork"; + +class EnigmeDuJourCreator{ + + + static createEnigme(personNetwork: PersonNetwork, choosenIndices: Indice[], choosenPerson: Person, allIndices: Indice[]): Map[]>{ + const map = new Map[]>() + personNetwork.getPersons().forEach((p) =>{ + map.set(p.getId(), []) + }) + + console.log("START ENIGME") + + choosenIndices.forEach((choosenIndice) => { + const choosenIndiceTester = IndiceTesterFactory.Create(choosenIndice) + const modifiedPersons: Pair[] = [] + let possibleIndices: Indice[] = [...allIndices] + + let i = 0 + + while (possibleIndices.length != 1){ + let tmpPossibleIndices: Indice[] = [...possibleIndices] + let choosenPair : Pair = new Pair(personNetwork.getPersons()[0], true) + for(const person of personNetwork.getPersons().filter((p) => p.getId() !== choosenPerson.getId())){ + const veryTmpIndice = [...possibleIndices] + if (!choosenIndiceTester.Works(person)){ + possibleIndices.forEach((possibleIndice, index) =>{ + const tester = IndiceTesterFactory.Create(possibleIndice) + if (tester.Works(person)){ + const t = veryTmpIndice.findIndex((tmpIndice) => tmpIndice.getId() == possibleIndice.getId()) + if (t != -1){ + veryTmpIndice.splice(t, 1) + } + } + }) + if (veryTmpIndice.length{ + const tester = IndiceTesterFactory.Create(possibleIndice) + if (!tester.Works(person)){ + const t = veryTmpIndice.findIndex((tmpIndice) => tmpIndice.getId() == possibleIndice.getId()) + if (t != -1){ + veryTmpIndice.splice(t, 1) + } + } + }) + if (veryTmpIndice.length " + choosenIndice.ToString("fr")) + console.log("possibleIndices => " + possibleIndices[0].ToString("fr")) + modifiedPersons.forEach((pair) =>{ + map.get(pair.first.getId())?.push(new Pair(choosenIndice, pair.second)) + }) + }) + return map + } +} +export default EnigmeDuJourCreator \ No newline at end of file diff --git a/cryptide_project/src/model/Stub.ts b/cryptide_project/src/model/Stub.ts index eaff6c9..059f2e0 100644 --- a/cryptide_project/src/model/Stub.ts +++ b/cryptide_project/src/model/Stub.ts @@ -22,20 +22,14 @@ class Stub{ let test = 7 for (let i: Color=0; i<5; i++){ - for (let j: Color=0; j<5; j++){ - if (j==i){ - continue - } + for (let j: Color=i + 1; j<5; j++){ indices.push(new ColorIndice(test, [i, j])) test++ } } for (let i: Sport=0; i<5; i++){ - for (let j: Sport=0; j<5; j++){ - if (j==i){ - continue - } + for (let j: Sport=i + 1; j<5; j++){ indices.push(new SportIndice(test, [i, j])) test++ } diff --git a/cryptide_project/src/res/names.json b/cryptide_project/src/res/names.json index f96c31b..d64a2d3 100644 --- a/cryptide_project/src/res/names.json +++ b/cryptide_project/src/res/names.json @@ -22,7 +22,6 @@ "Riley", "Layla", "Stella", - "Aurora", "Natalie", "Zoe", "Lucy", @@ -48,7 +47,6 @@ "Bella", "Sadie", "Hailey", - "Aurora", "Liam", "Noah", "Oliver", @@ -69,7 +67,6 @@ "Jack", "Jayden", "Owen", - "Noah", "Ethan", "Mason", "Logan", @@ -93,4 +90,3 @@ "Julian" ] } - \ No newline at end of file