예제 #1
0
        public Plugin[] GetLoadedPlugins()
        {
            Plugin[] ReturnArray = new Plugin[this.fPlugins.Values.Count];
            this.fPlugins.Values.CopyTo(ReturnArray, 0);

            return ReturnArray;
        }
예제 #2
0
        internal EventManager Fire(Plugin plugin, string eventName, EventPriority priority, object source, EventArgs args)
        {
            EventIdentity identity = new EventIdentity(eventName, priority);

            List<Task> tasks = new List<Task>();

            if (_strongEvents.ContainsKey(identity))
            {
                foreach (EventHandler handler in _strongEvents[identity])
                {
                    EventHandler localHandler = handler;
                    tasks.Add(Task.Factory.StartNew(() => SafeFire(localHandler, source, args)));
                }
            }
            if (_weakEvents.ContainsKey(identity))
            {
                foreach (EventHandler handler in _weakEvents[identity])
                {
                    EventHandler localHandler = handler;
                    tasks.Add(Task.Factory.StartNew(() => SafeFire(localHandler, source, args)));
                }
            }

            Task.WaitAll(tasks.ToArray());
            return this;
        }
예제 #3
0
파일: PluginManager.cs 프로젝트: habb0/IHI
        /// <summary>
        ///   Returns a Plugin array containing all the loaded plugins.
        /// </summary>
        public IEnumerable<Plugin> GetLoadedPlugins()
        {
            Plugin[] returnArray = new Plugin[_plugins.Values.Count];
            _plugins.Values.CopyTo(returnArray, 0);

            return returnArray;
        }
예제 #4
0
 /// <summary>
 ///   Start a plugin.
 /// </summary>
 /// <param name = "plugin">The plugin object you wish to start.</param>
 internal PluginManager StartPlugin(Plugin plugin)
 {
     EventFirer eventFirer = CoreManager.ServerCore.EventManager.NewEventFirer(plugin);
     plugin.Start(eventFirer);
     plugin.StartedResetEvent.Set();
     CoreManager.ServerCore.ConsoleManager.Notice("Plugin Manager", CoreManager.ServerCore.StringLocale.GetString("CORE:PLUGIN_STARTED", plugin.Name));
     return this;
 }
예제 #5
0
 public dynamic this[Plugin plugin, string name]
 {
     get
     {
         return this[plugin.Id + ':' + name];
     }
     set
     {
         this[plugin.Id + ':' + name] = value;
     }
 }
예제 #6
0
 /// <summary>
 /// Load and start a plugin with a relative path to the plugin directory.
 /// </summary>
 /// <param name="Filename">The filename of the plugin MINUS THE .dll!!</param>
 public PluginManager StartPlugin(Plugin Plugin)
 {
     if (!Plugin.IsRunning())
     {
         Plugin.Start();
         Plugin.fIsRunning = true;
         CoreManager.GetCore().GetStandardOut().PrintNotice("Plugin " + Plugin.GetName() + " has been started.");
     }
     return this;
 }
예제 #7
0
파일: PluginManager.cs 프로젝트: habb0/IHI
 /// <summary>
 ///   Start a plugin.
 /// </summary>
 /// <param name = "plugin">The plugin object you wish to start.</param>
 internal PluginManager StartPlugin(Plugin plugin)
 {
     plugin.Start();
     plugin.StartedResetEvent.Set();
     CoreManager.ServerCore.GetStandardOut().PrintNotice("Plugin " + plugin.Name + " has been started.");
     return this;
 }
예제 #8
0
파일: EventFirer.cs 프로젝트: habb0/Bluedot
 internal EventFirer(Plugin plugin)
 {
     _plugin = plugin;
 }