Kopie van https://gitlab.com/studieverenigingvia/ict/centurion met een paar aanpassingen
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
centurion/backend/src/service.js

43 lines
918 B

const User = require("./User.js");
const state = require("./state.js");
/**
*
* @param {string} socketId
* @param {number|undefined} lobbyId
* @returns {Lobby}
*/
function joinLobby(socketId, lobbyId=undefined) {
let lobby = state.getLobby(lobbyId);
if (!lobby) {
lobby = state.createRandomLobby();
}
lobby.addUser(new User(socketId));
if (!lobby.hasLeader()) {
lobby.setLeader(socketId);
}
state.lobbies[lobby.name] = lobby;
return lobby;
}
function leaveLobby(socketId) {
Object.keys(state.lobbies).forEach(lobbyId => {
const lobby = state.getLobby(lobbyId);
lobby.removeUser(socketId);
if (!lobby.hasUsers()) {
state.removeLobby(lobbyId);
return;
}
if (lobby.getLeader() === socketId) {
lobby.setRandomLeader();
}
});
}
module.exports = {joinLobby, leaveLobby};