UNPKG

@battle-racing/br-common-lib

Version:

Common library for all Battle Racing Repositorios

50 lines (43 loc) 1.91 kB
import type { Game, GameType } from '../../game'; import type { GameTrack } from '../../gameTrack'; import type { Kart, KartStatus } from '../../kart'; import type { Response } from '../../response'; import type { SocketPowerUpEventsParams } from '../SocketPowerUpEventsParams'; interface BaseGameEventParams { gameId: Game['id']; gameType: GameType; } // Add the kart: prefix to the SocketPowerUpEventsParams export type SocketKartPowerUpEventsParams = { [Key in keyof SocketPowerUpEventsParams as `kart:${Key}`]: SocketPowerUpEventsParams[Key]; }; export interface SocketKartEventsParams { 'kart:updated': { kart: Kart }; // Response from server 'kart:init:response': Response<Kart>; /** Whenever the Game Track config changed */ 'kart:gameTrack:updated': { gameTrack: GameTrack }; /** When the physical button of the game track is pressed */ 'kart:gameTrack:emergency:started': undefined; /** When the physical button of the game track is released */ 'kart:gameTrack:emergency:stopped': undefined; /** Force kart to change status */ 'kart:status:change': { status: KartStatus }; } export interface SocketGameEventParams { /** Kart is selected for a game */ 'kart:game:selected': BaseGameEventParams; /** Kart Is eliminated from a game (game is in progress) */ 'kart:game:eliminated': BaseGameEventParams; 'kart:game:yellow-flag:started': BaseGameEventParams; 'kart:game:yellow-flag:stopped': BaseGameEventParams; 'kart:game:red-flag:started': BaseGameEventParams; 'kart:game:red-flag:stopped': BaseGameEventParams; // Critical Game Events that require the whole game state to be sent 'kart:game:started': { game: Game }; 'kart:game:finished': { game: Game; isWinner: boolean }; 'kart:game:sync': { game: Game }; } export type SocketKartServerToClientEventsParams = SocketKartEventsParams & SocketGameEventParams & SocketKartPowerUpEventsParams;