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.");
        }
Ejemplo n.º 2
0
        public RtppdApis(Plugin rtppd_plugin)
        {
            rtppd = rtppd_plugin as RealTimePPDisplayerPlugin;

            rtppd.RegisterDisplayer("restful", (id) => m_restfuile_displayers[id ?? 0] = new RestfulDisplayer(id));
        }