From 36b48ff6bf1534d50c7d227381a192d5da75d074 Mon Sep 17 00:00:00 2001 From: Thomas Chazot Date: Fri, 1 Dec 2023 14:28:49 +0100 Subject: [PATCH] =?UTF-8?q?Bouton=20permettant=20=C3=A0=20l'utilisateur=20?= =?UTF-8?q?qui=20a=20quitt=C3=A9=20une=20partie=20de=20revenir=20dedans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cryptide_project/server/server.js | 97 ++++++++++-------- cryptide_project/src/Pages/Lobbies.tsx | 11 ++ cryptide_project/src/Pages/Play.tsx | 15 ++- cryptide_project/src/server/db/socialgraph.db | Bin 28672 -> 28672 bytes 4 files changed, 79 insertions(+), 44 deletions(-) diff --git a/cryptide_project/server/server.js b/cryptide_project/server/server.js index 05bdb0e..55d91e9 100644 --- a/cryptide_project/server/server.js +++ b/cryptide_project/server/server.js @@ -37,59 +37,70 @@ io.on('connection', (socket) => { io.to(playerId).emit("join during game", networkPerson, person, indices, start, map.get(room).tab, nodes) }) - socket.on("lobby joined", (room, player) =>{ - if (lastSocketJoined != player.id){ - lastSocketJoined=player.id - const game = map.get(room) - if (game !== undefined){ - if (game.tab.length == 6 && !game.started){ - io.to(socket.id).emit("room full") - return - } - if (game.started){ - for(const u of game.tab){ - if(u.type !== "User" && u.pseudo===player.pseudo){ - u.type = "User" - u.id=socket.id - io.to(game.tab[game.actualPlayer].id).emit("give network", socket.id) - io.to(room).emit("player joined ingame", game.tab) - socket.join(room) - return + socket.on("join back game", (player) => { + for (const k of map.keys()){ + const tab = map.get(k) + for (let i = 0; i{ + + const game = map.get(room) + if (game !== undefined){ + if (game.tab.length == 6 && !game.started){ + io.to(socket.id).emit("room full") + return } - - - if (game == undefined){ - map.set(room, {tab: [{type: player.type, id: socket.id, pseudo: player.pseudo, profilePicture: player.profilePicture}], started: false, actualPlayer: 0, lastWorks: false}) - socket.join(room) - } - else{ - const tab = game.tab - for(let i = 0; i ({ key, value })) - const playerJson = JSON.stringify(playerArray); - io.emit("request lobbies", playerJson) + + if (player.type!=="User"){ + tab.push({type: player.type, id: player.id, pseudo: player.pseudo, profilePicture: player.profilePicture}) + } + else{ + tab.push({type: player.type, id: socket.id, pseudo: player.pseudo, profilePicture: player.profilePicture}) + socket.join(room) + } } + io.to(room).emit("new player", map.get(room)) + const playerArray = Array.from(map.entries()).map(([key, value]) => ({ key, value })) + const playerJson = JSON.stringify(playerArray); + io.emit("request lobbies", playerJson) + }) socket.on("request lobbies", () => { diff --git a/cryptide_project/src/Pages/Lobbies.tsx b/cryptide_project/src/Pages/Lobbies.tsx index 58895a6..1635e34 100644 --- a/cryptide_project/src/Pages/Lobbies.tsx +++ b/cryptide_project/src/Pages/Lobbies.tsx @@ -10,6 +10,7 @@ import User from '../model/User'; import { socket } from '../SocketConfig'; import JSONParser from '../JSONParser'; import Person from '../model/Person'; +import { useNavigationType } from 'react-router-dom'; class LobbyDataProps { @@ -26,6 +27,8 @@ class LobbyDataProps { } } +let cptNavigation = 0 + function Lobbies() { const theme=useTheme(); @@ -46,6 +49,14 @@ function Lobbies() { setFirst(first) } + const navigationType = useNavigationType() + cptNavigation++ + if (cptNavigation % 2 == 0){ + if (navigationType.toString() == "POP"){ + socket.emit("player quit") + } + } + if (first){ setFirst(false) socket.emit("request lobbies") diff --git a/cryptide_project/src/Pages/Play.tsx b/cryptide_project/src/Pages/Play.tsx index a0fc893..d5df326 100644 --- a/cryptide_project/src/Pages/Play.tsx +++ b/cryptide_project/src/Pages/Play.tsx @@ -108,6 +108,7 @@ function Play() { if (loggedIn){ login() setUserData(user) + socket.emit("join back game", user) } else{ loadImageAsync(defaultImg).then((blob) => { @@ -120,6 +121,14 @@ function Play() { } }, [isLoggedIn]); + const [goBackRoom, setGoBackRoom] = useState(-1) + + useEffect(() => { + socket.on("join back game", (room) => { + setGoBackRoom(room) + }) + }, []) + const [room, setRoom] = useState(null); const navigate = useNavigate(); @@ -169,6 +178,10 @@ function Play() { } }, [room, navigate]); + const goBack = () => { + navigate("/lobby?room=" + goBackRoom) + } + const [showOverlay, setShowOverlay] = useState(false); @@ -259,7 +272,7 @@ function Play() { - + {goBackRoom != -1 && }
diff --git a/cryptide_project/src/server/db/socialgraph.db b/cryptide_project/src/server/db/socialgraph.db index 4205e72d8b162b8e02877ac7b39e8c4079e50cb9..31dfec45cc4a867532bdcd445b8defef9b9069c5 100644 GIT binary patch delta 89 zcmZp8z}WDBae_2s&O{k!#+;1_3*&kDpEB_BS2FN_=YPjvxtT8^n_ozPm5qUslbw;t i{s99Ra8B;dkCFy5Ie`Eu!@|bE!NI}E!Ojd}umb=g8xa5i delta 73 zcmZp8z}WDBae_2s)C(QPS+J ZYz&;7oQ$08ENl!M92|@s?931bI{+e-5Lo~K