/**
* an event system based on nodeJS EventEmitter interface
*/
import type Application from "../application/application.ts";
import Pointer from "../input/pointer.ts";
import { Vector2d } from "../math/vector2d.ts";
import { Draggable } from "../renderable/draggable.js";
import type Stage from "../state/stage.ts";
import Renderer from "../video/renderer.js";
/**
* event when the DOM is Ready is booting
* @see event.on
*/
export declare const DOM_READY = "dom_ready";
/**
* event when the system is booting
* @see event.on
*/
export declare const BOOT = "me.boot";
/**
* event generated when the system update the engine and the renderer by one step
* @see event.on
*/
export declare const TICK = "me.tick";
/**
* event generated when the main browser or window is losing focus
* @see event.on
*/
export declare const BLUR = "me.blur";
/**
* event generated when the main browser or window is gaining back focus
* @see event.on
*/
export declare const FOCUS = "me.focus";
/**
* event when the game is paused
* Data passed : none
* @see event.on
*/
export declare const STATE_PAUSE = "me.state.onPause";
/**
* event for when the game is resumed
* Data passed : {number} time in ms the game was paused
* @see event.on
*/
export declare const STATE_RESUME = "me.state.onResume";
/**
* event when the game is stopped
* Data passed : none
* @see event.on
*/
export declare const STATE_STOP = "me.state.onStop";
/**
* event for when the game is restarted
* Data passed : {number} time in ms the game was stopped
* @see event.on
*/
export declare const STATE_RESTART = "me.state.onRestart";
/**
* event for when the changing to a different stage
* @see event.on
*/
export declare const STATE_CHANGE = "me.state.onChange";
/**
* event for when a stage is resetted
* @see event.on
*/
export declare const STAGE_RESET = "me.stage.onReset";
/**
* event for when the video is initialized
* Data passed : {Renderer} the renderer instance created
* @see video.init
* @see event.on
*/
export declare const VIDEO_INIT = "me.video.onInit";
/**
* event for when the game manager is initialized
* Data passed : none
* @see event.on
*/
export declare const GAME_INIT = "me.game.onInit";
/**
* event for when the game manager is resetted
* Data passed : none
* @see event.on
*/
export declare const GAME_RESET = "me.game.onReset";
/**
* event for when the engine is about to start a new game loop
* Data passed : {number} time the current time stamp
* @see event.on
*/
export declare const GAME_BEFORE_UPDATE = "me.game.beforeUpdate";
/**
* event for the end of the update loop
* Data passed : {number} time the current time stamp
* @see event.on
*/
export declare const GAME_AFTER_UPDATE = "me.game.afterUpdate";
/**
* Event for when the game is updated (will be impacted by frame skip, frame interpolation and pause/resume state)
* Data passed : {number} time the current time stamp
* @see event.on
*/
export declare const GAME_UPDATE = "me.game.onUpdate";
/**
* Event for the end of the draw loop
* Data passed : {number} time the current time stamp
* @see event.on
*/
export declare const GAME_BEFORE_DRAW = "me.game.beforeDraw";
/**
* Event for the start of the draw loop
* Data passed : {number} time the current time stamp
* @see event.on
*/
export declare const GAME_AFTER_DRAW = "me.game.afterDraw";
/**
* Event for when the physic world is updated
* Data passed : {number} time the current time stamp
* @see event.on
*/
export declare const WORLD_STEP = "me.world.step";
/**
* Event for when a level is loaded
* Data passed : {string} Level Name
* @see event.on
*/
export declare const LEVEL_LOADED = "me.game.onLevelLoaded";
/**
* Event for when everything has loaded
* Data passed : none
* @see event.on
*/
export declare const LOADER_COMPLETE = "me.loader.onload";
/**
* Event for displaying a load progress indicator
* Data passed : {number} [0 .. 1], {Resource} resource object
* @see event.on
*/
export declare const LOADER_PROGRESS = "me.loader.onProgress";
/**
* Event for when an error occur during preloading
* Data passed : {Resource} resource object
* @see event.on
*/
export declare const LOADER_ERROR = "me.loader.onError";
/**
* Event for pressing a binded key
* Data passed : {string} user-defined action, {number} keyCode,
* {boolean} edge state
* Edge-state is for detecting "locked" key bindings. When a locked key
* is pressed and held, the first event will have the third argument
* set true. Subsequent events will continue firing with the third
* argument set false.
* @see event.on
* @example
* me.input.bindKey(me.input.KEY.X, "jump", true); // Edge-triggered
* me.input.bindKey(me.input.KEY.Z, "shoot"); // Level-triggered
* me.event.on(me.event.KEYDOWN, (action, keyCode, edge) => {
* // Checking bound keys
* if (action === "jump") {
* if (edge) {
* this.doJump();
* }
*
* // Make character fall slower when holding the jump key
* this.vel.y = this.body.gravity;
* }
* });
*/
export declare const KEYDOWN = "me.input.keydown";
/**
* Event for releasing a binded key
* Data passed : {string} user-defined action, {number} keyCode
* @see event.on
* @example
* me.event.on(me.event.KEYUP, (action, keyCode) => {
* // Checking unbound keys
* if (keyCode == me.input.KEY.ESC) {
* if (me.state.isPaused()) {
* me.state.resume();
* }
* else {
* me.state.pause();
* }
* }
* });
*/
export declare const KEYUP = "me.input.keyup";
/**
* Event for when a gamepad is connected
* Data passed : {object} gamepad object
* @see event.on
*/
export declare const GAMEPAD_CONNECTED = "gamepad.connected";
/**
* Event for when a gamepad is disconnected
* Data passed : {object} gamepad object
* @see event.on
*/
export declare const GAMEPAD_DISCONNECTED = "gamepad.disconnected";
/**
* Event for when gamepad button/axis state is updated
* Data passed : {number} index
* Data passed : {string} type : "axes" or "buttons"
* Data passed : {number} button
* Data passed : {number} current.value
* Data passed : {boolean} current.pressed
* @see event.on
*/
export declare const GAMEPAD_UPDATE = "gamepad.update";
/**
* Event for pointermove events on the screen area
* Data passed : {me.Pointer} a Pointer object
* @see event.on
*/
export declare const POINTERMOVE = "me.event.pointermove";
/**
* Event for onPointerLockChange event
* Data passed : {boolean} pointer lock status (true/false)
* @see event.on
*/
export declare const POINTERLOCKCHANGE = "me.event.pointerlockChange";
/**
* Event for dragstart events on a Draggable entity
* Data passed:
* {object} the drag event
* {object} the Draggable entity
* @see event.on
*/
export declare const DRAGSTART = "me.game.dragstart";
/**
* Event for dragend events on a Draggable entity
* Data passed:
* {object} the drag event
* {object} the Draggable entity
* @see event.on
*/
export declare const DRAGEND = "me.game.dragend";
/**
* Event for when the (browser) window is resized
* Data passed : {Event} Event object
* @see event.on
*/
export declare const WINDOW_ONRESIZE = "globalThis.onresize";
/**
* Event for when the canvas is resized
* (this usually follows a WINDOW_ONRESIZE event).
* Data passed : {number} canvas width
* Data passed : {number} canvas height
* @see event.on
*/
export declare const CANVAS_ONRESIZE = "canvas.onresize";
/**
* Event for when the viewport is resized
* (this usually follows a WINDOW_ONRESIZE event, when using the `flex` scaling mode is used and after the viewport was updated).
* Data passed : {number} viewport width
* Data passed : {number} viewport height
* Data passed : {Camera2d} a reference to the camera viewport being resized
* @see event.on
*/
export declare const VIEWPORT_ONRESIZE = "viewport.onresize";
/**
* Event for when the device is rotated
* Data passed : {Event} Event object
* @see event.on
*/
export declare const WINDOW_ONORIENTATION_CHANGE = "globalThis.orientationchange";
/**
* Event for when the (browser) window is scrolled
* Data passed : {Event} Event object
* @see event.on
*/
export declare const WINDOW_ONSCROLL = "globalThis.onscroll";
/**
* Event for when the viewport position is updated
* Data passed : {me.Vector2d} viewport position vector
* @see event.on
*/
export declare const VIEWPORT_ONCHANGE = "viewport.onchange";
/**
* Event for when the current context is lost
* Data passed : {me.Renderer} the current renderer instance
* @see event.on
*/
export declare const ONCONTEXT_LOST = "renderer.contextlost";
/**
* Event for when the current context is restored
* Data passed : {me.Renderer} the current renderer instance`
* @see event.on
*/
export declare const ONCONTEXT_RESTORED = "renderer.contextrestored";
interface Events {
[DOM_READY]: () => void;
[BOOT]: () => void;
[TICK]: (time: number) => void;
[BLUR]: () => void;
[FOCUS]: () => void;
[STATE_PAUSE]: () => void;
[STATE_RESUME]: (time: number) => void;
[STATE_STOP]: () => void;
[STATE_RESTART]: (time: number) => void;
[STATE_CHANGE]: () => void;
[STAGE_RESET]: (stage: Stage) => void;
[VIDEO_INIT]: (renderer: Renderer) => void;
[GAME_INIT]: (app: Application) => void;
[GAME_RESET]: () => void;
[GAME_BEFORE_UPDATE]: (time: number) => void;
[GAME_AFTER_UPDATE]: (time: number) => void;
[GAME_UPDATE]: (time: number) => void;
[GAME_BEFORE_DRAW]: (time: DOMHighResTimeStamp) => void;
[GAME_AFTER_DRAW]: (time: DOMHighResTimeStamp) => void;
[WORLD_STEP]: (dt: number) => void;
[LEVEL_LOADED]: (levelId: string) => void;
[LOADER_COMPLETE]: () => void;
[LOADER_PROGRESS]: (progress: number, resource: unknown) => void;
[LOADER_ERROR]: (resource: unknown) => void;
[KEYDOWN]: (action: string | undefined, keyCode: number, edge: boolean) => void;
[KEYUP]: (action: string | undefined, keyCode: number) => void;
[GAMEPAD_CONNECTED]: (gamepad: Gamepad) => void;
[GAMEPAD_DISCONNECTED]: (gamepad: Gamepad) => void;
[GAMEPAD_UPDATE]: (index: string, type: "buttons" | "axes", button: number, current: {
value: number;
pressed: boolean;
}) => void;
[POINTERMOVE]: (pointer: Pointer) => void;
[POINTERLOCKCHANGE]: (locked: boolean) => void;
[DRAGSTART]: (event: unknown, draggable: Draggable) => void;
[DRAGEND]: (event: unknown, draggable: Draggable) => void;
[WINDOW_ONRESIZE]: (event: Event) => void;
[WINDOW_ONORIENTATION_CHANGE]: (event: Event) => void;
[WINDOW_ONSCROLL]: (event: Event) => void;
[CANVAS_ONRESIZE]: (width: number, height: number) => void;
[VIEWPORT_ONRESIZE]: (width: number, height: number) => void;
[VIEWPORT_ONCHANGE]: (position: Vector2d) => void;
[ONCONTEXT_LOST]: (renderer: Renderer) => void;
[ONCONTEXT_RESTORED]: (renderer: Renderer) => void;
}
/**
* Add a listener for a given event.
* @param eventName - The event name.
* @param listener - The listener function.
* @param [context] - The context to invoke the listener with.
* @example
* me.event.on("event-name", myFunction, this);
*/
export declare function on(eventName: E, listener: Events[E], context?: any): () => void;
/**
* Add a one-time listener for a given event.
* @param eventName - The event name.
* @param listener - The listener function.
* @param [context] - The context to invoke the listener with.
* @example
* me.event.once("event-name", myFunction, this);
*/
export declare function once(eventName: E, listener: Events[E], context?: any): void;
/**
* remove the given listener for a given event.
* @param eventName - The event name.
* @param listener - The listener function.
* @param [context] - The context that was used when registering the listener.
* @example
* me.event.off("event-name", myFunction);
*/
export declare function off(eventName: E, listener: Events[E], context?: any): void;
/**
* emit (trigger) the specified event.
* @param eventName - The event name.
* @param args - arguments to be passed to the listener functions.
* @example
* me.event.emit("event-name", arg1, arg2);
*/
export declare function emit(eventName: E, ...args: Parameters): void;
/**
* Check if a listener is registered for a given event.
* @param eventName - The event name.
* @param listener - The listener function.
* @param [context] - The context that was used when registering the listener.
* @returns true if the listener is registered.
* @example
* if (me.event.has("event-name", myFunction)) {
* // listener is registered
* }
*/
export declare function has(eventName: E, listener: Events[E], context?: any): boolean;
export {};
//# sourceMappingURL=event.d.ts.map