Exemple #1
0
        private void updateBeatmap()
        {
            if (BeatmapImport.IsProcessing)
            {
                return;
            }

            if (Lobby.SpectatingMatch == null)
            {
                return;
            }

            if ((Lobby.SpectatingMatch.activeMods & Mods.DoubleTime) > 0)
            {
                AudioEngine.CurrentPlaybackRate = 150;
            }
            else if ((Lobby.SpectatingMatch.activeMods & Mods.HalfTime) > 0)
            {
                AudioEngine.CurrentPlaybackRate = 75;
            }
            else
            {
                AudioEngine.CurrentPlaybackRate = 100;
            }

            if (BeatmapManager.Current?.BeatmapChecksum == Lobby.SpectatingMatch.beatmapChecksum)
            {
                currentSong.Text = BeatmapManager.Current?.DisplayTitleFullAuto ?? string.Empty;
            }
            else
            {
                currentSong.Text = Lobby.SpectatingMatch?.beatmapName ?? string.Empty;
            }
            playingIcon.Alpha = string.IsNullOrEmpty(currentSong.Text) ? 0 : 1;

            if (Lobby.SpectatingMatch.beatmapChecksum == BeatmapManager.Current?.BeatmapChecksum)
            {
                return;
            }

            if (string.IsNullOrEmpty(Lobby.SpectatingMatch.beatmapChecksum))
            {
                pickingUp = false;
            }
            else
            {
                var b = BeatmapManager.GetBeatmapByChecksum(Lobby.SpectatingMatch.beatmapChecksum);

                if (b == null)
                {
                    if (pickingUp)
                    {
                        return;
                    }
                    pickingUp = true;

                    OsuDirect.HandlePickup(Lobby.SpectatingMatch.beatmapChecksum, (o, e) =>
                    {
                        BeatmapImport.Start();
                        pickingUp = false;
                    }, null);
                }
                else
                {
                    BeatmapManager.Load(b);
                    clients.Reset();
                }
            }
        }