Exemple #1
0
        /// <summary>
        /// usedに使ったスクリプトを登録する
        /// </summary>
        /// <param name="known">settingにある既知のスクリプト。キー:ファイル名</param>
        /// <param name="used">使ったスクリプト。キー:UsedScriptKey</param>
        /// <param name="name">スクリプト名</param>
        /// <param name="type">スクリプトの種類</param>
        static void AddUsedScript(
            Dictionary <string, ScriptData> known,
            Dictionary <UsedScriptKey, ScriptData> used,
            string name,
            ScriptType type)
        {
            var filename = Utils.GetScriptFilename(name, type);
            var key      = new UsedScriptKey {
                Name = name, Type = type
            };

            if (used.ContainsKey(key))
            {
                used[key].Increment();
                foreach (var d in used[key].Dependencies)
                {
                    d.Increment();
                }
                return;
            }
            else if (known.ContainsKey(filename))
            {
                used[key]      = known[filename].Clone();
                used[key].Name = name;
                foreach (var d in known[filename].Dependencies)
                {
                    var dkey = new UsedScriptKey {
                        Name = d.Name, Type = type
                    };
                    if (used.ContainsKey(dkey))
                    {
                        used[key].Dependencies.Add(used[dkey]);
                        used[dkey].Increment();
                    }
                    else
                    {
                        used[dkey] = d.Clone();
                        used[key].Dependencies.Add(used[dkey]);
                    }
                }
            }
            else
            {
                used[key] = new ScriptData
                {
                    Name     = name,
                    Filename = filename,
                };
            }
        }
Exemple #2
0
        /// <summary>
        /// スクリプトの抽出時に使う既知のスクリプトの辞書の作成
        /// </summary>
        /// <returns>キー:ファイル名,値:ScriptData</returns>
        internal Dictionary <string, ScriptData> GetScripts()
        {
            var scripts = new Dictionary <string, ScriptData>();
            var exedit  = new ScriptData
            {
                Filename = "exedit.anm",
                Author   = "KENくん",
                NicoId   = "im1696493",
                Url      = "http://spring-fragrance.mints.ne.jp/aviutl/",
                Comment  = "標準スクリプト",
            };

            scripts["exedit.anm"] = exedit.Clone();
            exedit.Filename       = "exedit.obj";
            scripts["exedit.obj"] = exedit.Clone();
            exedit.Filename       = "exedit.scn";
            scripts["exedit.scn"] = exedit.Clone();
            exedit.Filename       = "exedit.cam";
            scripts["exedit.cam"] = exedit.Clone();
            exedit.Filename       = "exedit.tra";
            scripts["exedit.tra"] = exedit;

            foreach (var author in Authors)
            {
                if (author == null)
                {
                    continue;
                }

                foreach (var script in author.Scripts)
                {
                    if (script == null || string.IsNullOrEmpty(script.Name))
                    {
                        continue;
                    }

                    var data = new ScriptData
                    {
                        Name     = script.Name,
                        Filename = script.Name,
                        Author   = author.Name,
                        NicoId   = script.NicoId,
                        Url      = script.Url,
                        Comment  = script.Comment,
                    };
                    scripts[script.Name] = data;
                }
            }

            foreach (var author in Authors)
            {
                if (author == null)
                {
                    continue;
                }
                foreach (var script in author.Scripts)
                {
                    if (script == null || string.IsNullOrEmpty(script.Name))
                    {
                        continue;
                    }
                    foreach (var d in script.Dependencies)
                    {
                        if (string.IsNullOrEmpty(d))
                        {
                            continue;
                        }

                        if (scripts.ContainsKey(d))
                        {
                            scripts[script.Name].Dependencies.Add(scripts[d]);
                        }
                        else
                        {
                            var data = new ScriptData
                            {
                                Name     = d,
                                Filename = d,
                            };
                            scripts[d] = data;
                            scripts[script.Name].Dependencies.Add(data);
                        }
                    }
                }
            }

            return(scripts);
        }