示例#1
0
        public PlaybackManager()
        {
            Player = new FadePlayer {
                StateChanged = (s) => {
                    NotificationManager.Shared.ProcPlaybackStateChanged(s);
                    if (s == PlaybackState.Playing || s == PlaybackState.Buffering)
                    {
                        StartTimers();
                        killTimer.Stop();
                    }
                    else
                    {
                        killTimer.Start();
                    }
                },
            };
            killTimer          = new Timer(20 * 1000);
            killTimer.Elapsed += (sender, args) => StopTimers();
            //LocalWebServer.Shared.Start(10);

            Player.SubscribeToProperty("CurrentSong", () => {
                var songID = Player?.CurrentSong?.Id ?? "";
                if (songID != Settings.CurrentSong)
                {
                    Settings.CurrentPlaybackPercent = 0;
                }
                Settings.CurrentSong = Player?.CurrentSong?.Id ?? "";
                NotificationManager.Shared.ProcCurrentSongChanged(Player.CurrentSong);
            });

            NotificationManager.Shared.OfflineChanged     += Shared_OfflineChanged;
            NotificationManager.Shared.FailedDownload     += NotificationManager_Shared_FailedDownload;
            NotificationManager.Shared.SongDownloadPulsed += NotificationManager_SongDownloadPulsed;
        }
        private void SoundPlay(Transform root)
        {
            this._isPlay = true;
            List <EnvArea3DSE.IPlayInfo> playList = EnvArea3DSE.PlayAudioSourceList;

            playList.RemoveAll((Predicate <EnvArea3DSE.IPlayInfo>)(ax => ax == null || Object.op_Equality((Object)ax.Audio, (Object)null) || Object.op_Equality((Object)((Component)ax.Audio).get_gameObject(), (Object)null)));
            SoundPack.SoundSystemInfoGroup soundSystemInfo = Singleton <Resources> .Instance.SoundPack.SoundSystemInfo;
            if (soundSystemInfo.EnviroSEMaxCount <= playList.Count)
            {
                bool flag = true;
                int  num  = playList.Count - soundSystemInfo.EnviroSEMaxCount + 1;
                List <EnvArea3DSE.IPlayInfo> playInfoList = ListPool <EnvArea3DSE.IPlayInfo> .Get();

                playInfoList.AddRange((IEnumerable <EnvArea3DSE.IPlayInfo>)playList);
                Transform cameraT = ((Component)Singleton <Manager.Map> .Instance.Player.CameraControl.CameraComponent).get_transform();
                playInfoList.Sort((Comparison <EnvArea3DSE.IPlayInfo>)((a1, a2) => this.GetSqrDistanceSort(cameraT, ((Component)a2.Audio).get_transform(), ((Component)a1.Audio).get_transform())));
                float distanceFromCamera = this.GetSqrDistanceFromCamera(cameraT, root);
                for (int index = 0; index < num; ++index)
                {
                    EnvArea3DSE.IPlayInfo element = playInfoList.GetElement <EnvArea3DSE.IPlayInfo>(index);
                    if ((double)distanceFromCamera < (double)element.GetSqrDistanceFromCamera(cameraT, ((Component)element.Audio).get_transform().get_position()))
                    {
                        element.Stop();
                        flag = false;
                    }
                }
                ListPool <EnvArea3DSE.IPlayInfo> .Release(playInfoList);

                if (flag)
                {
                    return;
                }
            }
            float fadeTime = 0.0f;

            if (this._firstPlaying)
            {
                fadeTime           = !this._setFirstFadeTime ? Singleton <Resources> .Instance.SoundPack.EnviroInfo.FadeTime : this._firstFadeTime;
                this._firstPlaying = false;
            }
            this._audio = Singleton <Resources> .Instance.SoundPack.PlayEnviroSE(this._clipID, fadeTime);

            if (Object.op_Equality((Object)this._audio, (Object)null))
            {
                Object.Destroy((Object)this);
            }
            else
            {
                this._fadePlayer = (FadePlayer)((Component)this._audio).GetComponentInChildren <FadePlayer>(true);
                this._audio.set_loop(this._isLoop);
                this._audio.set_minDistance((float)this._decay.x);
                this._audio.set_maxDistance((float)this._decay.y);
                if (!playList.Contains((EnvArea3DSE.IPlayInfo) this))
                {
                    playList.Add((EnvArea3DSE.IPlayInfo) this);
                }
                ObservableExtensions.Subscribe <Unit>((IObservable <M0>)ObservableTriggerExtensions.OnDestroyAsObservable((Component)this._audio), (Action <M0>)(_ => playList.Remove((EnvArea3DSE.IPlayInfo) this)));
            }
        }
示例#3
0
            private void Play(Transform root)
            {
                this.IsPlay = true;
                EnvArea3DSE._playAudioSourceList.RemoveAll((Predicate <EnvArea3DSE.IPlayInfo>)(ax => ax == null || Object.op_Equality((Object)ax.Audio, (Object)null) || Object.op_Equality((Object)((Component)ax.Audio).get_gameObject(), (Object)null)));
                SoundPack.SoundSystemInfoGroup soundSystemInfo = Singleton <Resources> .Instance.SoundPack.SoundSystemInfo;
                if (soundSystemInfo.EnviroSEMaxCount <= EnvArea3DSE._playAudioSourceList.Count)
                {
                    bool flag = true;
                    int  num  = EnvArea3DSE._playAudioSourceList.Count - soundSystemInfo.EnviroSEMaxCount + 1;
                    List <EnvArea3DSE.IPlayInfo> playInfoList = ListPool <EnvArea3DSE.IPlayInfo> .Get();

                    playInfoList.AddRange((IEnumerable <EnvArea3DSE.IPlayInfo>)EnvArea3DSE._playAudioSourceList);
                    Transform cameraT = ((Component)Singleton <Manager.Map> .Instance.Player.CameraControl.CameraComponent).get_transform();
                    playInfoList.Sort((Comparison <EnvArea3DSE.IPlayInfo>)((a1, a2) => this.GetSqrDistanceSort(cameraT, ((Component)a2.Audio).get_transform(), ((Component)a1.Audio).get_transform())));
                    float distanceFromCamera = this.GetSqrDistanceFromCamera(cameraT, root);
                    for (int index = 0; index < num; ++index)
                    {
                        EnvArea3DSE.IPlayInfo element = playInfoList.GetElement <EnvArea3DSE.IPlayInfo>(index);
                        if ((double)distanceFromCamera < (double)element.GetSqrDistanceFromCamera(cameraT, ((Component)element.Audio).get_transform().get_position()))
                        {
                            element.Stop();
                            flag = false;
                        }
                    }
                    ListPool <EnvArea3DSE.IPlayInfo> .Release(playInfoList);

                    if (flag)
                    {
                        return;
                    }
                }
                float fadeTime = 0.0f;

                if (this.FirstPlaying)
                {
                    fadeTime          = Singleton <Resources> .Instance.SoundPack.EnviroInfo.FadeTime;
                    this.FirstPlaying = false;
                }
                this.Audio = Singleton <Resources> .Instance.SoundPack.PlayEnviroSE(this.ClipID, fadeTime);

                if (Object.op_Equality((Object)this.Audio, (Object)null))
                {
                    return;
                }
                this.FadePlayer = (FadePlayer)((Component)this.Audio).GetComponentInChildren <FadePlayer>(true);
                this.Audio.set_loop(this.IsLoop);
                this.Audio.set_minDistance(this.Decay.min);
                this.Audio.set_maxDistance(this.Decay.max);
                this.LoadSuccess = true;
                if (EnvArea3DSE._playAudioSourceList.Contains((EnvArea3DSE.IPlayInfo) this))
                {
                    return;
                }
                EnvArea3DSE._playAudioSourceList.Add((EnvArea3DSE.IPlayInfo) this);
            }
 public void SoundForcedStop()
 {
     if (Object.op_Inequality((Object)this._audio, (Object)null) && Object.op_Inequality((Object)((Component)this._audio).get_gameObject(), (Object)null))
     {
         Object.Destroy((Object)((Component)this._audio).get_gameObject());
     }
     this._audio        = (AudioSource)null;
     this._fadePlayer   = (FadePlayer)null;
     this.PlayEnabled   = false;
     this._firstPlaying = true;
 }
示例#5
0
 public void Stop()
 {
     if (EnvArea3DSE._playAudioSourceList.Contains((EnvArea3DSE.IPlayInfo) this))
     {
         EnvArea3DSE._playAudioSourceList.Remove((EnvArea3DSE.IPlayInfo) this);
     }
     if (Object.op_Inequality((Object)this.FadePlayer, (Object)null))
     {
         this.FadePlayer.Stop(Singleton <Resources> .Instance.SoundPack.EnviroInfo.FadeTime);
     }
     else if (Object.op_Inequality((Object)this.Audio, (Object)null) && Singleton <Manager.Sound> .IsInstance())
     {
         Singleton <Manager.Sound> .Instance.Stop(Manager.Sound.Type.ENV, ((Component)this.Audio).get_transform());
     }
     this.FadePlayer  = (FadePlayer)null;
     this.Audio       = (AudioSource)null;
     this.LoadSuccess = false;
 }
 private void SoundStop()
 {
     if (Object.op_Inequality((Object)this._fadePlayer, (Object)null))
     {
         this._fadePlayer.Stop(!Singleton <Resources> .IsInstance() ? 0.0f : Singleton <Resources> .Instance.SoundPack.EnviroInfo.FadeTime);
     }
     else if (Object.op_Inequality((Object)this._audio, (Object)null) && Object.op_Inequality((Object)((Component)this._audio).get_transform(), (Object)null))
     {
         if (Singleton <Manager.Sound> .IsInstance())
         {
             Singleton <Manager.Sound> .Instance.Stop(Manager.Sound.Type.ENV, ((Component)this._audio).get_transform());
         }
         else
         {
             this._audio.Stop();
             Object.Destroy((Object)((Component)this._audio).get_gameObject());
         }
     }
     this._audio      = (AudioSource)null;
     this._fadePlayer = (FadePlayer)null;
 }