UNPKG

@battle-racing/br-common-lib

Version:

Common library for all Battle Racing Repositorios

54 lines (53 loc) 1.99 kB
import type { Game, GameType } from '../../game'; import type { GameTrack, GameTrackKartConfig } 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; } export type SocketKartPowerUpEventsParams = { [Key in keyof SocketPowerUpEventsParams as `kart:${Key}`]: SocketPowerUpEventsParams[Key]; }; export interface SocketKartEventsParams { 'kart:init:response': Response<{ kart: Kart; gameTrack: GameTrack; }>; /** Whenever the Game Track config changed, the config might change as well*/ 'kart:gameTrack:updated': { gameTrack: GameTrack; config: GameTrackKartConfig; }; /** 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; 'kart:game:started': { game: Game; }; 'kart:game:finished': { game: Game; isWinner: boolean; }; 'kart:game:sync': { game: Game; }; } export type SocketKartServerToClientEventsParams = SocketKartEventsParams & SocketGameEventParams & SocketKartPowerUpEventsParams; export {};