rage-framework-rpc/src/index.js

63 lines
1.7 KiB
JavaScript
Raw Normal View History

2018-11-01 13:31:53 +00:00
const util = require('./util.js');
//const isClient = !!mp.game.joaat;
//const isCEF = !!mp.trigger;
const listeners = {};
/*mp.events.add('rbus:process', (data) => {
});*/
const rbus = {};
/**
* Register an event listener.
* @param {string} eventName - The name of the event.
* @param {function} cb - The event's callback. The return value will be sent back to the caller.
*/
rbus.on = (eventName, cb) => {
if(!listeners[eventName]) listeners[eventName] = [];
listeners[eventName].push(cb);
};
/**
* Unregister an event listener.
* @param {string} eventName - The name of the event.
* @param {function} cb - The callback that was registered with `on`.
*/
rbus.off = (eventName, cb) => {
if(!listeners[eventName]) return;
listeners[eventName] = listeners[eventName].filter(listener => listener !== cb);
};
/**
* Calls a local event listener.
* @param {string} eventName - The name of the event.
* @returns {Promise} - The result from the local event listener.
*/
rbus.send = (eventName) => {
if(!listeners[eventName] || !listeners[eventName].length) return Promise.reject('NO_LISTENERS');
return Promise.resolve(listeners[eventName][0]());
};
/**
* Calls a remote event listener residing on the server.
* @param {string} eventName - The name of the event.
* @returns {Promise} - The result from the remote event listener.
*/
rbus.sendServer = (eventName) => {
};
/**
* Calls a remote event listener residing on the client.
* @param player - The player to send to
* @param {string} eventName - The name of the event
* @returns {Promise} - The result from the remote event listener
*/
rbus.sendClient = (player, eventName) => {
};
module.exports = rbus;