Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
        }