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 => {
//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, "\\[")