diff --git a/packages/shared/src/protocol/payloads/commonPayloads.ts b/packages/shared/src/protocol/payloads/commonPayloads.ts new file mode 100644 index 0000000..a3f4d73 --- /dev/null +++ b/packages/shared/src/protocol/payloads/commonPayloads.ts @@ -0,0 +1,14 @@ +/** + * commonPayloads + * 接続と時刻同期で利用する共通ペイロード型を定義する + * ソケット通信の基盤イベントで使う契約を集約する + */ + +/** PING イベントで送受信する時刻同期リクエスト */ +export type PingPayload = number; + +/** PONG イベントで送受信する時刻同期レスポンス */ +export type PongPayload = { + clientTime: number; + serverTime: number; +}; diff --git a/packages/shared/src/protocol/payloads/gamePayloads.ts b/packages/shared/src/protocol/payloads/gamePayloads.ts new file mode 100644 index 0000000..f5663f6 --- /dev/null +++ b/packages/shared/src/protocol/payloads/gamePayloads.ts @@ -0,0 +1,38 @@ +/** + * gamePayloads + * ゲーム進行イベントで利用するペイロード型を定義する + * プレイヤー差分,マップ差分,開始終了系の契約を集約する + */ +import type { TickData } from "../../domains/game/game.type"; +import type { MovePayload as PlayerMovePayload, PlayerData } from "../../domains/player/player.type"; + +/** GAME_RESULT イベントで送受信する最終結果型を再公開する */ +export type { GameResultPayload, GameResultRanking } from "../gameResultPayload"; + +/** UPDATE_PLAYERS イベントで送受信するプレイヤー差分配列 */ +export type UpdatePlayersPayload = TickData["playerUpdates"]; + +/** CURRENT_PLAYERS イベントで送受信するプレイヤー一覧 */ +export type CurrentPlayersPayload = TickData["playerUpdates"]; + +/** UPDATE_MAP_CELLS イベントで送受信するマップ差分配列 */ +export type UpdateMapCellsPayload = TickData["cellUpdates"]; + +/** NEW_PLAYER イベントで送受信するプレイヤー情報 */ +export type NewPlayerPayload = PlayerData; + +/** REMOVE_PLAYER イベントで送受信するプレイヤーID */ +export type RemovePlayerPayload = PlayerData["id"]; + +/** GAME_START イベントで送受信するゲーム開始情報 */ +export type GameStartPayload = { startTime: number }; + +/** MOVE イベントで送受信する移動入力情報 */ +export type MovePayload = PlayerMovePayload; + +/** PLACE_BOMB / BOMB_PLACED イベントで送受信する爆弾情報 */ +export type BombPlacedPayload = { + x: number; + y: number; + explodeAtElapsedMs: number; +}; diff --git a/packages/shared/src/protocol/payloads/lobbyPayloads.ts b/packages/shared/src/protocol/payloads/lobbyPayloads.ts new file mode 100644 index 0000000..3f5cdcb --- /dev/null +++ b/packages/shared/src/protocol/payloads/lobbyPayloads.ts @@ -0,0 +1,15 @@ +/** + * lobbyPayloads + * ロビー関連イベントで利用するペイロード型を定義する + * ルーム参加前後の契約を共有する + */ +import type * as roomTypes from "../../domains/room/room.type"; + +/** JOIN_ROOM イベントで送受信するルーム参加情報 */ +export type JoinRoomPayload = roomTypes.JoinRoomPayload; + +/** ROOM_JOIN_REJECTED イベントで送受信する参加拒否情報 */ +export type RoomJoinRejectedPayload = roomTypes.JoinRoomRejectedPayload; + +/** ROOM_UPDATE イベントで送受信するルーム状態情報 */ +export type RoomUpdatePayload = roomTypes.Room;