Advertisement
Guest User

Untitled

a guest
Feb 18th, 2021
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. global.__eventListeners = ds_map_create();
  2. global.eventManager = {};
  3.  
  4. /*
  5.  * @description Register an event listener
  6.  * @function    event_on(event, callback, data, destroy)
  7.  * @param       {string} event
  8.  * @param       {function} callback
  9.  * @param       {*} data
  10.  * @param       {boolean} destroy
  11. */
  12. function event_on(event, callback, data, destroy) {
  13.     if (!is_real(ds_map_find_value(global.__eventListeners, event))) {
  14.         ds_map_add(global.__eventListeners, event, ds_list_create());
  15.     }
  16.    
  17.     var eventListeners = ds_map_find_value(global.__eventListeners, event);
  18.    
  19.     ds_list_add(eventListeners, {
  20.         callback: callback,
  21.         data: data,
  22.         destroy: destroy
  23.     });
  24. }
  25.  
  26. /*
  27.  * @description Register a trigger
  28.  * @function    event_trigger_create(callback, data)
  29.  * @param       {function} callback
  30.  * @param       {string} event
  31.  */
  32. function event_trigger_create(callback, data) {
  33.     var identifier = string(random(1000));
  34.    
  35.     event_on(identifier, callback, data, true);
  36.    
  37.     return identifier;
  38. }
  39.  
  40. /*
  41.  * @description Remove a group of event listeners
  42.  * @function    event_off(event)
  43.  * @param       {string} event
  44.  */
  45. function event_off(event) {
  46.     if (!is_real(ds_map_find_value(global.__eventListeners, event))) {
  47.         return false;
  48.     }
  49.    
  50.     ds_map_delete(global.__eventListeners, event);
  51. }
  52.  
  53. /*
  54.  * @description Emit an event
  55.  * @function    event_emit(event, payload)
  56.  * @param       {string} event
  57.  * @param       {*} payload
  58. */
  59. function event_emit(event, payload) {
  60.     var eventListeners = ds_map_find_value(global.__eventListeners, event);
  61.    
  62.     if (!is_real(eventListeners)) {
  63.         return false;
  64.     }
  65.    
  66.     for (var i = 0; i < ds_list_size(eventListeners); i++) {
  67.         var eventListener = eventListeners[| i];
  68.  
  69.         eventListener.callback(payload, eventListener.data);
  70.        
  71.         if (eventListener.destroy) {
  72.             ds_list_delete(eventListeners, i);
  73.         }
  74.     }
  75.    
  76.     return true;
  77. }
  78.  
  79. /*
  80.  * @description Fire a trigger
  81.  * @function    event_trigger_fire(identifier, payload)
  82.  * @param       {string} identifier
  83.  * @param       {*} payload
  84. */
  85. function event_trigger_fire(identifier, payload) {
  86.     event_emit(identifier, payload);
  87.     event_off(identifier);
  88. }
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement