diff --git a/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts b/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts new file mode 100644 index 0000000..56ae47e --- /dev/null +++ b/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts @@ -0,0 +1,25 @@ +import type { TickData } from "../../GameLoop"; + +export interface StartGamePort { + addPlayer(id: string): void; + startGameLoop( + roomId: string, + playerIds: string[], + onTick: (data: TickData) => void, + onGameEnd: () => void + ): void; + getRoomStartTime(roomId: string): number | undefined; +} + +export interface ReadyForGamePort { + getAllPlayers(): unknown[]; + getRoomStartTime(roomId: string): number | undefined; +} + +export interface MovePlayerPort { + movePlayer(id: string, x: number, y: number): void; +} + +export interface DisconnectPlayerPort { + removePlayer(id: string): void; +} diff --git a/apps/server/src/domains/game/application/useCases/executeDisconnectUseCase.ts b/apps/server/src/domains/game/application/useCases/executeDisconnectUseCase.ts index 20f5f30..cad9dfe 100644 --- a/apps/server/src/domains/game/application/useCases/executeDisconnectUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/executeDisconnectUseCase.ts @@ -1,10 +1,10 @@ import { protocol } from "@repo/shared"; -import { GameManager } from "@server/domains/game/GameManager"; +import type { DisconnectPlayerPort } from "../ports/gameUseCasePorts"; type EmitToAll = (event: string, payload?: unknown) => void; type ExecuteDisconnectUseCaseParams = { - gameManager: GameManager; + gameManager: DisconnectPlayerPort; playerId: string; emitToAll: EmitToAll; }; diff --git a/apps/server/src/domains/game/application/useCases/executeMovePlayerUseCase.ts b/apps/server/src/domains/game/application/useCases/executeMovePlayerUseCase.ts index cb957a3..3034194 100644 --- a/apps/server/src/domains/game/application/useCases/executeMovePlayerUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/executeMovePlayerUseCase.ts @@ -1,8 +1,8 @@ -import { GameManager } from "@server/domains/game/GameManager"; import type { playerTypes } from "@repo/shared"; +import type { MovePlayerPort } from "../ports/gameUseCasePorts"; type ExecuteMovePlayerUseCaseParams = { - gameManager: GameManager; + gameManager: MovePlayerPort; playerId: string; move: playerTypes.MovePayload; }; diff --git a/apps/server/src/domains/game/application/useCases/executeReadyForGameUseCase.ts b/apps/server/src/domains/game/application/useCases/executeReadyForGameUseCase.ts index d1cb6ad..75aec11 100644 --- a/apps/server/src/domains/game/application/useCases/executeReadyForGameUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/executeReadyForGameUseCase.ts @@ -1,12 +1,12 @@ import { protocol } from "@repo/shared"; -import { GameManager } from "@server/domains/game/GameManager"; +import type { ReadyForGamePort } from "../ports/gameUseCasePorts"; type EmitToSocket = (event: string, payload?: unknown) => void; type ExecuteReadyForGameUseCaseParams = { socketId: string; roomId?: string; - gameManager: GameManager; + gameManager: ReadyForGamePort; emitToSocket: EmitToSocket; }; diff --git a/apps/server/src/domains/game/application/useCases/executeStartGameUseCase.ts b/apps/server/src/domains/game/application/useCases/executeStartGameUseCase.ts index 760cb58..2c9a8e3 100644 --- a/apps/server/src/domains/game/application/useCases/executeStartGameUseCase.ts +++ b/apps/server/src/domains/game/application/useCases/executeStartGameUseCase.ts @@ -1,12 +1,12 @@ import { protocol, roomConsts } from "@repo/shared"; -import { GameManager } from "@server/domains/game/GameManager"; import { RoomManager } from "@server/domains/room/RoomManager"; +import type { StartGamePort } from "../ports/gameUseCasePorts"; type EmitToRoom = (roomId: string, event: string, payload?: unknown) => void; type ExecuteStartGameUseCaseParams = { ownerId: string; - gameManager: GameManager; + gameManager: StartGamePort; roomManager: RoomManager; emitToRoom: EmitToRoom; };