public ExtraApis(Plugin ortdp, Plugin rtppd) { _ortdp = ortdp as OsuRTDataProviderPlugin; _rtppd = rtppd as RealTimePPDisplayerPlugin; _ortdp.ListenerManager.OnPlayModeChanged += (l, c) => _mode = c; _ortdp.ListenerManager.OnModsChanged += (c) => _mods = (uint)c.Mod; _ortdp.ListenerManager.OnBeatmapChanged += (b) => _beatmap = b; }
/// <summary> /// 使用<see cref="OsuRTDataProvider.OsuRTDataProviderPlugin" />及 /// <see cref="RealTimePPDisplayer.RealTimePPDisplayerPlugin" />辅助构建ORTDP类 /// </summary> public OrtdpWrapper(OsuRTDataProviderPlugin ortdp, RealTimePPDisplayerPlugin rtppd, RtppdInfo d) { _beatmapDb = new OsuBeatmapDb(); Beatmap = new Beatmap(); _arp = rtppd ?? new RealTimePPDisplayerPlugin(); _rtppi = d ?? new RtppdInfo(); _arp.RegisterDisplayer("osuToolsDisplayer", id => _rtppi = _rtppi ?? new RtppdInfo()); InitListener(ortdp); var format = LocalizationInfo.Current.Translations["LANG_INFO_STH_INITED"]; OutputHelper.Output(string.Format(format, "ORTDP")); Application.ThreadException += Application_ThreadException; }
private void OnPluginLoaded(PluginEvents.LoadCompleteEvent @event) { //Get ORTDP&RTPP plugin ortdp_plugin = @event.Host.EnumPluings().OfType <OsuRTDataProviderPlugin>().FirstOrDefault(); rtpp_plugin = @event.Host.EnumPluings().OfType <RealTimePPDisplayerPlugin>().FirstOrDefault(); if (ortdp_plugin == null) { logger.LogError("Plugin ORTDP is not found and can't able to collect/upload play data. please install ORTDP plugin. just type 'plugins install provider' and restart Sync."); return; } if (rtpp_plugin == null) { logger.LogError("Plugin RTPP is not found and can't able to collect/upload play data. please install RTPP plugin. just type 'plugins install displayer' and restart Sync."); return; } //bind events. ortdp_plugin.ListenerManager.OnStatusChanged += ListenerManager_OnStatusChanged; ortdp_plugin.ListenerManager.OnBeatmapChanged += ListenerManager_OnBeatmapChanged; ortdp_plugin.ListenerManager.OnPlayerChanged += ListenerManager_OnPlayerChanged; ortdp_plugin.ListenerManager.OnErrorStatisticsChanged += ListenerManager_OnErrorStatisticsChanged; //add a shadow display for getting data easy from rtpp plugin. var shadow_displayer_name = "cute_bunny"; Func <int?, DisplayerBase> displayer_creator = new Func <int?, DisplayerBase>(id => displayer); rtpp_plugin.RegisterDisplayer(shadow_displayer_name, displayer_creator); var add_displayer_method = typeof(RealTimePPDisplayerPlugin).GetMethod("AddDisplayer", BindingFlags.NonPublic | BindingFlags.Instance); add_displayer_method.Invoke(rtpp_plugin, new object[] { shadow_displayer_name }); logger.LogInfomation("Plugin is ready."); }
public RtppdApis(Plugin rtppd_plugin) { rtppd = rtppd_plugin as RealTimePPDisplayerPlugin; rtppd.RegisterDisplayer("restful", (id) => m_restfuile_displayers[id ?? 0] = new RestfulDisplayer(id)); }