@battle-racing/br-common-lib
Version:
Common library for all Battle Racing Repositorios
53 lines (52 loc) • 1.89 kB
TypeScript
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;
}
export type SocketKartPowerUpEventsParams = {
[Key in keyof SocketPowerUpEventsParams as `kart:${Key}`]: SocketPowerUpEventsParams[Key];
};
export interface SocketKartEventsParams {
'kart:updated': {
kart: Kart;
};
'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;
'kart:game:started': {
game: Game;
};
'kart:game:finished': {
game: Game;
isWinner: boolean;
};
'kart:game:sync': {
game: Game;
};
}
export type SocketKartServerToClientEventsParams = SocketKartEventsParams & SocketGameEventParams & SocketKartPowerUpEventsParams;
export {};