import Looping, { LoopingOptions, LoopingStats } from './looping'; import Barrage, { BarrageOptions } from './barrage'; import Player, { PlayerOptions, ControlMode } from './player'; export interface TextStyle { fontSize?: number; fontColor?: string; fontFamily?: string; } export interface TextOptions extends TextStyle { x?: number; y?: number; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; } export interface FieldOptions extends LoopingOptions { /** border height */ borderHeight?: number; /** border width */ borderWidth?: number; control?: ControlMode; titleStyle?: TextOptions; background?: string; height?: number; width?: number; } export interface FieldStats extends LoopingStats { bulletCount?: number; } interface Rectangle { left: number; right: number; top: number; bottom: number; } export default class Field extends Looping { readonly element: HTMLElement; readonly context: CanvasRenderingContext2D; readonly canvas: HTMLCanvasElement; control?: ControlMode; barrage: Barrage; player: Player; title: string; readonly movingScope: Rectangle; private titleStyle; onMouseMove?(this: this, event: MouseEvent): void; onMouseDown?(this: this, event: MouseEvent): void; onMouseUp?(this: this, event: MouseEvent): void; onClick?(this: this, event: MouseEvent): void; constructor(element: HTMLElement, options?: FieldOptions); getStatus(): FieldStats; setTitleStyle(options?: TextStyle): void; setPlayer(options: PlayerOptions): Promise; removePlayer(): void; setBarrage(options: BarrageOptions): Promise; clearScreen(): void; clear(): void; update(): void; render(): void; showText(text: string, options: TextOptions): void; private showTitle; } export {};