Battleship_Server/src/shared/partidas.service.ts
2024-04-05 13:51:24 +02:00

68 lines
1.8 KiB
TypeScript

import { v4 as uuidv4 } from 'uuid';
import { Injectable } from '@nestjs/common';
import { UsuariosService } from './usuarios.service';
export class Partida {
constructor(
public uuid: string,
public uuidJugadorA: string,
public nickJugadorA: string = '',
public uuidJugadorB: string = null,
public nickJugadorB: string = null,
public abierta: boolean = true,
) {}
}
@Injectable()
export class PartidasService {
private _partidas: Map<string, Partida> = new Map<string, Partida>();
constructor(private readonly usuariosService: UsuariosService) {}
get partidasAbiertas(): Partida[] {
return Array.from(this._partidas.values()).filter(
(partida) => partida.abierta,
);
}
get partidasCerradadas(): Partida[] {
return Array.from(this._partidas.values()).filter(
(partida) => !partida.abierta,
);
}
creaPartida(uuidJugadorA: string) {
const uuid = uuidv4();
const nickJugadorA =
this.usuariosService.usuarios.get(uuidJugadorA).nickname;
const partida = new Partida(uuid, uuidJugadorA, nickJugadorA);
this._partidas.set(uuid, partida);
return partida;
}
unirsePartida(uuidJugadorB: string, uuidPartida: string){
const partida = this._partidas.get(uuidPartida);
const nickJugadorB = this.usuariosService.usuarios.get(uuidJugadorB)?.nickname;
partida.uuidJugadorB = uuidJugadorB;
partida.nickJugadorB = nickJugadorB;
partida.abierta = false;
return partida;
}
eliminarPartida(uuidJugador: string, uuidPartida: string) {
if (!this._partidas.has(uuidPartida)) {
return null;
}
const partida = this._partidas.get(uuidPartida);
if (
partida.uuidJugadorA !== uuidJugador &&
partida.uuidJugadorB !== uuidJugador
) {
return null;
}
this._partidas.delete(uuidPartida);
return uuidPartida;
}
}