Correção na troca de opções de jogador e sala

Um problema que fazia com que o servidor alterasse as opções de todos os jogadores/salas quando a opção de um fosse alterado foi corrigido.
This commit is contained in:
luca0N! 2021-01-05 12:53:37 -03:00
parent 61a6b98727
commit 06c5ebb095
Signed by: luca0N
GPG Key ID: 2E7B4655CF16D7D6
1 changed files with 13 additions and 5 deletions

View File

@ -51,7 +51,7 @@ console.log('Disponível.');
wss.on('connection', ws => { wss.on('connection', ws => {
//var end = ws._socket.remoteAddress; //var end = ws._socket.remoteAddress;
let cliente = new Cliente(ws._socket.remoteAddress, undefined, ws); let cliente = new Cliente(ws._socket.remoteAddress, undefined, ws);
cliente.opções = vars["cliente.opções.padrão"]; // Definir opções padrão cliente.opções = JSON.parse(JSON.stringify(vars["cliente.opções.padrão"])); // Definir opções padrão
console.log('Nova conexão! Fonte: ' + cliente.endereço); console.log('Nova conexão! Fonte: ' + cliente.endereço);
let aguardandoEntrada = true; let aguardandoEntrada = true;
@ -172,7 +172,7 @@ wss.on('connection', ws => {
salas[salaNum].clientes.push(cliente); salas[salaNum].clientes.push(cliente);
salaObj = salas[salaNum]; salaObj = salas[salaNum];
} else{ } else{
let salaNova = new Sala(sala, [cliente], undefined, undefined, vars["sala.opções.padrão"]); let salaNova = new Sala(sala, [cliente], undefined, undefined, JSON.parse(JSON.stringify(vars["sala.opções.padrão"])));
salaNova.pontuaçãoMeta = vars['sala.pontos.pontuaçãoMeta']; salaNova.pontuaçãoMeta = vars['sala.pontos.pontuaçãoMeta'];
salas.push(salaNova); salas.push(salaNova);
@ -504,8 +504,9 @@ wss.on('connection', ws => {
} }
case "ALTERAR_OPÇÃO":{ case "ALTERAR_OPÇÃO":{
let opção = resposta.extra.opção, let opção = resposta.extra.opção,
valor = resposta.extra.valor; valor = resposta.extra.valor,
if (opção === undefined || valor === undefined){ alvo = resposta.extra.alvo;
if (opção === undefined || valor === undefined || alvo === undefined){
ws.send(JSON.stringify(new Resposta("ERRO", "SERVIDOR", undefined, { motivo: "PARÂMETRO_FALTANDO"}))); ws.send(JSON.stringify(new Resposta("ERRO", "SERVIDOR", undefined, { motivo: "PARÂMETRO_FALTANDO"})));
break; break;
} }
@ -606,6 +607,7 @@ function removerCliente(cliente, motivo){
// Remover o jogador das filas geradas. // Remover o jogador das filas geradas.
sala.jfr.splice(sala.jfr.indexOf(cliente.apelido), 1); sala.jfr.splice(sala.jfr.indexOf(cliente.apelido), 1);
if (sala.jf !== undefined)
sala.jf.splice(sala.jf.indexOf(cliente.apelido), 1); sala.jf.splice(sala.jf.indexOf(cliente.apelido), 1);
// Este jogador havia escolhido a palavra atual? // Este jogador havia escolhido a palavra atual?
@ -662,9 +664,15 @@ function alertarClientesEvento(evento, salaNome, extra){
return; return;
let msgFiltrada = null; let msgFiltrada = null;
let ogMsg;
if (extra !== undefined)
ogMsg = extra.mensagem;
for (let x = 0; x < sala.clientes.length; x++){ for (let x = 0; x < sala.clientes.length; x++){
let e = extra; let e = extra;
if (e !== undefined)
e.mensagem = ogMsg;
if (e !== undefined && e.mensagem !== undefined){ if (e !== undefined && e.mensagem !== undefined){
// Evitar problemas de formatação com colchetes. // Evitar problemas de formatação com colchetes.
e.mensagem = e.mensagem.replace(/\[/g, "\\[") e.mensagem = e.mensagem.replace(/\[/g, "\\[")