UNPKG

excalibur

Version:

Excalibur.js is a simple JavaScript game engine with TypeScript bindings for making 2D games in HTML5 Canvas. Our mission is to make web game development as simple as possible.

78 lines (77 loc) 3.98 kB
import { Engine } from '../Engine'; import { ScheduledCallbackTiming } from './Clock'; export type CoroutineGenerator = () => Generator<any | number | Promise<any> | undefined, void, number>; export interface CoroutineOptions { /** * Coroutines run preframe in the clock by default. */ timing?: ScheduledCallbackTiming; /** * Coroutines auto start by default, set to false to require play(); */ autostart?: boolean; } type Thenable = PromiseLike<void>['then']; export interface CoroutineInstance extends PromiseLike<void> { isRunning(): boolean; isComplete(): boolean; done: Promise<void>; generator: Generator<CoroutineInstance | number | Promise<any> | undefined, void, number>; start: () => CoroutineInstance; cancel: () => void; then: Thenable; [Symbol.iterator]: () => Generator<CoroutineInstance | number | Promise<any> | undefined, void, number>; } /** * Excalibur coroutine helper, returns a [[CoroutineInstance]] which is promise-like when complete. Coroutines run before frame update by default. * * Each coroutine yield is 1 excalibur frame. Coroutines get passed the elapsed time our of yield. Coroutines * run internally on the excalibur clock. * * If you yield a promise it will be awaited before resumed * If you yield a number it will wait that many ms before resumed * @param thisArg set the "this" context of the generator, by default is globalThis * @param engine pass a specific engine to use for running the coroutine * @param coroutineGenerator coroutine generator function * @param {CoroutineOptions} options optionally schedule coroutine pre/post update */ export declare function coroutine(thisArg: any, engine: Engine, coroutineGenerator: CoroutineGenerator, options?: CoroutineOptions): CoroutineInstance; /** * Excalibur coroutine helper, returns a promise when complete. Coroutines run before frame update. * * Each coroutine yield is 1 excalibur frame. Coroutines get passed the elapsed time our of yield. Coroutines * run internally on the excalibur clock. * * If you yield a promise it will be awaited before resumed * If you yield a number it will wait that many ms before resumed * @param engine pass a specific engine to use for running the coroutine * @param coroutineGenerator coroutine generator function * @param {CoroutineOptions} options optionally schedule coroutine pre/post update */ export declare function coroutine(engine: Engine, coroutineGenerator: CoroutineGenerator, options?: CoroutineOptions): CoroutineInstance; /** * Excalibur coroutine helper, returns a promise when complete. Coroutines run before frame update. * * Each coroutine yield is 1 excalibur frame. Coroutines get passed the elapsed time our of yield. Coroutines * run internally on the excalibur clock. * * If you yield a promise it will be awaited before resumed * If you yield a number it will wait that many ms before resumed * @param coroutineGenerator coroutine generator function * @param {CoroutineOptions} options optionally schedule coroutine pre/post update */ export declare function coroutine(coroutineGenerator: CoroutineGenerator, options?: CoroutineOptions): CoroutineInstance; /** * Excalibur coroutine helper, returns a promise when complete. Coroutines run before frame update. * * Each coroutine yield is 1 excalibur frame. Coroutines get passed the elapsed time our of yield. Coroutines * run internally on the excalibur clock. * * If you yield a promise it will be awaited before resumed * If you yield a number it will wait that many ms before resumed * @param thisArg set the "this" context of the generator, by default is globalThis * @param coroutineGenerator coroutine generator function * @param {CoroutineOptions} options optionally schedule coroutine pre/post update */ export declare function coroutine(thisArg: any, coroutineGenerator: CoroutineGenerator, options?: CoroutineOptions): CoroutineInstance; export {};