Spaces:
Runtime error
Runtime error
| export type MessageType = | |
| | 'CREATE_ROOM' | |
| | 'ROOM_CREATED' | |
| | 'JOIN_ROOM' | |
| | 'ROOM_STATE' | |
| | 'PLACE_MOVE' | |
| | 'MOVE_APPLIED' | |
| | 'MOVE_REJECTED' | |
| | 'GAME_WIN' | |
| | 'GAME_DRAW' | |
| | 'PLAYER_JOINED' | |
| | 'PLAYER_LEFT' | |
| | 'REQUEST_REMATCH' | |
| | 'REMATCH_ACCEPTED' | |
| | 'CHANGE_NAME' | |
| | 'NAME_CHANGED' | |
| | 'ERROR' | |
| | 'PLAYER_ONLINE' | |
| | 'PLAYER_OFFLINE' | |
| | 'PLAYER_RECONNECTING' | |
| | 'SET_SYMBOL' | |
| | 'SYMBOL_CHANGED' | |
| | 'GET_MATCHES' | |
| | 'MATCHES_DATA' | |
| | 'GET_MATCH' | |
| | 'MATCH_DATA' | |
| | 'GET_GENERATED_REPLAYS' | |
| | 'GENERATED_REPLAYS_DATA' | |
| | 'GET_GENERATED_REPLAY' | |
| | 'GENERATED_REPLAY_DATA' | |
| | 'GET_LEADERBOARD' | |
| | 'LEADERBOARD_DATA' | |
| | 'REGISTER_ENGINE' | |
| | 'ENGINE_REGISTERED' | |
| | 'ENGINE_CREATE_ROOM' | |
| | 'ENGINE_JOIN_ROOM' | |
| | 'ENGINE_ROOM_JOINED' | |
| | 'ENGINE_LIST_ROOMS' | |
| | 'ENGINE_ROOMS_LIST' | |
| | 'SWAP2_CHOICE' | |
| | 'REQUEST_SWAP' | |
| export interface WSMessage { | |
| type: MessageType | |
| payload: unknown | |
| } | |
| export interface RoomState { | |
| roomId: string | |
| players: string[] | |
| board: SerializedBitBoard | |
| currentPlayer: number | |
| status: 'waiting' | 'active' | 'win' | 'draw' | |
| playerIndex: number | |
| scores?: RoomScores | |
| symbols?: [string, string] | |
| boardSize?: number | |
| } | |
| export interface MovePayload { | |
| x: number | |
| y: number | |
| } | |
| export interface MoveAppliedPayload { | |
| x: number | |
| y: number | |
| player: number | |
| symbol: string | |
| currentPlayer: number | |
| } | |
| export interface GameWinPayload { | |
| playerId: string | |
| cells: { x: number; y: number }[] | |
| } | |
| export interface GameDrawPayload { | |
| message?: string | |
| } | |
| export interface RoomScores { | |
| [playerId: string]: { wins: number; losses: number; draws: number } | |
| } | |
| export interface ErrorPayload { | |
| message: string | |
| } | |
| export interface MoveRejectedPayload { | |
| message: string | |
| x: number | |
| y: number | |
| } | |
| export interface PlayerPresencePayload { | |
| playerIndex: number | |
| playerName: string | |
| } | |
| export interface SymbolPayload { | |
| symbol: string | |
| } | |
| export interface GameRules { | |
| swap2?: boolean | |
| noOverlines?: boolean | |
| boardSize?: number | |
| } | |
| export interface Cell { | |
| playerId: string | |
| symbol: string | |
| timestamp: number | |
| } | |
| export interface SerializedBitBoard { | |
| boardSize: number | |
| words: number[] | |
| occupiedCount: number | |
| } | |
| export interface RegisterEnginePayload { | |
| name: string | |
| } | |
| export interface EngineRegisteredPayload { | |
| engineId: string | |
| } | |
| export interface EngineCreateRoomPayload { | |
| engineName: string | |
| } | |
| export interface EngineJoinRoomPayload { | |
| roomId: string | |
| engineName: string | |
| } | |
| export interface EngineRoomJoinedPayload { | |
| roomId: string | |
| playerIndex: number | |
| roomState: RoomState | |
| } | |
| export interface EngineRoomsListPayload { | |
| rooms: { roomId: string; engineName: string }[] | |
| } | |
| export interface GameExportData { | |
| id: string | |
| player1: string | |
| player2: string | |
| winner: number | null | |
| moves: { x: number; y: number; player: number; symbol: string }[] | |
| createdAt: string | |
| } | |