/// <summary>キャラ名によってキャラをロードします。</summary> /// <param name="characterName">読み込み対象のキャラ名</param> private void LoadCharacter(string characterName) { string errorMessage = string.Empty; try { Character = IronPythonCharacterLoader.LoadCharacter(characterName); } catch (Exception ex1) { errorMessage += "IronPython: " + ex1.Message + "\n\n"; try { Character = MEFCharacterLoader.Load(characterName); } catch (Exception ex2) { errorMessage += "MEF: " + ex2.Message + "\n\n"; MessageBox.Show( "キャラクターのロードに失敗したためアプリケーションが起動できません。アプリケーションを終了します。\n" + errorMessage, "Harriet キャラクターの初期化に失敗しました", MessageBoxButton.OK, MessageBoxImage.Error ); Environment.Exit(1); } } SyncSizeSetting(_setting); }
/// <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> /// <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> /// <param name="newCharacterName">変更したいキャラの名前</param> /// <returns>キャラ変更して大丈夫な場合はtrue、そうでない場合はfalse</returns> public static bool CheckChangeCharacterValidity(string newCharacterName) { string errorMessage = string.Empty; Action showErrorAction = () => MessageBox.Show( "指定したキャラの読み込み中にエラーが発生しました。スクリプトかMEFライブラリのうち意図した方のエラーを確認してください:\n\n" + errorMessage, "Harriet キャラロード失敗", MessageBoxButton.OK, MessageBoxImage.Error ); bool ironPythonLoadValid = true; try { IronPythonCharacterLoader.CheckCharacterValidity(newCharacterName); } catch (Exception ex) { ironPythonLoadValid = false; errorMessage += $"--IronPython:{ex.Message}--\n\n"; } bool mefLoadValid = true; try { MEFCharacterLoader.CheckValidity(newCharacterName); } catch (Exception ex) { mefLoadValid = false; errorMessage += $"--MEF:{ex.Message}--\n\n"; } if (!(ironPythonLoadValid || mefLoadValid)) { showErrorAction(); return(false); } else { return(true); } }