import type { GameSimulation } from '@quake2ts/engine'; import type { Vec3 } from '@quake2ts/shared'; import { EntitySystem } from './entities/index.js'; import { type LevelFrameState } from './level.js'; import { GameSaveFile } from './save/index.js'; import { RandomGenerator } from '@quake2ts/shared'; export * from './entities/index.js'; export * from './entities/templates.js'; export * from './ai/index.js'; export * from './ai/noise.js'; export interface GameCreateOptions { gravity: Vec3; deathmatch?: boolean; coop?: boolean; friendlyFire?: boolean; skill?: number; rogue?: boolean; xatrix?: boolean; random?: RandomGenerator; } import { ServerCommand, EntityState } from '@quake2ts/shared'; import { MulticastType, GameEngine } from './imports.js'; export { MulticastType, GameEngine } from './imports.js'; export interface GameStateSnapshot { readonly gravity: Vec3; readonly origin: Vec3; readonly velocity: Vec3; readonly viewangles: Vec3; readonly level: LevelFrameState; readonly entities: { readonly activeCount: number; readonly worldClassname: string; }; readonly packetEntities: EntityState[]; readonly pmFlags: number; readonly pmType: number; readonly waterlevel: number; readonly watertype: number; readonly deltaAngles: Vec3; readonly client?: PlayerClient; readonly health: number; readonly armor: number; readonly ammo: number; readonly blend: [number, number, number, number]; readonly pickupIcon?: string; readonly damageAlpha: number; readonly damageIndicators: any[]; readonly stats: number[]; readonly kick_angles: Vec3; readonly kick_origin: Vec3; readonly gunoffset: Vec3; readonly gunangles: Vec3; readonly gunindex: number; readonly pm_time: number; readonly gun_frame: number; readonly rdflags: number; readonly fov: number; readonly renderfx: number; readonly pm_type: number; readonly pm_flags: number; } import { UserCommand } from '@quake2ts/shared'; import { Entity } from './entities/entity.js'; import { GameTraceResult } from './imports.js'; import { CustomEntityRegistration } from './mod.js'; export { CustomEntityRegistration, ModAPI } from './mod.js'; import { ScriptHookRegistry, ScriptHooks } from './scripting/hooks.js'; export { ScriptHookRegistry, ScriptHooks } from './scripting/hooks.js'; import { ModAPI } from './mod.js'; export interface GameExports extends GameSimulation, CustomEntityRegistration { spawnWorld(): void; readonly entities: EntitySystem; sound(entity: Entity, channel: number, sound: string, volume: number, attenuation: number, timeofs: number): void; soundIndex(sound: string): number; centerprintf(entity: Entity, message: string): void; readonly time: number; readonly deathmatch: boolean; readonly skill: number; readonly rogue: boolean; readonly xatrix: boolean; readonly coop: boolean; readonly friendlyFire: boolean; readonly random: RandomGenerator; trace(start: Vec3, mins: Vec3 | null, maxs: Vec3 | null, end: Vec3, passent: Entity | null, contentmask: number): GameTraceResult; multicast(origin: Vec3, type: MulticastType, event: ServerCommand, ...args: any[]): void; unicast(ent: Entity, reliable: boolean, event: ServerCommand, ...args: any[]): void; configstring(index: number, value: string): void; serverCommand(cmd: string): void; setLagCompensation?(active: boolean, client?: Entity, lagMs?: number): void; createSave(mapName: string, difficulty: number, playtimeSeconds: number): GameSaveFile; loadSave(save: GameSaveFile): void; serialize(): SerializedGameState; loadState(state: SerializedGameState): void; clientConnect(ent: Entity | null, userInfo: string): string | true; clientBegin(client: PlayerClient): Entity; clientDisconnect(ent: Entity): void; clientThink(ent: Entity, cmd: UserCommand): void; respawn(ent: Entity): void; setGodMode(enabled: boolean): void; setNoclip(enabled: boolean): void; setNotarget(enabled: boolean): void; giveItem(itemClassname: string): void; damage(amount: number): void; teleport(origin: Vec3): void; registerHooks(hooks: ScriptHooks): () => void; hooks: ScriptHookRegistry; setSpectator(playernum: number, spectating: boolean): void; onModInit?: (modId: string, modApi: ModAPI) => void; onModShutdown?: (modId: string) => void; } export { hashGameState, hashEntitySystem } from './checksum.js'; export * from './save/index.js'; import { SerializedGameState } from './save/adapter.js'; export { SerializedGameState }; export * from './demo/serializer.js'; export * from './combat/index.js'; export * from './inventory/index.js'; import { PlayerClient } from './inventory/index.js'; export { createPlayerInventory } from './inventory/index.js'; export { createPlayerWeaponStates } from './combat/index.js'; import { GameImports } from './imports.js'; export type { GameImports }; export declare function createGame(imports: Partial, engine: GameEngine, options: GameCreateOptions): GameExports; //# sourceMappingURL=index.d.ts.map