Add GameId, GameCode and Players
parent
74eadacdb2
commit
d9eafeb71a
|
|
@ -16,7 +16,8 @@
|
||||||
"@nestjs/websockets": "^10.4.7",
|
"@nestjs/websockets": "^10.4.7",
|
||||||
"interface": "file:../interface",
|
"interface": "file:../interface",
|
||||||
"reflect-metadata": "^0.2.0",
|
"reflect-metadata": "^0.2.0",
|
||||||
"rxjs": "^7.8.1"
|
"rxjs": "^7.8.1",
|
||||||
|
"uuid": "^11.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nestjs/cli": "^10.0.0",
|
"@nestjs/cli": "^10.0.0",
|
||||||
|
|
@ -8948,6 +8949,19 @@
|
||||||
"node": ">= 0.4.0"
|
"node": ">= 0.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/uuid": {
|
||||||
|
"version": "11.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
|
||||||
|
"integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/sponsors/broofa",
|
||||||
|
"https://github.com/sponsors/ctavan"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"uuid": "dist/esm/bin/uuid"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/v8-compile-cache-lib": {
|
"node_modules/v8-compile-cache-lib": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,8 @@
|
||||||
"@nestjs/websockets": "^10.4.7",
|
"@nestjs/websockets": "^10.4.7",
|
||||||
"interface": "file:../interface",
|
"interface": "file:../interface",
|
||||||
"reflect-metadata": "^0.2.0",
|
"reflect-metadata": "^0.2.0",
|
||||||
"rxjs": "^7.8.1"
|
"rxjs": "^7.8.1",
|
||||||
|
"uuid": "^11.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nestjs/cli": "^10.0.0",
|
"@nestjs/cli": "^10.0.0",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { AppService } from './app.service';
|
import { AppService } from './app.service';
|
||||||
import { PlayerService } from './players/player.service';
|
import { PlayerService } from './players/player.service';
|
||||||
|
import { GameService } from './games/game.service';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [],
|
imports: [],
|
||||||
providers: [AppService, PlayerService],
|
providers: [AppService, PlayerService, GameService],
|
||||||
})
|
})
|
||||||
export class AppModule {}
|
export class AppModule {}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import {
|
||||||
WebSocketGateway,
|
WebSocketGateway,
|
||||||
} from '@nestjs/websockets';
|
} from '@nestjs/websockets';
|
||||||
import { PlayerService } from './players/player.service';
|
import { PlayerService } from './players/player.service';
|
||||||
|
import { GameService } from 'src/games/game.service';
|
||||||
import { Socket } from 'socket.io';
|
import { Socket } from 'socket.io';
|
||||||
import { ClientEvent, CreateLobbyEvent, JoinLobbyEvent } from 'interface';
|
import { ClientEvent, CreateLobbyEvent, JoinLobbyEvent } from 'interface';
|
||||||
|
|
||||||
|
|
@ -15,10 +16,12 @@ import { ClientEvent, CreateLobbyEvent, JoinLobbyEvent } from 'interface';
|
||||||
export class AppService implements OnGatewayConnection {
|
export class AppService implements OnGatewayConnection {
|
||||||
private readonly logger = new Logger(AppService.name);
|
private readonly logger = new Logger(AppService.name);
|
||||||
|
|
||||||
constructor(private readonly playerService: PlayerService) {}
|
constructor(
|
||||||
|
private readonly playerService: PlayerService,
|
||||||
|
private readonly gameService: GameService,
|
||||||
|
) {}
|
||||||
handleConnection(client: Socket) {
|
handleConnection(client: Socket) {
|
||||||
this.playerService.createPlayer(client.id);
|
this.playerService.createPlayer(client.id);
|
||||||
this.logger.log(client.id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeMessage(ClientEvent.CREATE_LOBBY)
|
@SubscribeMessage(ClientEvent.CREATE_LOBBY)
|
||||||
|
|
@ -27,6 +30,7 @@ export class AppService implements OnGatewayConnection {
|
||||||
@MessageBody() event: CreateLobbyEvent,
|
@MessageBody() event: CreateLobbyEvent,
|
||||||
) {
|
) {
|
||||||
this.playerService.addUserName(client.id, event.userName);
|
this.playerService.addUserName(client.id, event.userName);
|
||||||
|
this.gameService.createLobby(this.playerService.getPlayer(client.id));
|
||||||
this.logger.log('Se ha creado un lobby');
|
this.logger.log('Se ha creado un lobby');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
import { Game } from './game';
|
||||||
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
import { Player } from 'src/players/player';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class GameService {
|
||||||
|
private readonly logger = new Logger(GameService.name);
|
||||||
|
private readonly games: Map<string, Game> = new Map();
|
||||||
|
|
||||||
|
createLobby(player: Player) {
|
||||||
|
const gameId = uuidv4();
|
||||||
|
const gameCode = uuidv4().slice(-5).toUpperCase();
|
||||||
|
const game: Game = new Game(gameId, gameCode, player);
|
||||||
|
this.games.set(gameId, game);
|
||||||
|
this.logger.log([...this.games.entries()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { Player } from 'src/players/player';
|
||||||
|
|
||||||
|
export class Game {
|
||||||
|
gameId: string;
|
||||||
|
gameCode: string;
|
||||||
|
players: Set<Player>;
|
||||||
|
constructor(gameId: string, gameCode: string, player: Player) {
|
||||||
|
this.gameId = gameId;
|
||||||
|
this.gameCode = gameCode;
|
||||||
|
this.players = new Set([player]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,11 +9,14 @@ export class PlayerService {
|
||||||
createPlayer(socketId: string) {
|
createPlayer(socketId: string) {
|
||||||
const player: Player = new Player(socketId);
|
const player: Player = new Player(socketId);
|
||||||
this.players.set(socketId, player);
|
this.players.set(socketId, player);
|
||||||
this.logger.log([...this.players.entries()]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
addUserName(socketId: string, userName: string) {
|
addUserName(socketId: string, userName: string) {
|
||||||
this.players.get(socketId).userName = userName;
|
this.players.get(socketId).userName = userName;
|
||||||
this.logger.log([...this.players.entries()]);
|
}
|
||||||
|
|
||||||
|
getPlayer(socketId: string) {
|
||||||
|
this.logger.log(this.players.get(socketId).userName);
|
||||||
|
return this.players.get(socketId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue