From 06c5ebb095b70a382fed42d638c74923b5914668 Mon Sep 17 00:00:00 2001 From: luca0N! Date: Tue, 5 Jan 2021 12:53:37 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20na=20troca=20de=20op=C3=A7?= =?UTF-8?q?=C3=B5es=20de=20jogador=20e=20sala?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- index.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index bedb272..3aee6e4 100644 --- a/index.js +++ b/index.js @@ -51,7 +51,7 @@ console.log('Disponível.'); wss.on('connection', ws => { //var end = ws._socket.remoteAddress; 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); let aguardandoEntrada = true; @@ -172,7 +172,7 @@ wss.on('connection', ws => { salas[salaNum].clientes.push(cliente); salaObj = salas[salaNum]; } 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']; salas.push(salaNova); @@ -504,8 +504,9 @@ wss.on('connection', ws => { } case "ALTERAR_OPÇÃO":{ let opção = resposta.extra.opção, - valor = resposta.extra.valor; - if (opção === undefined || valor === undefined){ + valor = resposta.extra.valor, + 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"}))); break; } @@ -606,7 +607,8 @@ function removerCliente(cliente, motivo){ // Remover o jogador das filas geradas. sala.jfr.splice(sala.jfr.indexOf(cliente.apelido), 1); - sala.jf.splice(sala.jf.indexOf(cliente.apelido), 1); + if (sala.jf !== undefined) + sala.jf.splice(sala.jf.indexOf(cliente.apelido), 1); // Este jogador havia escolhido a palavra atual? if (sala.clientes.length !== 1 && sala.vezDe === cliente.apelido){ @@ -662,9 +664,15 @@ function alertarClientesEvento(evento, salaNome, extra){ return; let msgFiltrada = null; + let ogMsg; + if (extra !== undefined) + ogMsg = extra.mensagem; for (let x = 0; x < sala.clientes.length; x++){ let e = extra; + if (e !== undefined) + e.mensagem = ogMsg; + if (e !== undefined && e.mensagem !== undefined){ // Evitar problemas de formatação com colchetes. e.mensagem = e.mensagem.replace(/\[/g, "\\[")