import { ImAnimation } from './imAnimation'; export declare type Vector2 = { x: number; y: number; }; export declare type GameSettings = { width?: number; height?: number; scale?: number; backgroundColor?: number; }; export declare type AnimationOptions = { loop?: boolean; }; export declare type CollisionTraceResult = { collision: { x: boolean; y: boolean; slope: { x: number; y: number; nx: number; ny: number; } | false; }; pos: Vector2; tile: Vector2; }; export declare type SlopeData = [number, number, number, number, boolean]; export declare type SlopesCollection = { [key: string]: SlopeData; }; export declare type RawObject = { id: number; name: string; type: string; x: number; y: number; width: number; height: number; rotation: number; visible: boolean; }; export interface RawLayer { name: string; type: 'tilelayer' | 'imagelayer' | 'objectgroup'; x: number; y: number; /** * X offset in pixels */ offsetx?: number; /** * Y offset in pixels */ offsety?: number; opacity: number; visible: boolean; } export interface RawObjectGroup extends RawLayer { type: 'objectgroup'; draworder: string; objects: RawObject[]; } export interface RawImageLayer extends RawLayer { type: 'imagelayer'; image: string; } export interface RawTileLayer extends RawLayer { type: 'tilelayer'; data?: number[]; /** * Width in tiles */ width?: number; /** * Height in tiles */ height?: number; chunks?: any; } export declare type TiledTilesetType = { columns: number; firstgid: number; image: string; imageheight: number; imagewidth: number; margin: number; name: string; spacing: number; tilecount: number; tileheight: number; tilewidth: number; transparentcolor: string; }; export declare type TiledMapType = { height: number; infinite: boolean; layers: RawLayer[]; nextobjectid: number; orientation: 'orthogonal'; renderorder: 'right-down'; tiledversion: string; tileheight: number; tilesets: TiledTilesetType[]; tilewidth: number; type: 'map'; version: number; width: number; }; export declare type EntitySettings = { [index: string]: any; x?: number; y?: number; type?: string; name?: string; rotation?: number; width?: number; height?: number; /** * Custom properties from Tiled data */ properties?: Array<{ name: string; type: string; value: boolean | string | number; }>; }; /** * Tiled chunk for infinite levels */ export declare type TiledChunkType = { data: number[]; height: number; width: number; x: number; y: number; }; export declare type RenderChunkAnims = Array<{ anim: ImAnimation; x: number; y: number; }>; export declare type RenderChunk = { canvas: HTMLCanvasElement; anims: RenderChunkAnims; }; export declare type LoaderCallbackType = ((path: string, success: boolean) => void); export declare type TriggerCallbackType = (topic: string, ...args: any) => void; export declare type TileType = number | [number, number]; export interface BoundingBox { x: number; y: number; width: number; height: number; } declare global { interface Window { WebFontConfig: any; impacter: boolean; userInteracted: boolean; } }