public void DeInitPlugin() { try { // TTSアクションを元に戻す this.StopReplaceTTSMethodTimer(); this.RestoreTTSMethod(); // TTSコントローラを開放する SpeechController.Default.Free(); // Bridgeにメソッドを解除する PlayBridge.Instance.PlayMainDeviceDelegate = null; PlayBridge.Instance.PlaySubDeviceDelegate = null; // Discordを終了する DiscordClientModel.Instance.Dispose(); // TTSサーバを終了する TTSServerController.End(); // FF14監視スレッドを開放する FFXIVWatcher.Deinitialize(); // 漢字変換オブジェクトを開放する KanjiTranslator.Default.Dispose(); // TTS用waveファイルを削除する? if (Settings.Default.WaveCacheClearEnable) { var appdir = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"anoyetta\ACT\tts cache"); if (Directory.Exists(appdir)) { foreach (var file in Directory.GetFiles(appdir, "*.wav")) { try { File.Delete(file); } catch { } } } } // 設定を保存する Settings.Default.Save(); this.PluginStatusLabel.Text = "Plugin Exited"; } catch (Exception ex) { this.Logger.Error(ex, "DeInitPlugin error."); } }
/// <summary> /// 後片付けをする /// </summary> public static void Deinitialize() { lock (lockObject) { if (instance != null) { instance.watchWorker?.CancelAsync(); instance = null; } } }
/// <summary> /// 後片付けをする /// </summary> public static void Deinitialize() { lock (lockObject) { if (instance != null) { instance.watchWorker?.Abort(); instance.isRunning = false; instance = null; } } }
/// <summary> /// 初期化する /// </summary> public static void Initialize() { lock (lockObject) { if (instance != null) { return; } instance = new FFXIVWatcher(); instance.Start(); } }
public void InitPlugin( IActPluginV1 plugin, TabPage pluginScreenSpace, Label pluginStatusText) { AppLog.LoadConfiguration(AppLog.HojoringConfig); this.Logger.Trace(Assembly.GetExecutingAssembly().GetName().ToString() + " start."); try { this.PluginStatusLabel = pluginStatusText; pluginScreenSpace.Text = "YUKKURI"; var pluginInfo = ActGlobals.oFormActMain.PluginGetSelfData(plugin); if (pluginInfo != null) { this.PluginDirectory = pluginInfo.pluginFile.DirectoryName; } // 設定ファイルを読み込む Settings.Default.Load(); // TTSのキャッシュを移行する this.MigrateTTSCache(); // HojoringのSplashを表示する WPFHelper.Start(); UpdateChecker.ShowSplash(); // TTSサーバを開始する TTSServerController.Start(); // 漢字変換を初期化する KanjiTranslator.Default.Initialize(); // TTSを初期化する SpeechController.Default.Initialize(); // FF14監視スレッドを初期化する FFXIVWatcher.Initialize(); // 設定Panelを追加する pluginScreenSpace.Controls.Add( this.ConfigPanel = new TTSYukkuriConfigPanel() { Dock = DockStyle.Fill }); // TTSメソッドを置き換える this.StartReplaceTTSMethodTimer(); // Discordに接続する DiscordClientModel.Instance.Initialize(); DiscordClientModel.Instance.Connect(true); // アップデートを確認する Task.Run(() => { this.Update(); }); PluginStatusLabel.Text = "Plugin Started"; } catch (Exception ex) { this.Logger.Error(ex, "InitPlugin error."); MessageBox.Show( ActGlobals.oFormActMain, "プラグインの初期化中に例外が発生しました。環境を確認してACTを再起動して下さい" + Environment.NewLine + Environment.NewLine + ex.ToString(), "TTSゆっくりプラグイン", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // TTSをゆっくりに戻す Settings.Default.TTS = TTSType.Yukkuri; Settings.Default.Save(); } }
public void InitPlugin( IActPluginV1 plugin, TabPage pluginScreenSpace, Label pluginStatusText) { // タイトルをセットする pluginScreenSpace.Text = "YUKKURI"; EnvironmentMigrater.Migrate(); MasterFilePublisher.Publish(); WPFHelper.Start(); WPFHelper.BeginInvoke(async() => { AppLog.LoadConfiguration(AppLog.HojoringConfig); this.Logger?.Trace(Assembly.GetExecutingAssembly().GetName().ToString() + " start."); try { EnvironmentHelper.GarbageLogs(); EnvironmentHelper.StartActivator(() => { ConfigBaseView.Instance.SetActivationStatus(false); this.DeInitPlugin(); }); this.Logger.Trace("[YUKKURI] Start InitPlugin"); this.PluginStatusLabel = pluginStatusText; var pluginInfo = ActGlobals.oFormActMain.PluginGetSelfData(plugin); if (pluginInfo != null) { this.PluginDirectory = pluginInfo.pluginFile.DirectoryName; } // .NET FrameworkとOSのバージョンを確認する if (!UpdateChecker.IsAvailableDotNet() || !UpdateChecker.IsAvailableWindows()) { NotSupportedView.AddAndShow(pluginScreenSpace); return; } // 設定ファイルを読み込む // TP廃止につき無効化する Settings.Default.Load(); Settings.Default.StatusAlertSettings.EnabledTPAlert = false; // 漢字変換を初期化する KanjiTranslator.Default.Initialize(); // TTSキャッシュの移行とGarbageを行う await Task.Run(() => { this.MigrateTTSCache(); this.GarbageTTSCache(); }); // HojoringのSplashを表示する WPFHelper.Start(); UpdateChecker.ShowSplash(); await Task.Run(() => { // TTSサーバを開始する TTSServerController.Start(); // TTSを初期化する SpeechController.Default.Initialize(); // FF14監視スレッドを初期化する FFXIVWatcher.Initialize(); }); // 設定Panelを追加する pluginScreenSpace.Controls.Add(new ElementHost() { Child = new ConfigBaseView(), Dock = DockStyle.Fill, }); // TTSメソッドを置き換える this.StartReplaceTTSMethodTimer(); await Task.Run(() => { // DISCORD BOT クライアントを初期化する DiscordClientModel.Model.Initialize(); // AutoJoinがONならば接続する if (Settings.Default.DiscordSettings.AutoJoin) { DiscordClientModel.Model.Connect(true); } }); await Task.Run(() => { // VOICEROIDを起動する if (SpeechController.Default is VoiceroidSpeechController ctrl) { ctrl.Start(); } }); // Bridgeにメソッドを登録する PlayBridge.Instance.SetBothDelegate((message, isSync, volume) => this.Speak(message, PlayDevices.Both, isSync, volume)); PlayBridge.Instance.SetMainDeviceDelegate((message, isSync, volume) => this.Speak(message, PlayDevices.Main, isSync, volume)); PlayBridge.Instance.SetSubDeviceDelegate((message, isSync, volume) => this.Speak(message, PlayDevices.Sub, isSync, volume)); PlayBridge.Instance.SetSyncStatusDelegate(() => Settings.Default.Player == WavePlayerTypes.WASAPIBuffered); // テキストコマンドの購読を登録する this.SubscribeTextCommands(); // サウンドデバイスを初期化する SoundPlayerWrapper.Init(); SoundPlayerWrapper.LoadTTSCache(); PluginStatusLabel.Text = "Plugin Started"; this.Logger.Trace("[YUKKURI] End InitPlugin"); // 共通ビューを追加する CommonViewHelper.Instance.AddCommonView( pluginScreenSpace.Parent as TabControl); // アップデートを確認する await Task.Run(() => this.Update()); } catch (Exception ex) { this.Logger.Error(ex, "InitPlugin error."); ModernMessageBox.ShowDialog( "Plugin init error !", "ACT.TTSYukkuri", System.Windows.MessageBoxButton.OK, ex); // TTSをゆっくりに戻す Settings.Default.TTS = TTSType.Yukkuri; Settings.Default.Save(); } }); }
public void DeInitPlugin() { if (!this.isLoaded) { return; } try { // 設定を保存する Settings.Default.Save(); FFXIV.Framework.Config.Save(); FFXIV.Framework.Config.Free(); // TTSアクションを元に戻す this.StopReplaceTTSMethodTimer(); this.RestoreTTSMethod(); // TTSコントローラを開放する SpeechController.Default.Free(); // Bridgeにメソッドを解除する PlayBridge.Instance.SetBothDelegate(null); PlayBridge.Instance.SetMainDeviceDelegate(null); PlayBridge.Instance.SetSubDeviceDelegate(null); // Discordを終了する DiscordClientModel.Model.Dispose(); // FF14監視スレッドを開放する FFXIVWatcher.Deinitialize(); // 漢字変換オブジェクトを開放する KanjiTranslator.Default.Dispose(); // TTS用waveファイルを削除する? if (Settings.Default.WaveCacheClearEnable) { var appdir = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"anoyetta\ACT\tts cache"); if (Directory.Exists(appdir)) { var files = new List <string>(); files.AddRange(Directory.GetFiles(appdir, "*.wav")); files.AddRange(Directory.GetFiles(appdir, "*.mp3")); foreach (var file in files) { try { File.Delete(file); } catch { } } } } this.PluginStatusLabel.Text = "Plugin Exited"; } catch (Exception ex) { this.Logger.Error(ex, "DeInitPlugin error."); } }
public void InitPlugin( IActPluginV1 plugin, TabPage pluginScreenSpace, Label pluginStatusText) { // タイトルをセットする pluginScreenSpace.Text = "YUKKURI"; WPFHelper.Start(); WPFHelper.BeginInvoke(async() => { // FFXIV_MemoryReaderを先にロードさせる await FFXIVReader.Instance.WaitForReaderToStartedAsync(); AppLog.LoadConfiguration(AppLog.HojoringConfig); this.Logger.Trace(Assembly.GetExecutingAssembly().GetName().ToString() + " start."); try { this.Logger.Trace("[YUKKURI] Start InitPlugin"); this.PluginStatusLabel = pluginStatusText; var pluginInfo = ActGlobals.oFormActMain.PluginGetSelfData(plugin); if (pluginInfo != null) { this.PluginDirectory = pluginInfo.pluginFile.DirectoryName; } // .NET FrameworkとOSのバージョンを確認する if (!UpdateChecker.IsAvailableDotNet() || !UpdateChecker.IsAvailableWindows()) { NotSupportedView.AddAndShow(pluginScreenSpace); return; } // 設定ファイルを読み込む Settings.Default.Load(); // 漢字変換を初期化する KanjiTranslator.Default.Initialize(); // TTSのキャッシュを移行する await Task.Run(() => this.MigrateTTSCache()); // HojoringのSplashを表示する WPFHelper.Start(); UpdateChecker.ShowSplash(); await Task.Run(() => { // TTSサーバを開始する TTSServerController.Start(); // TTSを初期化する SpeechController.Default.Initialize(); // FF14監視スレッドを初期化する FFXIVWatcher.Initialize(); }); // 設定Panelを追加する pluginScreenSpace.Controls.Add(new ElementHost() { Child = new ConfigBaseView(), Dock = DockStyle.Fill, }); // TTSメソッドを置き換える this.StartReplaceTTSMethodTimer(); await Task.Run(() => { // Discordに接続する DiscordClientModel.Model.Initialize(); DiscordClientModel.Model.Connect(true); }); await Task.Run(() => { // VOICEROIDを起動する if (SpeechController.Default is VoiceroidSpeechController ctrl) { ctrl.Start(); } }); // Bridgeにメソッドを登録する PlayBridge.Instance.SetBothDelegate((message, isSync) => this.Speak(message, PlayDevices.Both, isSync)); PlayBridge.Instance.SetMainDeviceDelegate((message, isSync) => this.Speak(message, PlayDevices.Main, isSync)); PlayBridge.Instance.SetSubDeviceDelegate((message, isSync) => this.Speak(message, PlayDevices.Sub, isSync)); PlayBridge.Instance.SetSyncStatusDelegate(() => Settings.Default.Player == WavePlayerTypes.WASAPIBuffered); // サウンドデバイスを初期化する SoundPlayerWrapper.Init(); PluginStatusLabel.Text = "Plugin Started"; this.Logger.Trace("[YUKKURI] End InitPlugin"); // アップデートを確認する await Task.Run(() => this.Update()); } catch (Exception ex) { this.Logger.Error(ex, "InitPlugin error."); ModernMessageBox.ShowDialog( "Plugin init error !", "ACT.TTSYukkuri", System.Windows.MessageBoxButton.OK, ex); // TTSをゆっくりに戻す Settings.Default.TTS = TTSType.Yukkuri; Settings.Default.Save(); } }); }