diff --git a/public/js/htmlTmpl.js b/public/js/htmlTmpl.js
index e6f9c9e..76c2569 100644
--- a/public/js/htmlTmpl.js
+++ b/public/js/htmlTmpl.js
@@ -25,3 +25,18 @@ export const cardGameGeneral = (nickname, game_id,unirsePartidaCallback) => {
});
return cardGameDiv;
};
+
+export const cardGameEnCurso = (partida,entrarEnPartidaCallBack) => {
+ var cardGameDiv = document.createElement('div');
+ cardGameDiv.classList.add('cardGame');
+ cardGameDiv.innerHTML = `${partida.nickJugadorA}
+ vs
+ ${partida.nickJugadorB}
+
+ `;
+ const enterGameBtn = cardGameDiv.querySelector('.enter-game-btn');
+ enterGameBtn.addEventListener('click', () => {
+ entrarEnPartidaCallBack(partida.uuid);
+ });
+ return cardGameDiv;
+};
\ No newline at end of file
diff --git a/public/js/salaespera.js b/public/js/salaespera.js
index 44a848a..c0e9f89 100644
--- a/public/js/salaespera.js
+++ b/public/js/salaespera.js
@@ -1,6 +1,10 @@
import { ListaUsuarios } from './listausuarios.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 usersDisconnectUlEl = document.querySelector('#users_disconnect');
@@ -61,10 +65,15 @@ function generarElementoListaPartida(partida) {
return cardGame;
}
// Función para actualizar la lista de partidas abiertas
-function actualizarListaPartidasAbiertas() {
+function actualizarListaPartidas() {
partidasAbiertasEl.innerHTML = '';
partidasProcesoEl.innerHTML = '';
+ listaPartidasEnCurso.partidas.forEach((partida) => {
+ const cardGame = cardGameEnCurso(partida,onClickEntrarEnPartida);
+ partidasProcesoEl.appendChild(cardGame);
+ });
+
listaPartidasAbiertas.partidas.forEach((partida) => {
const cardGame = generarElementoListaPartida(partida);
userId === partida.uuidJugadorA || userId === partida.uuidJugadorB
@@ -105,11 +114,12 @@ function agregarMensajeDeTransmisionAlChat(msg) {
}
const handlers = {
- onConnectRoom: ({ usuarios, partidas }) => {
+ onConnectRoom: ({ usuarios, partidas, partidasEnCurso }) => {
listaUsuarios = new ListaUsuarios(userId, usuarios);
listaPartidasAbiertas = new ListaPartidas(partidas);
+ listaPartidasEnCurso = new ListaPartidas(partidasEnCurso);
actualizarListaUsuarios();
- actualizarListaPartidasAbiertas();
+ actualizarListaPartidas();
},
onUserChangeStatus: (usuario) => {
listaUsuarios.actualizaUsuario(usuario);
@@ -124,15 +134,18 @@ const handlers = {
},
onCreatePartida: (partida) => {
listaPartidasAbiertas.agregarPartida(partida);
- actualizarListaPartidasAbiertas();
+ actualizarListaPartidas();
},
- onJoinPartida: (uuid) => {
- listaPartidasAbiertas.eliminarPartida(uuid);
- actualizarListaPartidasAbiertas();
+ onJoinPartida: (partida) => {
+ listaPartidasAbiertas.eliminarPartida(partida.uuid);
+ if (partida.uuidJugadorA === userId || partida.uuidJugadorB === userId) {
+ listaPartidasEnCurso.agregarPartida(partida);
+ }
+ actualizarListaPartidas();
},
onCancelPartida: (uuid) => {
listaPartidasAbiertas.eliminarPartida(uuid);
- actualizarListaPartidasAbiertas();
+ actualizarListaPartidas();
},
disconnect: (reason) => {
if (reason === 'io server disconnect' || reason === 'buttonClick') {
@@ -146,8 +159,6 @@ Object.entries(handlers).forEach(([event, handler]) => {
socket.on(event, handler);
});
-
-
document.querySelector('#btnCerrar').addEventListener('click', () => {
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) {
socket.emit('cancelPartida', game_id, handlers.onCancelPartida);
}
function onClickUnirsePartida(game_id) {
socket.emit('joinPartida', game_id, handlers.onJoinPartida);
}
+function onClickEntrarEnPartida(game_id) {
+ const url = '/batalla.html?game_id=' + encodeURIComponent(game_id);
+ window.open(url, '_blank');
+}
diff --git a/src/batalla/batalla.module.ts b/src/batalla/batalla.module.ts
index f4e6f17..54fbac5 100644
--- a/src/batalla/batalla.module.ts
+++ b/src/batalla/batalla.module.ts
@@ -1,8 +1,10 @@
import { Module } from '@nestjs/common';
import { BatallaService } from './batalla.service';
import { BatallaGateway } from './batalla.gateway';
+import { SharedModule } from 'src/shared/shared.module';
@Module({
+ imports:[SharedModule],
providers: [BatallaGateway, BatallaService],
})
export class BatallaModule {}
diff --git a/src/batalla/batalla.service.ts b/src/batalla/batalla.service.ts
index 95a5c21..300cbf4 100644
--- a/src/batalla/batalla.service.ts
+++ b/src/batalla/batalla.service.ts
@@ -1,4 +1,11 @@
import { Injectable } from '@nestjs/common';
+import { PartidasService } from 'src/shared/partidas.service';
+import { UsuariosService } from 'src/shared/usuarios.service';
@Injectable()
-export class BatallaService {}
+export class BatallaService {
+ constructor(
+ private readonly usuariosService: UsuariosService,
+ private readonly partidasService: PartidasService,
+ ) {}
+}
diff --git a/src/battleship/battleship.ts b/src/battleship/battleship.ts
index ec169b6..c74c83c 100644
--- a/src/battleship/battleship.ts
+++ b/src/battleship/battleship.ts
@@ -1,23 +1,21 @@
import Jugador from './jugador';
-export default class BattleshipGame{
- public jugadorA: Jugador;
- public jugadorB: Jugador;
-
- turnoActual: Jugador | null;
-
- constructor(
- public idPartida: string,
- ) {
+export default class BattleshipGame {
+ public jugadorA: Jugador | null = null;
+ public jugadorB: Jugador | null = null;
+
+ turnoActual: Jugador | null;
+
+ constructor(public idPartida: string) {
this.turnoActual = null;
}
- setJugadorA(jugador:Jugador){
- this.jugadorA=jugador;
+ setJugadorA(jugador: Jugador) {
+ this.jugadorA = jugador;
}
- setJugadorB(jugador:Jugador){
- this.jugadorB=jugador;
+ setJugadorB(jugador: Jugador) {
+ this.jugadorB = jugador;
}
iniciaPartida() {
diff --git a/src/sala-chat/sala-chat.gateway.ts b/src/sala-chat/sala-chat.gateway.ts
index d6fe50a..ae2c2da 100644
--- a/src/sala-chat/sala-chat.gateway.ts
+++ b/src/sala-chat/sala-chat.gateway.ts
@@ -27,7 +27,7 @@ export class SalaChatGateway
client.emit('onConnectRoom', {
usuarios: this.salaChatService.listaUsuarios,
partidas: this.salaChatService.partidasAbiertas,
- partidasEnCurso: '',
+ partidasEnCurso: this.salaChatService.getPartidasEnCurso(userId),
});
client.broadcast
.to('chat_general')
@@ -88,8 +88,8 @@ export class SalaChatGateway
handleJoinPartida(client: Socket, uuidPartida: string) {
const userId = client.handshake.auth.userId;
const partida = this.salaChatService.unirsePartida(userId, uuidPartida);
-
- client.broadcast.to('chat_general').emit('onJoinPartida', partida.uuid);
- return partida.uuid;
+ client.broadcast.to('chat_general').emit('onJoinPartida', partida);
+ return partida;
}
+
}
diff --git a/src/sala-chat/sala-chat.service.ts b/src/sala-chat/sala-chat.service.ts
index 1ef1b0e..0daaeca 100644
--- a/src/sala-chat/sala-chat.service.ts
+++ b/src/sala-chat/sala-chat.service.ts
@@ -13,29 +13,31 @@ export class SalaChatService {
return Array.from(this.usuariosService.usuarios.values());
}
- get partidasAbiertas(){
+ get 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) {
return this.usuariosService.getUsuarioByUUID(uuid);
}
- conectaUsuarioUUID(uuid: string,socketId:string) {
+
+ conectaUsuarioUUID(uuid: string, socketId: string) {
const user = this.usuariosService.getUsuarioByUUID(uuid);
if (user) {
- user.socketId=socketId;
+ user.socketId = socketId;
user.conectado = true;
- return {
- uuid: user.uuid,
- nickname: user.nickname,
- conectado: user.conectado,
- };
+ return user;
} else {
return undefined;
}
}
+
desconectaUsuarioUUID(uuid: string) {
const user = this.usuariosService.getUsuarioByUUID(uuid);
if (user) {
@@ -54,10 +56,12 @@ export class SalaChatService {
const partida = this.partidasService.creaPartida(uuidJugadorCreador);
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);
}
}