import EventEmitter from "eventemitter3"; import { Gun } from "./gun"; import { FiringState } from "./firing-state"; import { Owner } from "./owner"; import { FireData } from "./fire-data"; import { Bullet } from "./bullet"; declare type PlayerEvent = EventEmitter<{ fired: [FireData, Bullet]; finished: []; }>; export interface PlayerLike { events: PlayerEvent; /** * Start playing guntree. */ start(loop: boolean, owner: Owner, gunTree: Gun, firingState: FiringState): boolean; /** * Is playing guntree. * * @returns Player is playing guntree. */ isRunning(): boolean; /** * Is in loop. * * @returns Player is in loop. */ isInLoopMode(): boolean; /** * Get seconds since finish current frame. * * @returns Seconds. */ getElapsedSeconds(): number; /** * Stop playing after finish current loop. */ requestStop(): void; /** * Stop playing immediately. */ forceStop(): void; /** * Continue playing guntree as fixed frame rate. * * @returns Is finished */ tick(): boolean; } declare class FixedFrameratePlayer implements PlayerLike { readonly events: EventEmitter<{ fired: [FireData, Bullet]; finished: []; }>; private loop; private owner?; private gunTree?; private firingState?; private firingProgress; isRunning(): boolean; isInLoopMode(): boolean; getElapsedSeconds(): number; start(loop: boolean, owner: Owner, gunTree: Gun, firingState?: FiringState): boolean; requestStop(): void; forceStop(): void; tick(): boolean; } /** * Player play guntree with dynamic or fixed framerate. */ export declare class Player implements PlayerLike { private readonly frameSec; private elapsedSec; private readonly player; constructor(player?: FixedFrameratePlayer); get events(): PlayerEvent; /** * Start playing guntree. * * @param loop loop this firing. * @param owner owner inform game information * @param gunTree firing guntree * @param firingState FiringState using this firing * @returns firing was finished */ start(loop: boolean, owner: Owner, gunTree: Gun, firingState?: FiringState): boolean; /** * Is playing guntree. * * @returns Player is playing guntree. */ isRunning(): boolean; /** * Is in loop. * * @returns Player is in loop. */ isInLoopMode(): boolean; /** * Get seconds since finish current frame. * * @returns Seconds. */ getElapsedSeconds(): number; /** * Stop playing after finish current loop. */ requestStop(): void; /** * Stop playing immediately. */ forceStop(): void; /** * Continue playing guntree as fixed frame rate. * * @returns Is finished */ tick(): boolean; /** * Continue playing guntree as dynamic frame rate. * * @param deltaSec Delta time in seconds * @returns Is finished */ update(deltaSec: number): boolean; } export {};