lobbies dynamique + change à chaque mouvement dans un lobby + variable pour savoir s'ils ont commencé
continuous-integration/drone/push Build is failing Details

pull/93/head
Thomas Chazot 1 year ago
parent 7c8a5d1f4a
commit 79a6a18f10

@ -25,6 +25,10 @@ io.on('connection', (socket) => {
socket.on('network created', (network, person, indices, room, start) =>{ socket.on('network created', (network, person, indices, room, start) =>{
io.to(room).emit("game created", network, person, indices, start) io.to(room).emit("game created", network, person, indices, start)
map.get(room).started = true
const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value }))
const playerJson = JSON.stringify(playerArray);
io.emit("request lobbies", playerJson)
}); });
socket.on("lobby joined", (room, player) =>{ socket.on("lobby joined", (room, player) =>{
@ -33,10 +37,10 @@ io.on('connection', (socket) => {
socket.join(room) socket.join(room)
} }
if (map.get(room) == undefined){ if (map.get(room) == undefined){
map.set(room, [{type: player.type, id: socket.id, pseudo: player.pseudo, profilePicture: player.profilePicture}]) map.set(room, {tab: [{type: player.type, id: socket.id, pseudo: player.pseudo, profilePicture: player.profilePicture}], started: false})
} }
else{ else{
const tab = map.get(room) const tab = map.get(room).tab
for(let i = 0; i<tab.length; i++){ for(let i = 0; i<tab.length; i++){
if (tab[i].id === socket.id && player.type==="User"){ if (tab[i].id === socket.id && player.type==="User"){
tab.splice(i, 1) tab.splice(i, 1)
@ -44,17 +48,17 @@ io.on('connection', (socket) => {
} }
if (player.type!=="User"){ if (player.type!=="User"){
map.get(room).push({type: player.type, id: player.id, pseudo: player.pseudo, profilePicture: player.profilePicture}) tab.push({type: player.type, id: player.id, pseudo: player.pseudo, profilePicture: player.profilePicture})
} }
else{ else{
map.get(room).push({type: player.type, id: socket.id, pseudo: player.pseudo, profilePicture: player.profilePicture}) tab.push({type: player.type, id: socket.id, pseudo: player.pseudo, profilePicture: player.profilePicture})
} }
} }
io.to(room).emit("new player", map.get(room)) io.to(room).emit("new player", map.get(room))
const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value })) const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value }))
const playerJson = JSON.stringify(playerArray); const playerJson = JSON.stringify(playerArray);
io.to(socket.id).emit("request lobbies", playerJson) io.emit("request lobbies", playerJson)
}) })
socket.on("request lobbies", () => { socket.on("request lobbies", () => {
@ -65,7 +69,7 @@ io.on('connection', (socket) => {
socket.on("bot deleted", (bot, room) =>{ socket.on("bot deleted", (bot, room) =>{
const tab = map.get(room) const tab = map.get(room).tab
for(let i = 0; i<tab.length; i++){ for(let i = 0; i<tab.length; i++){
if (tab[i].id === bot.id){ if (tab[i].id === bot.id){
tab.splice(i, 1) tab.splice(i, 1)
@ -74,7 +78,7 @@ io.on('connection', (socket) => {
io.to(room).emit("new player", map.get(room)) io.to(room).emit("new player", map.get(room))
const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value })) const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value }))
const playerJson = JSON.stringify(playerArray); const playerJson = JSON.stringify(playerArray);
io.to(socket.id).emit("request lobbies", playerJson) io.emit("request lobbies", playerJson)
}) })
@ -100,7 +104,7 @@ io.on('connection', (socket) => {
socket.on("disconnect", () =>{ socket.on("disconnect", () =>{
for (const k of map.keys()){ for (const k of map.keys()){
const tab = map.get(k) const tab = map.get(k).tab
for (let i = 0; i<tab.length; i++){ for (let i = 0; i<tab.length; i++){
if (tab[i].id === socket.id){ if (tab[i].id === socket.id){
tab.splice(i, 1) tab.splice(i, 1)
@ -111,6 +115,9 @@ io.on('connection', (socket) => {
} }
} }
} }
const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value }))
const playerJson = JSON.stringify(playerArray);
io.emit("request lobbies", playerJson)
}) })
socket.on("node checked", (id, works, color, room, playerIndex) =>{ socket.on("node checked", (id, works, color, room, playerIndex) =>{
@ -147,5 +154,6 @@ io.on('connection', (socket) => {
socket.on("end game", (winnerIndex, room) =>{ socket.on("end game", (winnerIndex, room) =>{
io.to(room).emit("end game", winnerIndex) io.to(room).emit("end game", winnerIndex)
map.delete(room)
}) })
}); });

@ -13,15 +13,13 @@ interface LobbyContainerProps {
roomNum : string roomNum : string
HeadPlayer : Player HeadPlayer : Player
nbPlayer : number nbPlayer : number
setFirst: (first: boolean) => void
//? mettre un "nbplayermax" si le nombre de joueur max peut etre fixé ? //? mettre un "nbplayermax" si le nombre de joueur max peut etre fixé ?
} }
const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbPlayer}) => { const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbPlayer, setFirst}) => {
const theme=useTheme(); const theme=useTheme();
const navigate = useNavigate(); const navigate = useNavigate();
const dest = '/lobby?room=' + roomNum; const dest = '/lobby?room=' + roomNum;
@ -39,6 +37,7 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
else{ else{
if (nbPlayer < 6) { if (nbPlayer < 6) {
socket.off("request lobbies") socket.off("request lobbies")
setFirst(true)
navigate(dest); navigate(dest);
} else { } else {
handleShow() handleShow()

@ -16,11 +16,13 @@ class LobbyDataProps {
roomNum : string roomNum : string
headPlayer: Player headPlayer: Player
nbPlayer: number nbPlayer: number
started: boolean
constructor(roomNum: string, player: Player, nbPlayer: number){ constructor(roomNum: string, player: Player, nbPlayer: number, started: boolean){
this.roomNum = roomNum this.roomNum = roomNum
this.headPlayer = player this.headPlayer = player
this.nbPlayer = nbPlayer this.nbPlayer = nbPlayer
this.started=started
} }
} }
@ -28,7 +30,7 @@ function Lobbies() {
const theme=useTheme(); const theme=useTheme();
const [first, setFirst] = useState(true)
const [lobbyData, setLobbyData] = useState<LobbyDataProps[]>([]) const [lobbyData, setLobbyData] = useState<LobbyDataProps[]>([])
@ -39,20 +41,30 @@ function Lobbies() {
lobby.headPlayer.pseudo.toLowerCase().includes(searchTerm.toLowerCase()) lobby.headPlayer.pseudo.toLowerCase().includes(searchTerm.toLowerCase())
); );
useEffect(() => {
socket.emit("request lobbies")
const setFirstData = (first: boolean) => {
setFirst(first)
}
if (first){
setFirst(false)
socket.emit("request lobbies")
}
useEffect(() => {
socket.on("request lobbies", (map) => { socket.on("request lobbies", (map) => {
console.log("wesh")
const jsonMap = JSON.parse(map) const jsonMap = JSON.parse(map)
const tmpTab: LobbyDataProps[]=[] const tmpTab: LobbyDataProps[]=[]
for(const item of jsonMap){ for(const item of jsonMap){
tmpTab.push(new LobbyDataProps(item.key, JSONParser.JSONToPlayer(item.value[0]), item.value.length)) tmpTab.push(new LobbyDataProps(item.key, JSONParser.JSONToPlayer(item.value.tab[0]), item.value.tab.length, item.value.started))
} }
setLobbyData(tmpTab ) setLobbyData(tmpTab)
}) })
}) })
return( return(
<div style={{display:'flex', flexDirection:'column', alignItems:'center'}}> <div style={{display:'flex', flexDirection:'column', alignItems:'center'}}>
<h1>Bienvenue dans le lobby des lobbies</h1> <h1>Bienvenue dans le lobby des lobbies</h1>
@ -70,6 +82,7 @@ function Lobbies() {
roomNum={lobby.roomNum} roomNum={lobby.roomNum}
HeadPlayer={lobby.headPlayer} HeadPlayer={lobby.headPlayer}
nbPlayer={lobby.nbPlayer} nbPlayer={lobby.nbPlayer}
setFirst={setFirstData}
/> />
))} ))}
</div> </div>

@ -137,7 +137,7 @@ function Lobby() {
socket.on("new player", (tab) =>{ socket.on("new player", (tab) =>{
const tmpTab: Player[] = [] const tmpTab: Player[] = []
for (const p of tab){ for (const p of tab.tab){
tmpTab.push(JSONParser.JSONToPlayer(p)) tmpTab.push(JSONParser.JSONToPlayer(p))
} }
console.log(tmpTab) console.log(tmpTab)

Loading…
Cancel
Save