diff --git a/apps/server/src/application/coordinators/startGameCoordinator.ts b/apps/server/src/application/coordinators/startGameCoordinator.ts index 766b626..57e5cd1 100644 --- a/apps/server/src/application/coordinators/startGameCoordinator.ts +++ b/apps/server/src/application/coordinators/startGameCoordinator.ts @@ -6,8 +6,11 @@ type BombCleanupPort, type GameOutputPort, type StartGamePort, - type StartGameRoomPort, } from "@server/domains/game/application/ports/gameUseCasePorts"; +import type { + FindRoomByOwnerPort, + RoomPhaseTransitionPort, +} from "@server/domains/room/application/ports/roomUseCasePorts"; import { startGameUseCase } from "@server/domains/game/application/useCases/startGameUseCase"; import { logEvent } from "@server/logging/logger"; import { gameUseCaseLogEvents, logResults, logScopes } from "@server/logging/index"; @@ -16,7 +19,7 @@ type StartGameCoordinatorParams = { ownerId: string; gameManager: StartGamePort & BombCleanupPort; - roomManager: StartGameRoomPort; + roomManager: FindRoomByOwnerPort & RoomPhaseTransitionPort; output: Pick< GameOutputPort, | "publishUpdatePlayersToRoom" diff --git a/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts b/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts index 249545b..7b21bed 100644 --- a/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts +++ b/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts @@ -29,13 +29,6 @@ getRoomStartTime(roomId: string): number | undefined; } -/** ゲーム開始調停で利用するルーム管理入力ポート */ -export interface StartGameRoomPort { - getRoomByOwnerId(ownerId: string): roomTypes.Room | undefined; - markRoomPlaying(roomId: string): roomTypes.Room | undefined; - markRoomWaiting(roomId: string): roomTypes.Room | undefined; -} - /** 準備完了ユースケースが利用するゲーム状態参照入力ポート */ export interface ReadyForGamePort { getRoomPlayers(roomId: string): playerTypes.PlayerData[]; diff --git a/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts b/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts index 9845676..b32c711 100644 --- a/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts +++ b/apps/server/src/domains/room/application/ports/roomUseCasePorts.ts @@ -31,6 +31,17 @@ getRoomByPlayerId(playerId: string): roomTypes.Room | undefined; } +/** ゲーム開始調停で利用するオーナー所属ルーム参照ポート */ +export interface FindRoomByOwnerPort { + getRoomByOwnerId(ownerId: string): roomTypes.Room | undefined; +} + +/** ゲーム開始調停で利用するルーム状態遷移ポート */ +export interface RoomPhaseTransitionPort { + markRoomPlaying(roomId: string): roomTypes.Room | undefined; + markRoomWaiting(roomId: string): roomTypes.Room | undefined; +} + /** ルームIDでの存在確認に利用する参照ポート */ export interface FindRoomByIdPort { getRoomById(roomId: string): roomTypes.Room | undefined; diff --git a/apps/server/src/network/handlers/game/registerGameHandlers.ts b/apps/server/src/network/handlers/game/registerGameHandlers.ts index 6794b78..68b0ed9 100644 --- a/apps/server/src/network/handlers/game/registerGameHandlers.ts +++ b/apps/server/src/network/handlers/game/registerGameHandlers.ts @@ -6,13 +6,16 @@ import { protocol } from "@repo/shared"; import { readyForGameCoordinator } from "@server/application/coordinators/readyForGameCoordinator"; import { startGameCoordinator } from "@server/application/coordinators/startGameCoordinator"; -import type { FindRoomByPlayerPort } from "@server/domains/room/application/ports/roomUseCasePorts"; +import type { + FindRoomByOwnerPort, + FindRoomByPlayerPort, + RoomPhaseTransitionPort, +} from "@server/domains/room/application/ports/roomUseCasePorts"; import type { BombStatePort, MovePlayerPort, ReadyForGamePort, StartGamePort, - StartGameRoomPort, } from "@server/domains/game/application/ports/gameUseCasePorts"; import { movePlayerUseCase } from "@server/domains/game/application/useCases/movePlayerUseCase"; import { placeBombUseCase } from "@server/domains/game/application/useCases/placeBombUseCase"; @@ -35,7 +38,7 @@ io: Server, socket: Socket, gameManager: StartGamePort & ReadyForGamePort & MovePlayerPort & BombStatePort, - roomManager: StartGameRoomPort & FindRoomByPlayerPort + roomManager: FindRoomByOwnerPort & FindRoomByPlayerPort & RoomPhaseTransitionPort ) => { const common = createCommonHandlerContext(io, socket); const gameOutputAdapter = createGameOutputAdapter(common); diff --git a/apps/server/src/network/types/connectionPorts.ts b/apps/server/src/network/types/connectionPorts.ts index 10e3c85..7a1696a 100644 --- a/apps/server/src/network/types/connectionPorts.ts +++ b/apps/server/src/network/types/connectionPorts.ts @@ -9,13 +9,14 @@ MovePlayerPort, ReadyForGamePort, StartGamePort, - StartGameRoomPort, } from "@server/domains/game/application/ports/gameUseCasePorts"; import type { DisconnectRoomPort, + FindRoomByOwnerPort, FindRoomByIdPort, FindRoomByPlayerPort, JoinRoomPort, + RoomPhaseTransitionPort, } from "@server/domains/room/application/ports/roomUseCasePorts"; import type { DisconnectCoordinatorParams } from "../../application/coordinators/disconnectCoordinator"; @@ -29,8 +30,9 @@ /** 接続時のルーム処理で利用する入力ポート集合 */ export type ConnectionRoomPort = & JoinRoomPort - & StartGameRoomPort - & FindRoomByPlayerPort; + & FindRoomByOwnerPort + & FindRoomByPlayerPort + & RoomPhaseTransitionPort; /** ソケット接続全体で利用するゲーム管理ポート集合 */ export type SocketConnectionGamePort = @@ -41,8 +43,7 @@ export type SocketConnectionRoomPort = & ConnectionRoomPort & DisconnectRoomPort - & FindRoomByIdPort - & FindRoomByPlayerPort; + & FindRoomByIdPort; /** ソケット接続ハンドラで受け取るマネージャ依存の束 */ export type SocketConnectionManagerBundle = { @@ -51,10 +52,13 @@ }; /** 切断時のゲーム処理で利用する入力ポート */ -export type DisconnectGamePort = DisconnectPlayerPort; +export type DisconnectGamePort = Pick; /** 切断時のルーム処理で利用する入力ポート集合 */ -export type DisconnectRoomHandlerPort = DisconnectRoomPort & FindRoomByPlayerPort & FindRoomByIdPort; +export type DisconnectRoomHandlerPort = Pick< + SocketConnectionRoomPort, + "removePlayer" | "getRoomByPlayerId" | "getRoomById" +>; /** 切断調停処理へ受け渡す依存集合 */ export type DisconnectCoordinatorPortBundle = Omit;