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

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