/*
         * 因为MemoryReader扫Status比Mod快,如果使用Status来做是否开始打图的依据会无法及时获取当前MOD的信息.因此按Mod来判断是否开始打图,null为非打图状态
         */

        public override void OnCurrentModsChange(ModsInfo mod)
        {
            if (current_mod.Mod == mod.Mod)
            {
                return;
            }

            current_mod = mod;

            if (mod.Mod == ModsInfo.Mods.Unknown)
            {
                //Not Playing
                //RefPlugin.OnBeatmapChanged(null);
            }
            else
            {
                //Start to play
                //if (mod.Mod!=ModsInfo.Mods.None&&current_status == OsuStatus.Playing)
                {
                    var beatmap = GetCurrentBeatmap();

                    beatmap.OutputType = CurrentOutputType = OutputType.Play;

                    RefPanelPlugin.OnBeatmapChanged(new BeatmapChangedParameter()
                    {
                        beatmap = beatmap
                    });
                }
            }
        }
Example #2
0
        public override void OnCurrentModsChange(ModsInfo mod)
        {
            //如果mod相同或者mod是unknown的就不管了
            if (current_mod == mod || mod.Mod.HasFlag(OsuRTDataProvider.Mods.ModsInfo.Mods.Unknown))
            {
                return;
            }
            current_mod = mod;

            //在打图过程中mod变了,那可能就是ortdp要背锅了.jpg
            if (CurrentOutputType == OutputType.Play)
            {
                return;
            }

            //在选图界面改变Mods会输出,会重新计算PP并输出相关信息
            var beatmap = GetCurrentBeatmap();

            beatmap.OutputType = CurrentOutputType;

            RefPanelPlugin.OnBeatmapChanged(new BeatmapChangedParameter()
            {
                beatmap = beatmap
            });
        }
        protected void TrigListen()
        {
            var beatmap = GetCurrentBeatmap();

            beatmap.OutputType = CurrentOutputType = OutputType.Listen;

            RefPanelPlugin.OnBeatmapChanged(new BeatmapChangedParameter()
            {
                beatmap = beatmap
            });
        }
Example #4
0
 private void RefPlugin_OnBeatmapChanged(string osu_file, int set_id, int id, bool output_type, Dictionary <string, object> extra)
 {
     RefPanelPlugin.OnBeatmapChanged(new BeatmapChangedParameter()
     {
         beatmap = new BeatmapEntry()
         {
             BeatmapId    = id,
             BeatmapSetId = set_id,
             OsuFilePath  = osu_file,
             OutputType   = output_type ? OutputType.Play : OutputType.Listen,
             ExtraParam   = extra
         }
     });
 }
        public RealtimeDataProvideWrapperBase(OsuRTDataProviderPlugin ref_plugin, OsuLiveStatusPanelPlugin plugin) : base(ref_plugin, plugin)
        {
            RefPanelPlugin.OnSettingChanged += () =>
            {
                var beatmap = GetCurrentBeatmap();

                beatmap.OutputType = CurrentOutputType = (current_status == OsuStatus.Playing || current_status == OsuStatus.Rank) ? OutputType.Play : OutputType.Listen;

                RefPanelPlugin.OnBeatmapChanged(new BeatmapChangedParameter()
                {
                    beatmap = beatmap
                });
            };
        }
        public override void OnStatusChange(OsuStatus last_status, OsuStatus status)
        {
            current_status = status;

            if (last_status == status)
            {
                return;
            }
            if ((status != OsuStatus.Playing) && (status != OsuStatus.Rank))
            {
                if (OsuStatusHelper.IsListening(status))
                {
                    TrigListen();
                }
                else
                {
                    RefPanelPlugin.OnBeatmapChanged(null);
                }
            }
            else
            {
                if (current_mod.Mod != ModsInfo.Mods.Unknown || current_mod.Mod != ModsInfo.Mods.None)
                {
                    //fix for https://puu.sh/zelua/d60b98d496.jpg
                    return;
                }

                BeatmapEntry beatmap = new BeatmapEntry()
                {
                    OutputType   = CurrentOutputType = OutputType.Listen,
                    BeatmapId    = beatmapID,
                    BeatmapSetId = beatmapSetID,
                    OsuFilePath  = OsuFilePath,
                    ExtraParam   = new System.Collections.Generic.Dictionary <string, object> {
                        { "ortdp_beatmap", current_beatmap },
                        { "mode", RefPlugin.ListenerManager.GetCurrentData(OsuRTDataProvider.Listen.ProvideDataMask.GameMode).PlayMode }
                    }
                };

                RefPanelPlugin.OnBeatmapChanged(new BeatmapChangedParameter()
                {
                    beatmap = beatmap
                });
            }
        }