🚧 classic matchmaking first implementation
continuous-integration/drone/push Build is passing Details

v1.01
Vincent ASTOLFI 9 months ago
parent 4fff86549b
commit 455f93f636

@ -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);

@ -101,4 +101,4 @@ class Room {
module.exports = {
Room,
}
}

@ -55,6 +55,10 @@
Join room
</button>
<button class="btn-primary" id="joinQueue" type="submit">
Join matchmaking
</button>
<div id="errorHandler"></div>
</div>

@ -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();

Loading…
Cancel
Save