public void Close() { m_client.Close(); m_cmdTranslator.Dispose(); m_cmdTranslator = null; foreach (ProfilePluginConfiguration config in m_activePlugins.Keys) { IJinxBotPlugin plugin = m_activePlugins[config]; IMultiClientPlugin mcp = plugin as IMultiClientPlugin; if (mcp != null) { mcp.RemoveClient(this); } ISingleClientPlugin scp = plugin as ISingleClientPlugin; if (scp != null) { scp.UnregisterEvents(this); scp.DestroyPluginWindows(this.ProfileDocument); } PluginFactory.ClosePluginInstance(config, plugin); JinxBotConfiguration.Instance.Save(); } }
public void Close() { while (m_clientPlugins.Count > 0) { ISingleClientPlugin plugin = m_clientPlugins[0]; plugin.DestroyPluginWindows(m_view); if (m_clientPluginSettings.ContainsKey(plugin)) { Dictionary <string, string> settings = m_clientPluginSettings[plugin]; plugin.Shutdown(settings); } } }
private bool ProcessPlugin(bool hasSetCommandQueue, ProfilePluginConfiguration pluginConfig) { IJinxBotPlugin plugin = PluginFactory.CreatePlugin(pluginConfig); m_activePlugins.Add(pluginConfig, plugin); // test if the plugin is a command queue ICommandQueue commandQueuePlugin = plugin as ICommandQueue; if (!hasSetCommandQueue && commandQueuePlugin != null) { m_client.CommandQueue = commandQueuePlugin; hasSetCommandQueue = true; } // test if the plugin is a database plugin IJinxBotDatabase databasePlugin = plugin as IJinxBotDatabase; if (databasePlugin != null) { m_database = databasePlugin; } // test if the plugin is a command handler ICommandHandler handler = plugin as ICommandHandler; if (handler != null) { m_commandHandlers.Add(handler); } // test if the plugin is multi-client IMultiClientPlugin mcp = plugin as IMultiClientPlugin; if (mcp != null) { mcp.AddClient(this); } else { ISingleClientPlugin scp = plugin as ISingleClientPlugin; if (scp != null) { scp.CreatePluginWindows(this.ProfileDocument); scp.RegisterEvents(this); } } return(hasSetCommandQueue); }