Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global.__eventListeners = ds_map_create();
- global.eventManager = {};
- /*
- * @description Register an event listener
- * @function event_on(event, callback, data, destroy)
- * @param {string} event
- * @param {function} callback
- * @param {*} data
- * @param {boolean} destroy
- */
- function event_on(event, callback, data, destroy) {
- if (!is_real(ds_map_find_value(global.__eventListeners, event))) {
- ds_map_add(global.__eventListeners, event, ds_list_create());
- }
- var eventListeners = ds_map_find_value(global.__eventListeners, event);
- ds_list_add(eventListeners, {
- callback: callback,
- data: data,
- destroy: destroy
- });
- }
- /*
- * @description Register a trigger
- * @function event_trigger_create(callback, data)
- * @param {function} callback
- * @param {string} event
- */
- function event_trigger_create(callback, data) {
- var identifier = string(random(1000));
- event_on(identifier, callback, data, true);
- return identifier;
- }
- /*
- * @description Remove a group of event listeners
- * @function event_off(event)
- * @param {string} event
- */
- function event_off(event) {
- if (!is_real(ds_map_find_value(global.__eventListeners, event))) {
- return false;
- }
- ds_map_delete(global.__eventListeners, event);
- }
- /*
- * @description Emit an event
- * @function event_emit(event, payload)
- * @param {string} event
- * @param {*} payload
- */
- function event_emit(event, payload) {
- var eventListeners = ds_map_find_value(global.__eventListeners, event);
- if (!is_real(eventListeners)) {
- return false;
- }
- for (var i = 0; i < ds_list_size(eventListeners); i++) {
- var eventListener = eventListeners[| i];
- eventListener.callback(payload, eventListener.data);
- if (eventListener.destroy) {
- ds_list_delete(eventListeners, i);
- }
- }
- return true;
- }
- /*
- * @description Fire a trigger
- * @function event_trigger_fire(identifier, payload)
- * @param {string} identifier
- * @param {*} payload
- */
- function event_trigger_fire(identifier, payload) {
- event_emit(identifier, payload);
- event_off(identifier);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement