68 lines
1.8 KiB
TypeScript
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;
|
|
}
|
|
|
|
}
|