GetCharacterLoadedDirectory() публичный статический Метод

キャラのロードに使うdllまたはIronPythonスクリプトが含まれるフォルダのパスを取得します。
public static GetCharacterLoadedDirectory ( string characterName ) : string
characterName string キャラ名
Результат string
Пример #1
0
        /// <summary>キャラをロードし、インスタンスを返します。</summary>
        /// <param name="characterName">キャラの名前</param>
        /// <returns>キャラのインスタンス</returns>
        public static IHarrietCharacter Load(string characterName)
        {
            var loader = new MEFCharacterLoader();

            string path = DirectoryNames.GetCharacterLoadedDirectory(characterName);

            var catalog   = new DirectoryCatalog(path);
            var container = new CompositionContainer(catalog);

            container.ComposeParts(loader);
            return(loader.character);
        }
        /// <summary>キャラを定められた仕様にもとづいてロードする。失敗すると例外が飛んでくる</summary>
        public static IHarrietCharacter LoadCharacter(string characterName)
        {
            var engine = Python.CreateEngine();
            //名前参照にexeのディレクトリとキャラのディレクトリを追加
            var paths = engine.GetSearchPaths();

            paths.Add(Environment.CurrentDirectory);
            paths.Add(DirectoryNames.GetCharacterScriptDirectory(characterName));
            paths.Add(DirectoryNames.GetCharacterLoadedDirectory(characterName));
            engine.SetSearchPaths(paths);

            string path = GetInitializeScriptPath(characterName);

            if (!File.Exists(path))
            {
                throw new FileNotFoundException($"file '{path}' was not found: this is needed to load character data");
            }
            engine.ExecuteFile(path, engine.Runtime.Globals);

            dynamic loadFunction;
            bool    result = engine.Runtime.Globals.TryGetVariable(CharacterLoadFunction, out loadFunction);

            if (!result)
            {
                throw new InvalidOperationException($"'{CharacterLoadFunction}' function does not exist in '{path}'");
            }
            PythonFunction function = loadFunction as PythonFunction;

            if (function == null)
            {
                throw new InvalidOperationException($"'{CharacterLoadFunction}' defined in '{path}' is not function");
            }

            IHarrietCharacter character = loadFunction() as IHarrietCharacter;

            if (character == null)
            {
                throw new InvalidOperationException($"{CharacterLoadFunction} result does not implements IHarrietCharacter");
            }

            return(character);
        }
 private static string GetInitializeScriptPath(string characterName)
 {
     return(Path.Combine(DirectoryNames.GetCharacterLoadedDirectory(characterName), InitializeScriptName));
 }