Example #1
0
 private void ModApiUpdate()
 {
     lock (EventLock)
     {
         foreach (var currentModQueue in UpdateQueue)
         {
             while (currentModQueue.Value.TryDequeue(out var value))
             {
                 RegisteredUpdateMods[currentModQueue.Key](value);
             }
         }
     }
 }
Example #2
0
 public override void Update()
 {
     base.Update();
     lock (EventLock)
     {
         foreach (var currentModQueue in UpdateQueue)
         {
             byte[] value;
             while (currentModQueue.Value.TryDequeue(out value))
             {
                 RegisteredUpdateMods[currentModQueue.Key](value);
             }
         }
     }
 }
Example #3
0
        /// <summary>
        ///     Unregisters a mod handler.
        /// </summary>
        /// <returns><c>true</c>, if mod handler was unregistered, <c>false</c> otherwise.</returns>
        /// <param name="modName">Mod Name.</param>
        public bool UnregisterModHandler(string modName)
        {
            var unregistered = false;

            lock (EventLock)
            {
                if (RegisteredRawMods.ContainsKey(modName))
                {
                    RegisteredRawMods.Remove(modName);
                    unregistered = true;
                }
                if (RegisteredUpdateMods.ContainsKey(modName))
                {
                    RegisteredUpdateMods.Remove(modName);
                    UpdateQueue.Remove(modName);
                    unregistered = true;
                }
                if (RegisteredFixedUpdateMods.ContainsKey(modName))
                {
                    RegisteredFixedUpdateMods.Remove(modName);
                    FixedUpdateQueue.Remove(modName);
                    unregistered = true;
                }
            }
            return(unregistered);
        }
Example #4
0
 /// <summary>
 ///     Registers a mod handler function that will be called on every Update.
 /// </summary>
 /// <param name="modName">Mod Name.</param>
 /// <param name="handlerFunction">Handler function.</param>
 public bool RegisterUpdateModHandler(string modName, MessageCallback handlerFunction)
 {
     lock (EventLock)
     {
         if (RegisteredUpdateMods.ContainsKey(modName))
         {
             Debug.Log($"[LMP]: Failed to register Update mod handler for {modName}, mod already registered");
             return(false);
         }
         Debug.Log($"[LMP]: Registered Update mod handler for {modName}");
         RegisteredUpdateMods.Add(modName, handlerFunction);
         UpdateQueue.Add(modName, new ConcurrentQueue <byte[]>());
     }
     return(true);
 }