UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

69 lines (54 loc) 1.59 kB
import { assert } from "../../../../core/assert.js"; import { BehaviorStatus } from "../BehaviorStatus.js"; import { EntityBehavior } from "./EntityBehavior.js"; /** * Dispatch an event to an entity via {@link EntityComponentDataset#sendEvent} * @see WaitForEventBehavior * @author Alex Goldring * @copyright Company Named Limited (c) 2025 */ export class SendEventBehavior extends EntityBehavior { /** * ID of the event * @type {string} */ event = ""; data = {}; /** * * @type {number} */ target = -1; /** * * @param {string} event * @param {Object} [data] * @param {number} [target] */ fromJSON({ event, data = {}, target = -1 }) { assert.isString(event, 'event'); assert.isInteger(target, 'target'); this.event = event; this.data = data; this.target = target; } /** * * @param {{event:string, data?:Object, target?:number}} json * @return {SendEventBehavior} */ static fromJSON(json) { const r = new SendEventBehavior(); r.fromJSON(json); return r; } toString() { return `SendEventBehavior{ event: ${this.event}, data:${this.data}, target:${this.target} }`; } tick(timeDelta) { // console.log(`-> ${this}`); const target = this.target !== -1 ? this.target : this.entity; this.ecd.sendEvent(target, this.event, this.data); return BehaviorStatus.Succeeded; } }