UNPKG

@devoplx/nodecraft-engine

Version:

NodeCraft Engine, a revolutionary game development framework tailored for Node.js and TypeScript, redefines the landscape by seamlessly managing player data, inventory, AI, and more. This advanced engine empowers developers to craft immersive gaming exper

79 lines (77 loc) 2.3 kB
const createEngine = () => { const engineInstance = new adaptiEngine(); return engineInstance; }; class adaptiEngine { constructor() { this.status = "inactive"; this.events = {}; this.userEvents = ["userLoggedIn", "userLoggedOut"]; this.appEvents = ["onInitializing", "appClosed", "onInit"]; this.customEvents = []; } init() { this.emit("onInitializing", {}); this.status = "initializing"; this.emit("onInit"); } getEvents(filter = "all") { if (filter === "all") { return { userEvents: this.userEvents, appEvents: this.appEvents, customEvents: this.customEvents }; } else if (filter === "user") { return this.userEvents; } else if (filter === "app") { return this.appEvents; } } async on(eventName, callBack) { if (this.userEvents.includes(eventName) || this.appEvents.includes(eventName)) { if (!this.events[eventName]) { this.events[eventName] = []; } this.events[eventName].push(callBack); } else { console.log(`Custom event detected: ${eventName}. Adding to customEvents.`); if (!this.events[eventName]) { this.events[eventName] = []; } this.events[eventName].push(callBack); } } async emit(eventName, data, callBack) { return new Promise(async (resolve, reject) => { await this.invokeCallbacks(eventName, data, resolve, reject); if (callBack) { callBack(); } else { resolve(); } }); } async invokeCallbacks(eventName, data, resolve, reject) { const eventCallbacks = this.events[eventName]; if (eventCallbacks) { for (const callBack of eventCallbacks) { try { if (eventName === "userLoggedIn" || eventName === "userLoggedOut") { await callBack(data); } else if (eventName === "onInit" || eventName === "onInitializing") { const dataa = await callBack(data, this); } else { await callBack(data); } } catch (error) { console.error(`Error in callBack for event ${eventName}:`, error); reject(error); } } resolve(); } } } var core_default = createEngine; export { adaptiEngine, core_default as default };