implementadas las batallas
This commit is contained in:
parent
7f60c7651a
commit
3444bc59ed
|
|
@ -25,3 +25,18 @@ export const cardGameGeneral = (nickname, game_id,unirsePartidaCallback) => {
|
||||||
});
|
});
|
||||||
return cardGameDiv;
|
return cardGameDiv;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const cardGameEnCurso = (partida,entrarEnPartidaCallBack) => {
|
||||||
|
var cardGameDiv = document.createElement('div');
|
||||||
|
cardGameDiv.classList.add('cardGame');
|
||||||
|
cardGameDiv.innerHTML = `<span>${partida.nickJugadorA}</span>
|
||||||
|
<span class=""> vs </span>
|
||||||
|
<span class=""> ${partida.nickJugadorB} </span>
|
||||||
|
<button class="enter-game-btn button button-blue">Ingresar</button>
|
||||||
|
`;
|
||||||
|
const enterGameBtn = cardGameDiv.querySelector('.enter-game-btn');
|
||||||
|
enterGameBtn.addEventListener('click', () => {
|
||||||
|
entrarEnPartidaCallBack(partida.uuid);
|
||||||
|
});
|
||||||
|
return cardGameDiv;
|
||||||
|
};
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
import { ListaUsuarios } from './listausuarios.js';
|
import { ListaUsuarios } from './listausuarios.js';
|
||||||
import { ListaPartidas } from './listapartidas.js';
|
import { ListaPartidas } from './listapartidas.js';
|
||||||
import { cardGamePropia, cardGameGeneral } from './htmlTmpl.js';
|
import {
|
||||||
|
cardGamePropia,
|
||||||
|
cardGameGeneral,
|
||||||
|
cardGameEnCurso,
|
||||||
|
} from './htmlTmpl.js';
|
||||||
|
|
||||||
const usersConnectUlEl = document.querySelector('#users_connect');
|
const usersConnectUlEl = document.querySelector('#users_connect');
|
||||||
const usersDisconnectUlEl = document.querySelector('#users_disconnect');
|
const usersDisconnectUlEl = document.querySelector('#users_disconnect');
|
||||||
|
|
@ -61,10 +65,15 @@ function generarElementoListaPartida(partida) {
|
||||||
return cardGame;
|
return cardGame;
|
||||||
}
|
}
|
||||||
// Función para actualizar la lista de partidas abiertas
|
// Función para actualizar la lista de partidas abiertas
|
||||||
function actualizarListaPartidasAbiertas() {
|
function actualizarListaPartidas() {
|
||||||
partidasAbiertasEl.innerHTML = '<legend>Partidas abiertas</legend>';
|
partidasAbiertasEl.innerHTML = '<legend>Partidas abiertas</legend>';
|
||||||
partidasProcesoEl.innerHTML = '<legend>Tus partidas</legend>';
|
partidasProcesoEl.innerHTML = '<legend>Tus partidas</legend>';
|
||||||
|
|
||||||
|
listaPartidasEnCurso.partidas.forEach((partida) => {
|
||||||
|
const cardGame = cardGameEnCurso(partida,onClickEntrarEnPartida);
|
||||||
|
partidasProcesoEl.appendChild(cardGame);
|
||||||
|
});
|
||||||
|
|
||||||
listaPartidasAbiertas.partidas.forEach((partida) => {
|
listaPartidasAbiertas.partidas.forEach((partida) => {
|
||||||
const cardGame = generarElementoListaPartida(partida);
|
const cardGame = generarElementoListaPartida(partida);
|
||||||
userId === partida.uuidJugadorA || userId === partida.uuidJugadorB
|
userId === partida.uuidJugadorA || userId === partida.uuidJugadorB
|
||||||
|
|
@ -105,11 +114,12 @@ function agregarMensajeDeTransmisionAlChat(msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const handlers = {
|
const handlers = {
|
||||||
onConnectRoom: ({ usuarios, partidas }) => {
|
onConnectRoom: ({ usuarios, partidas, partidasEnCurso }) => {
|
||||||
listaUsuarios = new ListaUsuarios(userId, usuarios);
|
listaUsuarios = new ListaUsuarios(userId, usuarios);
|
||||||
listaPartidasAbiertas = new ListaPartidas(partidas);
|
listaPartidasAbiertas = new ListaPartidas(partidas);
|
||||||
|
listaPartidasEnCurso = new ListaPartidas(partidasEnCurso);
|
||||||
actualizarListaUsuarios();
|
actualizarListaUsuarios();
|
||||||
actualizarListaPartidasAbiertas();
|
actualizarListaPartidas();
|
||||||
},
|
},
|
||||||
onUserChangeStatus: (usuario) => {
|
onUserChangeStatus: (usuario) => {
|
||||||
listaUsuarios.actualizaUsuario(usuario);
|
listaUsuarios.actualizaUsuario(usuario);
|
||||||
|
|
@ -124,15 +134,18 @@ const handlers = {
|
||||||
},
|
},
|
||||||
onCreatePartida: (partida) => {
|
onCreatePartida: (partida) => {
|
||||||
listaPartidasAbiertas.agregarPartida(partida);
|
listaPartidasAbiertas.agregarPartida(partida);
|
||||||
actualizarListaPartidasAbiertas();
|
actualizarListaPartidas();
|
||||||
},
|
},
|
||||||
onJoinPartida: (uuid) => {
|
onJoinPartida: (partida) => {
|
||||||
listaPartidasAbiertas.eliminarPartida(uuid);
|
listaPartidasAbiertas.eliminarPartida(partida.uuid);
|
||||||
actualizarListaPartidasAbiertas();
|
if (partida.uuidJugadorA === userId || partida.uuidJugadorB === userId) {
|
||||||
|
listaPartidasEnCurso.agregarPartida(partida);
|
||||||
|
}
|
||||||
|
actualizarListaPartidas();
|
||||||
},
|
},
|
||||||
onCancelPartida: (uuid) => {
|
onCancelPartida: (uuid) => {
|
||||||
listaPartidasAbiertas.eliminarPartida(uuid);
|
listaPartidasAbiertas.eliminarPartida(uuid);
|
||||||
actualizarListaPartidasAbiertas();
|
actualizarListaPartidas();
|
||||||
},
|
},
|
||||||
disconnect: (reason) => {
|
disconnect: (reason) => {
|
||||||
if (reason === 'io server disconnect' || reason === 'buttonClick') {
|
if (reason === 'io server disconnect' || reason === 'buttonClick') {
|
||||||
|
|
@ -146,8 +159,6 @@ Object.entries(handlers).forEach(([event, handler]) => {
|
||||||
socket.on(event, handler);
|
socket.on(event, handler);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
document.querySelector('#btnCerrar').addEventListener('click', () => {
|
document.querySelector('#btnCerrar').addEventListener('click', () => {
|
||||||
handlers.disconnect('buttonClick');
|
handlers.disconnect('buttonClick');
|
||||||
});
|
});
|
||||||
|
|
@ -166,12 +177,13 @@ document.querySelector('#chatinput').addEventListener('keyup', (event) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// // const url = '/batalla.html?game_id=' + encodeURIComponent(partida.uuid);
|
|
||||||
// // window.open(url, '_blank');
|
|
||||||
|
|
||||||
function onClickEliminarPartida(game_id) {
|
function onClickEliminarPartida(game_id) {
|
||||||
socket.emit('cancelPartida', game_id, handlers.onCancelPartida);
|
socket.emit('cancelPartida', game_id, handlers.onCancelPartida);
|
||||||
}
|
}
|
||||||
function onClickUnirsePartida(game_id) {
|
function onClickUnirsePartida(game_id) {
|
||||||
socket.emit('joinPartida', game_id, handlers.onJoinPartida);
|
socket.emit('joinPartida', game_id, handlers.onJoinPartida);
|
||||||
}
|
}
|
||||||
|
function onClickEntrarEnPartida(game_id) {
|
||||||
|
const url = '/batalla.html?game_id=' + encodeURIComponent(game_id);
|
||||||
|
window.open(url, '_blank');
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { BatallaService } from './batalla.service';
|
import { BatallaService } from './batalla.service';
|
||||||
import { BatallaGateway } from './batalla.gateway';
|
import { BatallaGateway } from './batalla.gateway';
|
||||||
|
import { SharedModule } from 'src/shared/shared.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
|
imports:[SharedModule],
|
||||||
providers: [BatallaGateway, BatallaService],
|
providers: [BatallaGateway, BatallaService],
|
||||||
})
|
})
|
||||||
export class BatallaModule {}
|
export class BatallaModule {}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,11 @@
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { PartidasService } from 'src/shared/partidas.service';
|
||||||
|
import { UsuariosService } from 'src/shared/usuarios.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class BatallaService {}
|
export class BatallaService {
|
||||||
|
constructor(
|
||||||
|
private readonly usuariosService: UsuariosService,
|
||||||
|
private readonly partidasService: PartidasService,
|
||||||
|
) {}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,21 @@
|
||||||
import Jugador from './jugador';
|
import Jugador from './jugador';
|
||||||
|
|
||||||
export default class BattleshipGame{
|
export default class BattleshipGame {
|
||||||
public jugadorA: Jugador;
|
public jugadorA: Jugador | null = null;
|
||||||
public jugadorB: Jugador;
|
public jugadorB: Jugador | null = null;
|
||||||
|
|
||||||
turnoActual: Jugador | null;
|
turnoActual: Jugador | null;
|
||||||
|
|
||||||
constructor(
|
constructor(public idPartida: string) {
|
||||||
public idPartida: string,
|
|
||||||
) {
|
|
||||||
this.turnoActual = null;
|
this.turnoActual = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
setJugadorA(jugador:Jugador){
|
setJugadorA(jugador: Jugador) {
|
||||||
this.jugadorA=jugador;
|
this.jugadorA = jugador;
|
||||||
}
|
}
|
||||||
|
|
||||||
setJugadorB(jugador:Jugador){
|
setJugadorB(jugador: Jugador) {
|
||||||
this.jugadorB=jugador;
|
this.jugadorB = jugador;
|
||||||
}
|
}
|
||||||
|
|
||||||
iniciaPartida() {
|
iniciaPartida() {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ export class SalaChatGateway
|
||||||
client.emit('onConnectRoom', {
|
client.emit('onConnectRoom', {
|
||||||
usuarios: this.salaChatService.listaUsuarios,
|
usuarios: this.salaChatService.listaUsuarios,
|
||||||
partidas: this.salaChatService.partidasAbiertas,
|
partidas: this.salaChatService.partidasAbiertas,
|
||||||
partidasEnCurso: '',
|
partidasEnCurso: this.salaChatService.getPartidasEnCurso(userId),
|
||||||
});
|
});
|
||||||
client.broadcast
|
client.broadcast
|
||||||
.to('chat_general')
|
.to('chat_general')
|
||||||
|
|
@ -88,8 +88,8 @@ export class SalaChatGateway
|
||||||
handleJoinPartida(client: Socket, uuidPartida: string) {
|
handleJoinPartida(client: Socket, uuidPartida: string) {
|
||||||
const userId = client.handshake.auth.userId;
|
const userId = client.handshake.auth.userId;
|
||||||
const partida = this.salaChatService.unirsePartida(userId, uuidPartida);
|
const partida = this.salaChatService.unirsePartida(userId, uuidPartida);
|
||||||
|
client.broadcast.to('chat_general').emit('onJoinPartida', partida);
|
||||||
client.broadcast.to('chat_general').emit('onJoinPartida', partida.uuid);
|
return partida;
|
||||||
return partida.uuid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,29 +13,31 @@ export class SalaChatService {
|
||||||
return Array.from(this.usuariosService.usuarios.values());
|
return Array.from(this.usuariosService.usuarios.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
get partidasAbiertas(){
|
get partidasAbiertas() {
|
||||||
return this.partidasService.partidasAbiertas;
|
return this.partidasService.partidasAbiertas;
|
||||||
}
|
}
|
||||||
|
|
||||||
getPartidasEnCurso
|
getPartidasEnCurso(uuid: string) {
|
||||||
|
return this.partidasService.partidasCerradadas.filter((partida) => {
|
||||||
|
return partida.uuidJugadorA === uuid || partida.uuidJugadorB === uuid;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
getUsuarioUUID(uuid: string) {
|
getUsuarioUUID(uuid: string) {
|
||||||
return this.usuariosService.getUsuarioByUUID(uuid);
|
return this.usuariosService.getUsuarioByUUID(uuid);
|
||||||
}
|
}
|
||||||
conectaUsuarioUUID(uuid: string,socketId:string) {
|
|
||||||
|
conectaUsuarioUUID(uuid: string, socketId: string) {
|
||||||
const user = this.usuariosService.getUsuarioByUUID(uuid);
|
const user = this.usuariosService.getUsuarioByUUID(uuid);
|
||||||
if (user) {
|
if (user) {
|
||||||
user.socketId=socketId;
|
user.socketId = socketId;
|
||||||
user.conectado = true;
|
user.conectado = true;
|
||||||
return {
|
return user;
|
||||||
uuid: user.uuid,
|
|
||||||
nickname: user.nickname,
|
|
||||||
conectado: user.conectado,
|
|
||||||
};
|
|
||||||
} else {
|
} else {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
desconectaUsuarioUUID(uuid: string) {
|
desconectaUsuarioUUID(uuid: string) {
|
||||||
const user = this.usuariosService.getUsuarioByUUID(uuid);
|
const user = this.usuariosService.getUsuarioByUUID(uuid);
|
||||||
if (user) {
|
if (user) {
|
||||||
|
|
@ -54,10 +56,12 @@ export class SalaChatService {
|
||||||
const partida = this.partidasService.creaPartida(uuidJugadorCreador);
|
const partida = this.partidasService.creaPartida(uuidJugadorCreador);
|
||||||
return partida;
|
return partida;
|
||||||
}
|
}
|
||||||
unirsePartida(uuidJugadorB:string,uuidPartida:string){
|
|
||||||
return this.partidasService.unirsePartida(uuidJugadorB,uuidPartida);
|
unirsePartida(uuidJugadorB: string, uuidPartida: string) {
|
||||||
|
return this.partidasService.unirsePartida(uuidJugadorB, uuidPartida);
|
||||||
}
|
}
|
||||||
eliminarPartida(uuidJugador:string, uuidPartida:string){
|
|
||||||
return this.partidasService.eliminarPartida(uuidJugador,uuidPartida);
|
eliminarPartida(uuidJugador: string, uuidPartida: string) {
|
||||||
|
return this.partidasService.eliminarPartida(uuidJugador, uuidPartida);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user