Пример #1
0
        private void NextSongDirect()
        {
            if (InitErrorState)
            {
                return;
            }

            if (_nextSet != null)
            {
                _currentSet = _nextSet;
                _nextSet    = null;
                _playIndex  = 0;
            }
            else
            {
                _playIndex++;
            }

            if (_currentSet == null)
            {
                _state = MPState.Stopped;
                return;
            }

            if (_playIndex >= _currentSet.Length)
            {
                if (_loopSet)
                {
                    _playIndex = 0;
                }
                else
                {
                    _state = MPState.Stopped;
                    return;
                }
            }

            if (_playIndex < _currentSet.Length)
            {
                if (FloatMath.IsZero(_fadeChange))
                {
                    MediaPlayer.Volume = 1;
                    MediaPlayer.Stop();
                    PlaySongInPlayer(_currentSet[_playIndex]);
                    _state = MPState.Play;
                }
                else
                {
                    MediaPlayer.Volume = 0;
                    MediaPlayer.Stop();
                    PlaySongInPlayer(_currentSet[_playIndex]);
                    _fadeTime = 0f;
                    _state    = MPState.TransitionInFromSame;
                }
            }
            else
            {
                _state = MPState.Stopped;
            }
        }
Пример #2
0
        protected void PlaySong(Song[] s, float fadeIn, float fadeOut, float fadeChange, bool loop = true)
        {
            if (InitErrorState)
            {
                return;
            }

            _fadeIn     = fadeIn;
            _fadeOut    = fadeOut;
            _fadeChange = fadeChange;


            if (_state == MPState.Play)
            {
                _state    = MPState.TransitionOut;
                _fadeTime = 0f;
                _nextSet  = s;
            }
            else if (s.Any())
            {
                MediaPlayer.Volume = 0f;
                PlaySongInPlayer(s[0]);
                _state      = MPState.TransitionInFromNew;
                _fadeTime   = 0f;
                _playIndex  = 0;
                _currentSet = s;
            }
            else
            {
                _state = MPState.Stopped;
            }
        }
Пример #3
0
 public static void initMulti()
 {
     currentMPGameState = MPState.player1Turn;
     currentGameMode    = GameMode.multiPlayer;
     turnChangeTime     = 0.0f;
     blueTurnTexture    = Resources.Load <Texture2D> ("blueTurn");
     redTurnTexture     = Resources.Load <Texture2D> ("redTurn");
 }
Пример #4
0
 public void StopSong()
 {
     if (_state != MPState.Stopped)
     {
         _state      = MPState.TransitionOut;
         _currentSet = null;
         _fadeTime   = 0f;
     }
 }
Пример #5
0
 public void SkipSong()
 {
     if (_state == MPState.Stopped)
     {
         NextSongDirect();
     }
     else
     {
         _state    = MPState.TransitionOut;
         _fadeTime = 0f;
     }
 }
Пример #6
0
        private void UpdateMusic(SAMTime gameTime)
        {
            if (MediaPlayer.IsMuted != IsMusicMuted)
            {
                MediaPlayer.IsMuted = IsMusicMuted;
            }

            switch (_state)
            {
            case MPState.Stopped:
                if (MediaPlayer.State == MediaState.Playing)
                {
                    MediaPlayer.Stop();
                }
                break;

            case MPState.Play:
                if (MediaPlayer.State != MediaState.Playing)
                {
                    NextSongDirect();
                }
                break;

            case MPState.TransitionOut:
                _fadeTime += gameTime.ElapsedSeconds;
                if (_fadeTime > _fadeOut)
                {
                    NextSongDirect();
                }
                else
                {
                    MediaPlayer.Volume = 1 - (_fadeTime / _fadeOut);
                }
                break;

            case MPState.TransitionInFromNew:
                _fadeTime += gameTime.ElapsedSeconds;
                if (_fadeTime > _fadeIn)
                {
                    _state             = MPState.Play;
                    MediaPlayer.Volume = 1f;
                }
                else
                {
                    MediaPlayer.Volume = (_fadeTime / _fadeIn);
                }
                break;

            case MPState.TransitionInFromSame:
                _fadeTime += gameTime.ElapsedSeconds;
                if (_fadeTime > _fadeChange)
                {
                    _state             = MPState.Play;
                    MediaPlayer.Volume = 1f;
                }
                else
                {
                    MediaPlayer.Volume = (_fadeTime / _fadeChange);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }