pull/67/head
Pierre Ferreira 2 years ago
parent cd1aff13db
commit 73b049f348

@ -24,14 +24,15 @@ import { colorToEmoji, positionToColor } from "../ColorHelper";
interface MyGraphComponentProps { interface MyGraphComponentProps {
onNodeClick: (shouldShowChoiceBar: boolean) => void; onNodeClick: (shouldShowChoiceBar: boolean) => void;
handleShowTurnBar: (shouldShowTurnBar: boolean) => void handleShowTurnBar: (shouldShowTurnBar: boolean) => void;
FromSolo: boolean;
} }
let lastAskingPlayer = 0 let lastAskingPlayer = 0
let lastNodeId = -1 let lastNodeId = -1
let first = true let first = true
const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleShowTurnBar}) => { const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleShowTurnBar, FromSolo}) => {
const { indices, indice, person, personNetwork, setNodeIdData, players, askedPersons, setActualPlayerIndexData, room, actualPlayerIndex, turnPlayerIndex } = useGame(); const { indices, indice, person, personNetwork, setNodeIdData, players, askedPersons, setActualPlayerIndexData, room, actualPlayerIndex, turnPlayerIndex } = useGame();
@ -96,108 +97,129 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
const networkData = { nodes: nodes, edges: graph.edges }; const networkData = { nodes: nodes, edges: graph.edges };
const network = new Network(container, networkData, initialOptions); const network = new Network(container, networkData, initialOptions);
if(FromSolo){
//* lsti = Generate indice (paramNbIndice) //une couleur par indice
/*
Onclick :
nbcoup = 0;
pour chaque indice i :
jeton = IsNodeInIndice(node,i)
lstJ.add(jeton)
if jeton == X :
rep = false
if(rep) :
endgame()
break
afficheJeton(jeton)
*/
socket.on("node checked",(id, works, color, newPlayerIndex) => {
const node = nodes.get().find((n) => id == n.id) }
if (node!=undefined){ else {
onNodeClick(false) socket.on("node checked",(id, works, color, newPlayerIndex) => {
playerIndex = newPlayerIndex const node = nodes.get().find((n) => id == n.id)
networkData.nodes.update({id: id, label: node.label + colorToEmoji(color, works)}) if (node!=undefined){
if (playerIndex === thisPlayerIndex){ onNodeClick(false)
handleShowTurnBar(true) playerIndex = newPlayerIndex
} networkData.nodes.update({id: id, label: node.label + colorToEmoji(color, works)})
else{ if (playerIndex === thisPlayerIndex){
handleShowTurnBar(false) handleShowTurnBar(true)
console.log("je passe bien ici ?????") }
} else{
} handleShowTurnBar(false)
lastAskingPlayer = 0 console.log("je passe bien ici ?????")
lastNodeId = -1 }
})
socket.on("already asked", (nodeId, askedPlayer) =>{
console.log("player: " + askedPlayer + " already asked on node " + nodeId)
})
socket.on("asked", (nodeId, askingPlayer) => {
if (askingPlayer.id !== lastAskingPlayer || nodeId !== lastNodeId ){
lastAskingPlayer = askingPlayer.id
lastNodeId = nodeId
const pers = personNetwork.getPersons().find((p) => p.getId() == nodeId)
if (pers!=undefined){
if (askedPersons.includes(pers)){
socket.emit("already asked", nodeId, askingPlayer, socket.id)
return
} }
else{ lastAskingPlayer = 0
askedPersons.push(pers) lastNodeId = -1
const node = nodes.get().find((n) => nodeId == n.id) })
if (node != undefined && indice != null){
var tester = IndiceTesterFactory.Create(indice) socket.on("already asked", (nodeId, askedPlayer) =>{
playerIndex = playerIndex + 1 console.log("player: " + askedPlayer + " already asked on node " + nodeId)
if(playerIndex == players.length){ })
playerIndex = 0
}
if (tester.Works(pers)){ socket.on("asked", (nodeId, askingPlayer) => {
socket.emit("node checked", nodeId, true, positionToColor(thisPlayerIndex), room, playerIndex) if (askingPlayer.id !== lastAskingPlayer || nodeId !== lastNodeId ){
lastAskingPlayer = askingPlayer.id
lastNodeId = nodeId
const pers = personNetwork.getPersons().find((p) => p.getId() == nodeId)
if (pers!=undefined){
if (askedPersons.includes(pers)){
socket.emit("already asked", nodeId, askingPlayer, socket.id)
return
} }
else{ else{
socket.emit("node checked", nodeId, false, positionToColor(thisPlayerIndex), room, playerIndex) askedPersons.push(pers)
const node = nodes.get().find((n) => nodeId == n.id)
if (node != undefined && indice != null){
var tester = IndiceTesterFactory.Create(indice)
playerIndex = playerIndex + 1
if(playerIndex == players.length){
playerIndex = 0
}
if (tester.Works(pers)){
socket.emit("node checked", nodeId, true, positionToColor(thisPlayerIndex), room, playerIndex)
}
else{
socket.emit("node checked", nodeId, false, positionToColor(thisPlayerIndex), room, playerIndex)
}
}
} }
} }
} }
} }
}
}) )
personNetwork.getPersons().forEach(p => { personNetwork.getPersons().forEach(p => {
let a = 0 let a = 0
for (let i of indices){ for (let i of indices){
let tester = IndiceTesterFactory.Create(i) let tester = IndiceTesterFactory.Create(i)
if (tester.Works(p)){ if (tester.Works(p)){
a++ a++
}
}
if (a==indices.length){
//networkData.nodes.update({id: p.getId(), label: p.getName() + "\n🔵"})
console.log(p)
} }
}
if (a==indices.length){
//networkData.nodes.update({id: p.getId(), label: p.getName() + "\n🔵"})
console.log(p)
}
}); });
// Gérer le changement entre la physique et le déplacement manuel // Gérer le changement entre la physique et le déplacement manuel
network.on("dragging", (params) => { network.on("dragging", (params) => {
if (params.nodes.length > 0) { if (params.nodes.length > 0) {
// Un nœud a été cliqué // Un nœud a été cliqué
initialOptions.physics.enabled = false; initialOptions.physics.enabled = false;
network.setOptions(initialOptions); network.setOptions(initialOptions);
} }
}); });
network.on("click", (params) => { network.on("click", (params) => {
if(params.nodes.length > 0){ if(params.nodes.length > 0){
setNodeIdData(params.nodes[0]) setNodeIdData(params.nodes[0])
// Renvoyer un true pour afficher la choice bar // Renvoyer un true pour afficher la choice bar
if (thisPlayerIndex == playerIndex){ if (thisPlayerIndex == playerIndex){
onNodeClick(true) onNodeClick(true)
}
else{
onNodeClick(false)
}
} }
else{ else{
// Renvoyer un false pour cacher la choice bar
onNodeClick(false) onNodeClick(false)
} }
} });
else{ } //notfromsolo
// Renvoyer un false pour cacher la choice bar
onNodeClick(false)
}
});
}, []); // Le tableau vide signifie que cela ne s'exécutera qu'une fois après le premier rendu }, []); // Le tableau vide signifie que cela ne s'exécutera qu'une fois après le premier rendu
return ( return (

@ -1,7 +1,8 @@
import React from "react"; import React from "react";
import { useTheme } from "../Style/ThemeContext"; import { useTheme } from "../Style/ThemeContext";
const TurnBar = () => { //@ts-ignore
const TurnBar = ({text}) => {
const theme = useTheme(); const theme = useTheme();
return ( return (
<div className='upperInfo' <div className='upperInfo'
@ -9,7 +10,7 @@ const TurnBar = () => {
borderColor: theme.colors.secondary borderColor: theme.colors.secondary
}}> }}>
{/* texte changeable et a traduire */} {/* texte changeable et a traduire */}
<p>Dummy, à vous de jouer !</p> <p>{text}</p>
</div> </div>
); );
}; };

@ -108,9 +108,9 @@ const InGame = ({locale, changeLocale}) => {
return ( return (
<div id="mainDiv"> <div id="mainDiv">
{showTurnBar && <TurnBar/>} {showTurnBar && <TurnBar text="je suis dans la page InGame"/>}
<div id='graphDiv'> <div id='graphDiv'>
<GraphContainer onNodeClick={handleNodeClick} handleShowTurnBar={handleShowTurnBar} /> <GraphContainer onNodeClick={handleNodeClick} handleShowTurnBar={handleShowTurnBar} FromSolo={false}/>
</div> </div>
<div className='playerlistDiv'> <div className='playerlistDiv'>

@ -107,9 +107,9 @@ const SoloGame = ({locale, changeLocale}) => {
return ( return (
<div id="mainDiv"> <div id="mainDiv">
<TurnBar/> <TurnBar text="je suis dans la page solo"/>
<div id='graphDiv'> <div id='graphDiv'>
<GraphContainer onNodeClick={handleNodeClick} handleShowTurnBar={handleShowTurnBar} /> <GraphContainer onNodeClick={handleNodeClick} handleShowTurnBar={handleShowTurnBar} FromSolo={true}/>
</div> </div>
<div className='nbLaps' style={{ <div className='nbLaps' style={{

Loading…
Cancel
Save