From 455f93f6360a543c13c24757203dac0d4e886af0 Mon Sep 17 00:00:00 2001 From: vincentastolfi Date: Sun, 13 Oct 2024 22:25:48 +0200 Subject: [PATCH] :construction: classic matchmaking first implementation --- index.js | 38 ++++++++++++++++++++++++++++++++++++++ models/Room.js | 2 +- public/pages/gameView.html | 4 ++++ public/scripts/app.js | 26 ++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 730dd7c..cabe52c 100644 --- a/index.js +++ b/index.js @@ -157,6 +157,7 @@ app.get('/user-info', (req, res) => { // #region socket and game +let matchmaking_stack = []; let rooms = []; let players = []; @@ -318,6 +319,43 @@ io.on("connection", (socket) => { } }); + socket.on("join matchmaking", (id, callback) => { + try { + let player = players.find((p) => p.id === id) + + if (matchmaking_stack.length > 0) { + let room = matchmaking_stack.pop(); + room.addPlayer(player); + + callback({ + status: true, + roomId: room.id, + }) + + rooms.push(room) + room.validBoards(); + for (let i = 0; i < room.players.length; i++) { + io.to(room.players[i].id).emit("start game") + } + askToPlay(room.start()); + } else { + let room = new Room(); + room.addPlayer(player); + matchmaking_stack.push(room); + callback({ + status: true, + roomId: room.id, + }) + } + } catch (e) { + console.log(e); + callback({ + status: false, + reason: "exception", + }) + } + }) + socket.on("play", (roomId, id, move, callback) => { let room = rooms.find((r) => r.id === roomId); diff --git a/models/Room.js b/models/Room.js index bfd4622..43cac6a 100644 --- a/models/Room.js +++ b/models/Room.js @@ -101,4 +101,4 @@ class Room { module.exports = { Room, -} \ No newline at end of file +} diff --git a/public/pages/gameView.html b/public/pages/gameView.html index 67684ae..88d3d3e 100644 --- a/public/pages/gameView.html +++ b/public/pages/gameView.html @@ -55,6 +55,10 @@ Join room + +
diff --git a/public/scripts/app.js b/public/scripts/app.js index 0395332..1cc7b3d 100644 --- a/public/scripts/app.js +++ b/public/scripts/app.js @@ -15,6 +15,9 @@ socket.on("connect", () => { document .querySelector("#join") .addEventListener("click", onJoinRoom()); + document + .querySelector("#joinQueue") + .addEventListener("click", onJoinQueue()); }) @@ -179,6 +182,29 @@ function onCreateRoom() { return handler; } +function onJoinQueue() { + const handler = function(event) { + event.preventDefault(); + + const loader = document.querySelector("#loader"); + const errorHolder = document.querySelector("#errorHandler") + + socket.emit("join matchmaking", socket.id, (response) => { + if (response.status !== true) { + if (response.reason === "exception") { + handleError() + } + errorHolder.textContent = "Error : " + response.message + } else { + roomId = response.roomId; + loader.style.display = "none" + } + }); + } + + return handler; +} + function onJoinRoom() { const handler = function (event) { event.preventDefault();