import { ServerCommand, Vec3 } from '@quake2ts/shared'; import { EntityState, FrameData, FogData, DamageIndicator, NetworkMessageHandler } from './parser.js'; export interface BaseMessage { type: ServerCommand; } export interface ServerDataMessage extends BaseMessage { type: ServerCommand.serverdata; protocol: number; serverCount: number; attractLoop: number; gameDir: string; playerNum: number; levelName: string; tickRate?: number; demoType?: number; } export interface ConfigStringMessage extends BaseMessage { type: ServerCommand.configstring; index: number; string: string; } export interface SpawnBaselineMessage extends BaseMessage { type: ServerCommand.spawnbaseline; entity: EntityState; } export interface FrameMessage extends BaseMessage { type: ServerCommand.frame; data: FrameData; } export interface CenterPrintMessage extends BaseMessage { type: ServerCommand.centerprint; message: string; } export interface StuffTextMessage extends BaseMessage { type: ServerCommand.stufftext; text: string; } export interface PrintMessage extends BaseMessage { type: ServerCommand.print; level: number; message: string; } export interface SoundMessage extends BaseMessage { type: ServerCommand.sound; flags: number; soundNum: number; volume?: number; attenuation?: number; offset?: number; ent?: number; pos?: Vec3; } export interface TempEntityMessage extends BaseMessage { type: ServerCommand.temp_entity; tempType: number; pos: Vec3; pos2?: Vec3; dir?: Vec3; cnt?: number; color?: number; ent?: number; srcEnt?: number; destEnt?: number; } export interface LayoutMessage extends BaseMessage { type: ServerCommand.layout; layout: string; } export interface InventoryMessage extends BaseMessage { type: ServerCommand.inventory; inventory: number[]; } export interface MuzzleFlashMessage extends BaseMessage { type: ServerCommand.muzzleflash; ent: number; weapon: number; } export interface MuzzleFlash2Message extends BaseMessage { type: ServerCommand.muzzleflash2; ent: number; weapon: number; } export interface MuzzleFlash3Message extends BaseMessage { type: ServerCommand.muzzleflash3; ent: number; weapon: number; } export interface DisconnectMessage extends BaseMessage { type: ServerCommand.disconnect; } export interface ReconnectMessage extends BaseMessage { type: ServerCommand.reconnect; } export interface DownloadMessage extends BaseMessage { type: ServerCommand.download; size: number; percent: number; data?: Uint8Array; } export interface SplitClientMessage extends BaseMessage { type: ServerCommand.splitclient; clientNum: number; } export interface LevelRestartMessage extends BaseMessage { type: ServerCommand.level_restart; } export interface DamageMessage extends BaseMessage { type: ServerCommand.damage; indicators: DamageIndicator[]; } export interface LocPrintMessage extends BaseMessage { type: ServerCommand.locprint; flags: number; base: string; args: string[]; } export interface FogMessage extends BaseMessage { type: ServerCommand.fog; data: FogData; } export interface WaitingForPlayersMessage extends BaseMessage { type: ServerCommand.waitingforplayers; count: number; } export interface BotChatMessage extends BaseMessage { type: ServerCommand.bot_chat; message: string; } export interface PoiMessage extends BaseMessage { type: ServerCommand.poi; flags: number; pos: Vec3; } export interface HelpPathMessage extends BaseMessage { type: ServerCommand.help_path; pos: Vec3; } export interface AchievementMessage extends BaseMessage { type: ServerCommand.achievement; id: string; } export type Message = ServerDataMessage | ConfigStringMessage | SpawnBaselineMessage | FrameMessage | CenterPrintMessage | StuffTextMessage | PrintMessage | SoundMessage | TempEntityMessage | LayoutMessage | InventoryMessage | MuzzleFlashMessage | MuzzleFlash2Message | MuzzleFlash3Message | DisconnectMessage | ReconnectMessage | DownloadMessage | SplitClientMessage | LevelRestartMessage | DamageMessage | LocPrintMessage | FogMessage | WaitingForPlayersMessage | BotChatMessage | PoiMessage | HelpPathMessage | AchievementMessage; export declare class MessageCollector implements NetworkMessageHandler { messages: Message[]; onServerData(protocol: number, serverCount: number, attractLoop: number, gameDir: string, playerNum: number, levelName: string, tickRate?: number, demoType?: number): void; onConfigString(index: number, str: string): void; onSpawnBaseline(entity: EntityState): void; onFrame(frame: FrameData): void; onCenterPrint(msg: string): void; onStuffText(msg: string): void; onPrint(level: number, msg: string): void; onSound(flags: number, soundNum: number, volume?: number, attenuation?: number, offset?: number, ent?: number, pos?: Vec3): void; onTempEntity(type: number, pos: Vec3, pos2?: Vec3, dir?: Vec3, cnt?: number, color?: number, ent?: number, srcEnt?: number, destEnt?: number): void; onLayout(layout: string): void; onInventory(inventory: number[]): void; onMuzzleFlash(ent: number, weapon: number): void; onMuzzleFlash2(ent: number, weapon: number): void; onMuzzleFlash3(ent: number, weapon: number): void; onDisconnect(): void; onReconnect(): void; onDownload(size: number, percent: number, data?: Uint8Array): void; onSplitClient(clientNum: number): void; onLevelRestart(): void; onDamage(indicators: DamageIndicator[]): void; onLocPrint(flags: number, base: string, args: string[]): void; onFog(data: FogData): void; onWaitingForPlayers(count: number): void; onBotChat(msg: string): void; onPoi(flags: number, pos: Vec3): void; onHelpPath(pos: Vec3): void; onAchievement(id: string): void; } /** * Parses raw demo data and collects all messages. * Uses DemoReader to iterate through blocks and NetworkMessageParser to parse commands. */ export declare function collectMessages(demoData: Uint8Array): Message[]; //# sourceMappingURL=message.d.ts.map