public void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText) { pluginScreenSpace.Text = "鲶鱼精邮差"; PluginUI = new PostNamazuUi(); PluginUI.InitializeComponent(pluginScreenSpace); Dock = DockStyle.Fill; // Expand the UserControl to fill the tab's client space _lblStatus = pluginStatusText; // Hand the status label's reference to our local var _ffxivPlugin = GetFfxivPlugin(); //目前解析插件有bug,在特定情况下无法正常触发ProcessChanged事件。因此只能通过后台线程实时监控 //_ffxivPlugin.DataSubscription.ProcessChanged += ProcessChanged; _processSwitcher = new BackgroundWorker { WorkerSupportsCancellation = true }; _processSwitcher.DoWork += ProcessSwitcher; _processSwitcher.RunWorkerAsync(); if (PluginUI.AutoStart) { ServerStart(); } TriggIntegration(); PluginUI.ButtonStart.Click += ServerStart; PluginUI.ButtonStop.Click += ServerStop; _lblStatus.Text = "鲶鱼精邮差已启动"; }
/// <summary> /// 取得解析插件的进程(从獭爹那里偷来的) /// </summary> /// <returns></returns> private FFXIV_ACT_Plugin.FFXIV_ACT_Plugin GetFfxivPlugin() { FFXIV_ACT_Plugin.FFXIV_ACT_Plugin ffxivActPlugin = null; foreach (var actPluginData in ActGlobals.oFormActMain.ActPlugins) { if (actPluginData.pluginFile.Name.ToUpper().Contains("FFXIV_ACT_Plugin".ToUpper()) && actPluginData.lblPluginStatus.Text.ToUpper().Contains("FFXIV Plugin Started.".ToUpper())) { ffxivActPlugin = (FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)actPluginData.pluginObj; } } return(ffxivActPlugin ?? throw new Exception("找不到FFXIV解析插件,请确保其加载顺序位于鲶鱼精邮差之前。")); }
private object GetFfxivPlugin() { ffxivPlugin = null; var plugins = ActGlobals.oFormActMain.ActPlugins; foreach (var plugin in plugins) { if (plugin.pluginFile.Name.ToUpper().Contains("FFXIV_ACT_Plugin".ToUpper()) && plugin.lblPluginStatus.Text.ToUpper().Contains("FFXIV Plugin Started.".ToUpper())) { ffxivPlugin = (FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)plugin.pluginObj; } } if (ffxivPlugin == null) { throw new Exception("Could not find FFXIV plugin. Make sure that it is loaded before CutsceneSkip."); } return(ffxivPlugin); }
public void Setup(PostNamazu postNamazu) { FFXIV_ACT_Plugin = postNamazu.FFXIV_ACT_Plugin; FFXIV = postNamazu.FFXIV; Memory = postNamazu.Memory; PluginUI = postNamazu.PluginUI; SigScanner = postNamazu.SigScanner; try { GetOffsets(); } catch (Exception ex) { Log(ex.ToString()); isReady = false; } //Log("初始化完成"); if (FFXIV_ACT_Plugin != null && FFXIV != null && Memory != null) { isReady = true; } else { isReady = false; } }
public ParsePlugin(IActPluginV1 plugin, Network.INetworkMonitor network) { _parsePlugin = (FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)plugin; Network = network; }