/// <summary> /// Set the playback state of the currently playing music track (Pause, Resume or Stop) /// </summary> /// <param name="state">The state to set</param> private void SetMusicPlaybackState(SoundState state) { if (currentInGameMusicInstance == null) { return; } switch (state) { case SoundState.Playing: currentInGameMusicInstance.Resume(); TimeManager.ResumeTimer(currentInGameMusicInstance.GetHashCode().ToString()); break; case SoundState.Paused: currentInGameMusicInstance.Pause(); TimeManager.PauseTimer(currentInGameMusicInstance.GetHashCode().ToString()); break; case SoundState.Stopped: currentInGameMusicInstance.Stop(); TimeManager.RemoveTimer(currentInGameMusicInstance.GetHashCode().ToString()); break; } }
/// <summary> /// Stops the currently playing music track and plays the specified one. /// </summary> /// <param name="musicTrack">The music track to play</param> private void PlayMusic(SoundEffect musicTrack) { if (musicTrack == null) { return; } if (currentInGameMusicInstance != null) { TimeManager.RemoveTimer(currentInGameMusicInstance.GetHashCode().ToString()); } currentInGameMusicInstance?.Stop(); currentInGameMusicInstance = musicTrack.CreateInstance(); currentInGameMusicInstance.Volume = currentMusicVolume; currentInGameMusicInstance.Play(); TimeManager.CallFunctionInSeconds(currentInGameMusicInstance.GetHashCode().ToString(), PlayNextMusic, (float)musicTrack.Duration.TotalSeconds); }