import Field from './field'; import Player from './player'; import { AssetOptions } from './assets'; import Bullet, { BulletOptions } from './bullet'; import CanvasPoint, { PointOptions } from './point'; import Updater, { MountHook, TaskHook } from './updater'; declare type MaybeFunction = T | (() => T); export interface BarrageOptions { assets?: AssetOptions; state?: MaybeFunction>; reference?: Record; mounted?: MountHook>; mutate?: TaskHook>; methods?: Record, ...args: any[]) => any>; } export declare type EmitBulletsOptions = ((this: Barrage, index: number) => BulletOptions) | BulletOptions; export interface BarrageReferences extends Record { player?: Player; source?: CanvasPoint; origin?: CanvasPoint; } export default class Barrage extends Updater { /** @private store the last created point index */ private _pointCounter; /** @protected mounted hook */ protected _mountedHook: MountHook; /** @protected mutate hook */ protected _mutateHook: TaskHook; /** @protected reference points */ protected _references: Record; /** @public bullets in the barrage */ $bullets: Bullet[]; /** @public reference coordinates */ $refs: BarrageReferences; /** @public parent field */ $parent: Field; constructor(options?: BarrageOptions); _mounted(): void; render(): void; /** * set a reference point * @returns reference key */ setRefPoint(reference: PointOptions): number; setRefPoint(key: string, reference: PointOptions): string; /** * remove a reference point * @returns whether the provided key is found */ removeRefPoint(key: string | number): boolean; /** emit bullets from the barrage */ emitBullets(end: number, bullet: EmitBulletsOptions): void; emitBullets(start: number, end: number, bullet: EmitBulletsOptions): void; emitBullets(start: number, end: number, step: number, bullet: EmitBulletsOptions): void; } export {};