import { Rotation, Position } from './types'; import { MovementDirection } from './requests'; export declare enum MessageTypes { Request = "Request", Response = "Response", Notification = "Notification" } export declare enum RequestTypes { RegisterPlayer = "RegisterPlayer", MovePlayer = "MovePlayer", RotatePlayer = "RotatePlayer", Shoot = "Shoot", DeployMine = "DeployMine" } export declare enum ResponseTypes { RegisterPlayer = "RegisterPlayer", MovePlayer = "MovePlayer", RotatePlayer = "RotatePlayer", Shoot = "Shoot", DeployMine = "DeployMine" } export declare enum NotificationTypes { RadarScan = "RadarScan", StartGame = "StartGame", JoinGame = "JoinGame", Hit = "Hit", Tick = "Tick" } export interface RegisterPlayerRequestMessage { type: MessageTypes.Request; id: RequestTypes.RegisterPlayer; data: { game: { version: string; }; id: string; }; } export interface RegisterPlayerResponseMessage { type: MessageTypes.Response; id: ResponseTypes.RegisterPlayer; success: boolean; details?: { id: string; position: Position; rotation: Rotation; life: number; tokens: number; }; } export interface MovePlayerRequestMessage { type: MessageTypes.Request; id: RequestTypes.MovePlayer; data: { movement: { direction: MovementDirection; withTurbo?: boolean; }; }; } export interface RotatePlayerRequestMessage { type: MessageTypes.Request; id: RequestTypes.RotatePlayer; data: { rotation: Rotation; }; } export interface MovePlayerResponseMessage { type: MessageTypes.Response; id: ResponseTypes.MovePlayer; success: boolean; data?: { component: { details: { position: Position; tokens: number; }; }; request: { withTurbo: boolean; cost: number; }; }; } export interface RotatePlayerResponseMessage { type: MessageTypes.Response; id: 'RotatePlayer'; success: boolean; data?: { component: { details: { rotation: number; tokens: number; }; }; request: { cost: number; }; }; } export interface PlayerHitNotificationMessage { type: MessageTypes.Notification; id: NotificationTypes.Hit; data: { damage: number; }; } export interface RadarScanNotificationMessage { type: MessageTypes.Notification; id: NotificationTypes.RadarScan; data: { players: { position: Position; id: string; rotation: Rotation; }[]; unknown: { position: Position; }[]; mines: { position: Position; }[]; shots: { position: Position; rotation: Rotation; }[]; }; } export interface ShootRequestMessage { type: MessageTypes.Request; id: RequestTypes.Shoot; } export interface ShootResponseMessage { type: MessageTypes.Response; id: ResponseTypes.Shoot; success: boolean; data?: { component: { details: { tokens: number; }; }; request: { cost: number; }; }; } export interface DeployMineRequestMessage { type: MessageTypes.Request; id: RequestTypes.DeployMine; } export interface DeployMineResponseMessage { type: MessageTypes.Response; id: ResponseTypes.Shoot; success: boolean; data: { component: { details: { tokens: number; }; }; request: { cost: number; }; }; } export interface StartGameNofiticationMessage { type: MessageTypes.Notification; id: NotificationTypes.StartGame; } export interface JoinGameNotificationMessage { type: MessageTypes.Notification; id: NotificationTypes.JoinGame; details: { game: { settings: { playerSpeed: number; shotSpeed: number; turboMultiplier: number; arenaWidth: number; arenaHeight: number; playerRadius: number; radarScanRadius: number; }; }; }; } export interface TickNotificationMessage { type: MessageTypes.Notification; id: NotificationTypes.Tick; } export interface RadarScan { players: { position: Position; }[]; unknown: { position: Position; }[]; } export declare function isRegisterPlayerResponseMessage(message: any): message is RegisterPlayerResponseMessage; export declare function isMovePlayerResponseMessage(message: any): message is MovePlayerResponseMessage; export declare function isRotatePlayerResponseMessage(message: any): message is RotatePlayerResponseMessage; export declare function isRadarScanNotificationMessage(message: any): message is RadarScanNotificationMessage; export declare function isStartGameNotificationMessage(message: any): message is StartGameNofiticationMessage; export declare function isJoinGameNotificationMessage(message: any): message is JoinGameNotificationMessage; export declare function isShootResponseMessage(message: any): message is ShootResponseMessage; export declare function isDeployMineResponseMessage(message: any): message is DeployMineResponseMessage; export declare function isTickNotification(message: any): message is TickNotificationMessage; export declare function isPlayerHitNotificationMessage(message: any): message is PlayerHitNotificationMessage;