Beispiel #1
0
        /// <summary>
        /// プラグインの終了処理
        /// </summary>
        void FinPlugins()
        {
            NakoAPIFuncBank bank = NakoAPIFuncBank.Instance;

            foreach (INakoPlugin plugin in bank.PluginList.Values)
            {
                plugin.PluginFin(this);
            }
        }
Beispiel #2
0
        /// <summary>
        /// システム関数を登録する
        /// </summary>
        protected void RegisterSysCall()
        {
            NakoAPIFuncBank bank = NakoAPIFuncBank.Instance;

            // (1) LoaderInfo で指定のプラグインのみプリロード
            if (LoaderInfo.PreloadModules != null)
            {
                foreach (INakoPlugin plugin in LoaderInfo.PreloadModules)
                {
                    string fullname = plugin.GetType().FullName;
                    if (!bank.PluginList.ContainsKey(fullname))
                    {
                        bank.PluginList[fullname] = plugin;
                        bank.SetPluginInstance(plugin);
                        plugin.DefineFunction(bank);
                    }
                }
            }

            // (2) プラグインを登録
            LoadPlugins();

            // (3) 重要プラグインをロード
            if (LoaderInfo.ImportantModules != null)
            {
                foreach (INakoPlugin plugin in LoaderInfo.ImportantModules)
                {
                    string fullname = plugin.GetType().FullName;
                    if (!bank.PluginList.ContainsKey(fullname))
                    {
                        bank.PluginList[fullname] = plugin;
                        bank.SetPluginInstance(plugin);
                        plugin.DefineFunction(bank);
                    }
                }
            }

            // --- 各種登録作業 ---
            // トークンに予約語句を追加
            NakoReservedWord.Init(TokenDic);
            // 使用識別フラグをリセット
            bank.ResetUsedFlag();
            // Global変数とシステム辞書に単語を登録
            NakoAPIFuncBank.Instance.RegisterToSystem(TokenDic, GlobalVar);
        }