From c7328b74503852580de664172df46aac38395d1f Mon Sep 17 00:00:00 2001 From: vincentastolfi Date: Wed, 5 Jun 2024 18:02:53 +0200 Subject: [PATCH] :green_heart: New CD test --- Dockerfile | 8 +- app.js | 227 ++++++++++++++++++++-------------------- docker-compose.yml | 13 +++ index.js | 2 + public/assets/style.css | 13 +++ 5 files changed, 148 insertions(+), 115 deletions(-) create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile index fd3b152..ab2db74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ -FROM node:latest +FROM node:16 WORKDIR /usr/src/app -COPY ./ ./ -RUN sed -i '1i\' ./public/index.html +COPY package*.json ./ RUN npm install +COPY . . EXPOSE 8081 -CMD [ "node", "index.js" ] +CMD ["node", "index.js"] \ No newline at end of file diff --git a/app.js b/app.js index 41658d2..8b38ee7 100644 --- a/app.js +++ b/app.js @@ -4,127 +4,132 @@ const { Player } = require(`${__dirname}/businesses/Player.js`); let rooms = []; let players = []; -io.on("connection", (socket) => { - console.log("New connected : ", socket.id); +console.log("test") - socket.on("disconnect", () => { - const index = players.findIndex((p) => p.id === socket.id) - const roomIndex = rooms.findIndex(room => - room.players.some(player => player.id === socket.id) - ); - - if (roomIndex !== -1) { - const room = rooms[roomIndex]; - const opponent = room.players.find(player => player.id !== socket.id); - const inRoomIndex = room.players.findIndex(player => player.id === socket.id); - - if (opponent) { - io.to(opponent.id).emit('opponent left'); - } - - room.players.splice(inRoomIndex, 1) +module.exports = function(io) { - if (room.players.length === 0) { - rooms.splice(roomIndex, 1); + io.on("connection", (socket) => { + console.log("New connected : ", socket.id); + + socket.on("disconnect", () => { + const index = players.findIndex((p) => p.id === socket.id) + const roomIndex = rooms.findIndex(room => + room.players.some(player => player.id === socket.id) + ); + + if (roomIndex !== -1) { + const room = rooms[roomIndex]; + const opponent = room.players.find(player => player.id !== socket.id); + const inRoomIndex = room.players.findIndex(player => player.id === socket.id); + + if (opponent) { + io.to(opponent.id).emit('opponent left'); + } + + room.players.splice(inRoomIndex, 1) + + if (room.players.length === 0) { + rooms.splice(roomIndex, 1); + } } - } - - players.splice(index, 1) - - console.log(`Player disconnected: ${socket.id}`); - }) - - socket.on("first connection", (socketId) => { - let player = new Player(socketId); - players.push(player); - }); - - socket.on("Hello", (callback) => { - callback({ - Hello: "World", + + players.splice(index, 1) + + console.log(`Player disconnected: ${socket.id}`); + }) + + socket.on("first connection", (socketId) => { + let player = new Player(socketId); + players.push(player); }); - }); - - socket.on("room creation", (id, callback) => { - let room = new Room(); - room.addPlayer(players.find((p) => p.id === id)); - rooms.push(room); - - callback({ - roomId: room.id, + + socket.on("Hello", (callback) => { + callback({ + Hello: "World", + }); }); - }); - - socket.on("ask for room", (roomId, id) => { - let room = rooms.find((r) => r.id === roomId); - - room.addPlayer(players.find((p) => p.id === id)); - room.validBoards(); - - room.players.forEach((player) => { - io.to(player.id).emit("start game"); + + socket.on("room creation", (id, callback) => { + let room = new Room(); + room.addPlayer(players.find((p) => p.id === id)); + rooms.push(room); + + callback({ + roomId: room.id, + }); }); - - room.start(); - }); - - socket.on("play", (roomId, id, move) => { - let room = rooms.find((r) => r.id === roomId); - - room.move(move); - }); - - socket.on("get player", (roomId, id, callback) => { - let out = "" - const room = rooms.find((r) => r.id === roomId) - - if (room === undefined) { - out = players.find((p) => p.id === id); - } else { - out = room.players.find((p) => p.id === id) - } - - callback({ - player: out, + + socket.on("ask for room", (roomId, id) => { + let room = rooms.find((r) => r.id === roomId); + + room.addPlayer(players.find((p) => p.id === id)); + room.validBoards(); + + room.players.forEach((player) => { + io.to(player.id).emit("start game"); + }); + + room.start(); }); - }); - - socket.on("get ennemy", (roomId, id, callack) => { - const room = rooms.find((r) => r.id === roomId); - const out = room.players.find((p) => p.id !== id); - - callack({ - player: out, + + socket.on("play", (roomId, id, move) => { + let room = rooms.find((r) => r.id === roomId); + + room.move(move); }); - }); - - socket.on("update grid", (id, grid, callback) => { - const player = players.find((p) => p.id === id); - player.grid = grid; - - callback({ - status: true, + + socket.on("get player", (roomId, id, callback) => { + let out = "" + const room = rooms.find((r) => r.id === roomId) + + if (room === undefined) { + out = players.find((p) => p.id === id); + } else { + out = room.players.find((p) => p.id === id) + } + + callback({ + player: out, + }); + }); + + socket.on("get ennemy", (roomId, id, callack) => { + const room = rooms.find((r) => r.id === roomId); + const out = room.players.find((p) => p.id !== id); + + callack({ + player: out, + }); + }); + + socket.on("update grid", (id, grid, callback) => { + const player = players.find((p) => p.id === id); + player.grid = grid; + + callback({ + status: true, + }); + }); + + socket.on("reset grid", (roomId) => { + const player = rooms.find((r) => r.id === roomId).players[0] + player.resetGrid(); + }) + + socket.on("update piece", (playerId, piece) => { + const player = players.find((p) => p.id === playerId); + const index = player.pieces.findIndex((p) => p.id === piece.id); + + player.pieces[index] = piece; + }); + + socket.on("change selection status", (playerId, pieceId, status) => { + players + .find((p) => p.id === playerId) + .pieces.find((piece) => piece.id === pieceId).isSelected = status; }); }); - - socket.on("reset grid", (roomId) => { - const player = rooms.find((r) => r.id === roomId).players[0] - player.resetGrid(); - }) - - socket.on("update piece", (playerId, piece) => { - const player = players.find((p) => p.id === playerId); - const index = player.pieces.findIndex((p) => p.id === piece.id); - - player.pieces[index] = piece; - }); - - socket.on("change selection status", (playerId, pieceId, status) => { - players - .find((p) => p.id === playerId) - .pieces.find((piece) => piece.id === pieceId).isSelected = status; - }); -}); +} const askToPlay = (game) => { io.to(game.actualPlayer).emit("play"); diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9f5e786 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3' +services: + app: + build: + context: . + dockerfile: Dockerfile + ports: + - "8081:8081" + volumes: + - .:/usr/src/app + - /usr/src/app/node_modules + environment: + - NODE_ENV=production \ No newline at end of file diff --git a/index.js b/index.js index 6be367a..72d20c0 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,8 @@ const port = 8081; app.use(express.static("public")); +require('./app')(io); + http.listen(port, () => { console.log(`Listening on http://localhost:${port}`); }); diff --git a/public/assets/style.css b/public/assets/style.css index f444e6e..09b8cb0 100644 --- a/public/assets/style.css +++ b/public/assets/style.css @@ -21,6 +21,19 @@ background-color: rgba(0,0,0,0.4); } +#gameEndedModal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.4); +} + #opponentLeftModalContent { background-color: #fefefe; margin: 15% auto;