示例#1
0
        private void ReadFromOrtdp(Beatmap beatmap)
        {
            NowPlaying = "Loading...";
            _bStatus   = OsuBeatmapStatus.Loading;
            if (beatmap == null || beatmap == OsuRTDataProvider.BeatmapInfo.Beatmap.Empty)
            {
                IO.CurrentIO.WriteColor("Beatmap is null or empty.", ConsoleColor.Red, true, false);
            }
            Beatmap = new Beatmaps.Beatmap(beatmap);
            if (Beatmap == null)
            {
                IO.CurrentIO.Write("Fail to read beatmap.", true, false);
            }
            else
            {
                NowPlaying = Beatmap.ToString();
                Thread.Sleep(100);
                _hitObjects = Beatmap.HitObjects;
                _bStatus    = OsuBeatmapStatus.Unknown;
                _dur        = _drainTime = _hitObjects.LastOrDefault() == null
                    ? TimeSpan.FromMilliseconds(0)
                    : TimeSpan.FromMilliseconds(_hitObjects.LastOrDefault().GetEndTime());

                Beatmap.Stars = _rtppi.BeatmapTuple.Stars;
                if (DebugMode)
                {
                    IO.CurrentIO.Write("Beatmap read from ORTDP.", true, false);
                }
            }
        }
示例#2
0
 /// <summary>
 /// 使用<seealso cref="IBeatmap"/>创建一个CacheBeatmap
 /// </summary>
 /// <param name="beatmap"></param>
 /// <param name="songDuration"></param>
 /// <param name="drainTime"></param>
 /// <param name="status"></param>
 /// <exception cref="ArgumentNullException"></exception>
 public CacheBeatmap(Beatmaps.Beatmap beatmap, TimeSpan songDuration, TimeSpan drainTime, OsuBeatmapStatus status)
 {
     _innerBeatmap = beatmap ?? throw new ArgumentNullException(nameof(beatmap));
     SongDuration  = songDuration;
     DrainTime     = drainTime;
     Status        = status;
 }
示例#3
0
        private void ReadFromOsudb(Beatmap beatmap)
        {
            NowPlaying = "Loading...";
            _bStatus   = OsuBeatmapStatus.Loading;
            if (_md5Str is null || _md5Str1 is null)
            {
                return;
            }
            _md5Str = new MD5String("");
            if (_md5Str != _md5Str1)
            {
                _beatmapDb = new OsuBeatmapDb();
                _md5Str1   = _md5Str;
            }

            try
            {
                if (beatmap != null)
                {
                    var md5 = MD5String.GetString(
                        new MD5CryptoServiceProvider().ComputeHash(File.ReadAllBytes(beatmap.FilenameFull)));
                    var osuBeatmap = _beatmapDb.Beatmaps.FindByMd5(md5);
                    if (!(osuBeatmap is null))
                    {
                        Beatmap     = new Beatmaps.Beatmap(osuBeatmap);
                        _osuBeatmap = osuBeatmap;
                        NowPlaying  = Beatmap.ToString();
                        _hitObjects = Beatmap.HitObjects;
                        var lastHitObjectEndTime = TimeSpan.FromMilliseconds(_hitObjects.LastOrDefault().GetEndTime());
                        _bStatus = osuBeatmap.BeatmapStatus;
                        var totalTime = osuBeatmap.TotalTime;
                        _dur       = totalTime;
                        _drainTime = lastHitObjectEndTime;
                        if (CurrentMode is ILegacyMode le)
                        {
                            if (_osuBeatmap.Mode == OsuGameMode.Osu)
                            {
                                Beatmap.Stars = _osuBeatmap.ModStarPair.GetStars(le.LegacyMode, Mods.ToIntMod());
                            }
                        }

                        if (DebugMode)
                        {
                            IO.CurrentIO.Write("Beatmap read from OsuDb.", true, false);
                        }
                    }
                    else
                    {
                        IO.CurrentIO.WriteColor("Fail to get beatmap info.", ConsoleColor.Red, true, false);
                    }
                }
            }