@battle-racing/br-common-lib
Version:
Common library for all Battle Racing Repositorios
49 lines (42 loc) • 2.01 kB
text/typescript
import type { Game, GameType } from '../../game';
import type { GameTrack, GameTrackKartConfig, GameTrackKartsConfig } 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 {
// Response from server
'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;
// 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;