import Barrage from './barrage'; import { BulletFieldHook } from './builtin/field'; import { BulletJudgeHook } from './builtin/judge'; import Coordinate, { Point } from './coordinate'; import CanvasPoint, { PointOptions } from './point'; declare type JudgeType = 'square' | 'ortho' | 'tangent' | BulletJudgeHook; declare type FieldType = 'viewport' | 'distant' | 'timing' | BulletFieldHook; interface BulletPoint { /** judge type (default: `ortho`) */ judgeType?: JudgeType; /** field type (default: `viewport`) */ fieldType?: FieldType; /** origin point */ origin?: string | Point; /** display layer */ layer?: number; } export interface BulletOptions extends PointOptions, BulletPoint { } export interface BulletReferences { [key: string]: Coordinate; player?: Coordinate; origin?: Coordinate; source?: Coordinate; } export default class Bullet extends CanvasPoint implements Point, BulletPoint { layer: number; judgeType: JudgeType; fieldType: FieldType; rho?: number; theta?: number; /** attribute from field:timing */ lifeSpan?: number; /** attribute from field:viewport */ fieldBorder?: number; /** @public grazing */ grazing?: boolean; /** @public buller id */ $id: number; /** @public reference points */ $refs: BulletReferences; /** @public origin point */ $origin: Point; /** @public parent field */ $parent: Barrage; constructor(options?: BulletOptions); render(): void; setOrigin(point: string | Point): Coordinate; private _resolvePoint; readonly $coord: Coordinate; polarLocate(rho?: number, theta?: number): void; hitPlayer(): void; destroy(): void; } export {};