diff --git a/apps/client/src/network/handlers/GameHandler.ts b/apps/client/src/network/handlers/GameHandler.ts index b337cd4..21a033f 100644 --- a/apps/client/src/network/handlers/GameHandler.ts +++ b/apps/client/src/network/handlers/GameHandler.ts @@ -8,6 +8,7 @@ import type { CurrentPlayersPayload, GameStartPayload, + MovePayload, NewPlayerPayload, RemovePlayerPayload, UpdateMapCellsPayload, @@ -72,7 +73,7 @@ socket.off(protocol.SocketEvents.GAME_START, callback); }, sendMove: (x, y) => { - const payload = { x, y }; + const payload: MovePayload = { x, y }; socket.emit(protocol.SocketEvents.MOVE, payload); }, readyForGame: () => { diff --git a/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts b/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts index fdb544f..5858507 100644 --- a/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts +++ b/apps/server/src/domains/game/application/ports/gameUseCasePorts.ts @@ -8,6 +8,7 @@ roomTypes, CurrentPlayersPayload, GameStartPayload, + PongPayload, RemovePlayerPayload, UpdateMapCellsPayload, UpdatePlayersPayload, @@ -54,7 +55,7 @@ /** ゲーム系ユースケースが利用する送信出力ポート */ export interface GameOutputPort { - publishPongToSocket(payload: { clientTime: number; serverTime: number }): void; + publishPongToSocket(payload: PongPayload): void; publishUpdatePlayersToRoom( roomId: roomTypes.Room["roomId"], players: UpdatePlayersPayload diff --git a/apps/server/src/network/handlers/game/createGameOutputAdapter.ts b/apps/server/src/network/handlers/game/createGameOutputAdapter.ts index 4d92e41..a81719e 100644 --- a/apps/server/src/network/handlers/game/createGameOutputAdapter.ts +++ b/apps/server/src/network/handlers/game/createGameOutputAdapter.ts @@ -6,6 +6,7 @@ import { protocol } from "@repo/shared"; import type { GameStartPayload, + PongPayload, roomTypes, CurrentPlayersPayload, RemovePlayerPayload, @@ -17,7 +18,6 @@ import type { CommonHandlerContext } from "../CommonHandler"; type RoomId = roomTypes.Room["roomId"]; -type PongPayload = { clientTime: number; serverTime: number }; /** ゲーム出力アダプターのインターフェース */ export type GameOutputAdapter = Omit; diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 6141266..f832b8e 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -11,7 +11,9 @@ export type { CurrentPlayersPayload, GameStartPayload, + MovePayload, NewPlayerPayload, + PongPayload, RemovePlayerPayload, UpdateMapCellsPayload, UpdatePlayersPayload, diff --git a/packages/shared/src/protocol/events.ts b/packages/shared/src/protocol/events.ts index 99a17ff..5cb3b39 100644 --- a/packages/shared/src/protocol/events.ts +++ b/packages/shared/src/protocol/events.ts @@ -4,7 +4,7 @@ * クライアントとサーバー間のイベント契約を共有する */ import type { TickData } from "../domains/game/game.type"; -import type { PlayerData } from "../domains/player/player.type"; +import type { MovePayload as PlayerMovePayload, PlayerData } from "../domains/player/player.type"; /** ソケットイベント名の一覧定数 */ export const SocketEvents = { @@ -52,3 +52,12 @@ /** GAME_START イベントで送受信するゲーム開始情報 */ export type GameStartPayload = { startTime: number }; + +/** MOVE イベントで送受信する移動入力情報 */ +export type MovePayload = PlayerMovePayload; + +/** PONG イベントで送受信する時刻同期レスポンス */ +export type PongPayload = { + clientTime: number; + serverTime: number; +};