From 8e8fdc1277810df7f2ff4f59824c73b64f2cf728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20K=C3=BCpper?= Date: Sat, 9 Aug 2014 19:50:40 +0200 Subject: [PATCH] Play song-preview instead of bg-music (if enabled) on names-, score- and highscore-screen. --- Vocaluxe/Base/CGraphics.cs | 5 +++++ Vocaluxe/Base/CMain.cs | 14 ++++++++++++-- Vocaluxe/Base/CPreviewPlayer.cs | 2 +- Vocaluxe/Screens/CScreenNames.cs | 3 +++ Vocaluxe/Screens/CScreenScore.cs | 3 +++ Vocaluxe/Screens/CScreenSing.cs | 2 -- Vocaluxe/Screens/CScreenSong.cs | 9 +++++++-- VocaluxeLib/IBasic.cs | 6 +++++- VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs | 5 +++-- VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs | 4 ++++ VocaluxeLib/Utils/Player/CSongPlayer.cs | 6 +++++- VocaluxeLib/VocaluxeLib.csproj | 1 - 12 files changed, 48 insertions(+), 12 deletions(-) diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs index 837cd713..cef1f480 100644 --- a/Vocaluxe/Base/CGraphics.cs +++ b/Vocaluxe/Base/CGraphics.cs @@ -60,6 +60,11 @@ namespace Vocaluxe.Base get { return _CurrentScreen; } } + public static EScreens NextScreen + { + get { return _NextScreen; } + } + #region public methods public static void Init() { diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs index 00650e9a..f97120ee 100644 --- a/Vocaluxe/Base/CMain.cs +++ b/Vocaluxe/Base/CMain.cs @@ -77,6 +77,11 @@ namespace Vocaluxe.Base return CConfig.BackgroundMusicVolume; } + public EOffOn GetBackgroundMusicStatus() + { + return CConfig.BackgroundMusic; + } + public int GetPreviewMusicVolume() { return CConfig.PreviewMusicVolume; @@ -436,6 +441,11 @@ namespace Vocaluxe.Base { return CGraphics.GlobalAlpha; } + + public EScreens GetNextScreen() + { + return CGraphics.NextScreen; + } } class CBlog : ILog @@ -979,9 +989,9 @@ namespace Vocaluxe.Base CPreviewPlayer.Stop(); } - public void Pause() + public void TogglePause() { - CPreviewPlayer.Pause(); + CPreviewPlayer.TogglePause(); } public CTexture GetCover() diff --git a/Vocaluxe/Base/CPreviewPlayer.cs b/Vocaluxe/Base/CPreviewPlayer.cs index 3422b248..2daf7e1d 100644 --- a/Vocaluxe/Base/CPreviewPlayer.cs +++ b/Vocaluxe/Base/CPreviewPlayer.cs @@ -51,7 +51,7 @@ namespace Vocaluxe.Base _Player.Play(); } - public static void Pause() + public static void TogglePause() { _Player.TogglePause(); } diff --git a/Vocaluxe/Screens/CScreenNames.cs b/Vocaluxe/Screens/CScreenNames.cs index 945e6731..07eaa297 100644 --- a/Vocaluxe/Screens/CScreenNames.cs +++ b/Vocaluxe/Screens/CScreenNames.cs @@ -566,6 +566,9 @@ namespace Vocaluxe.Screens { base.OnClose(); CRecord.Stop(); + + if (CGraphics.NextScreen != EScreens.ScreenSong && CPreviewPlayer.IsPlaying) + CPreviewPlayer.TogglePause(); } public override bool Draw() diff --git a/Vocaluxe/Screens/CScreenScore.cs b/Vocaluxe/Screens/CScreenScore.cs index db70f56e..1b1c133f 100644 --- a/Vocaluxe/Screens/CScreenScore.cs +++ b/Vocaluxe/Screens/CScreenScore.cs @@ -123,6 +123,9 @@ namespace Vocaluxe.Screens public override void OnShow() { + if (CConfig.BackgroundMusic == EOffOn.TR_CONFIG_ON) + CPreviewPlayer.TogglePause(); + base.OnShow(); //-1 --> Show average _Round = CGame.NumRounds > 1 ? -1 : 0; diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index d9a44b1a..0a0cb301 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -537,8 +537,6 @@ namespace Vocaluxe.Screens _CloseSong(); if (_Webcam) CWebcam.Stop(); - CBackgroundMusic.Disabled = false; - CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume); } private void _CloseSong() diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index b70017d5..ffc83c4e 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -716,9 +716,14 @@ namespace Vocaluxe.Screens public override void OnClose() { base.OnClose(); - CBackgroundMusic.Disabled = false; - CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume); + _SongMenu.OnHide(); + + if (CGraphics.NextScreen != EScreens.ScreenNames || CConfig.BackgroundMusic == EOffOn.TR_CONFIG_OFF) + { + CBackgroundMusic.Disabled = false; + CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume); + } } private void _HandlePartySongSelection(int songNr) diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs index a18b6811..2158cf62 100644 --- a/VocaluxeLib/IBasic.cs +++ b/VocaluxeLib/IBasic.cs @@ -35,6 +35,8 @@ namespace VocaluxeLib void SetBackgroundMusicVolume(int newVolume); int GetBackgroundMusicVolume(); + EOffOn GetBackgroundMusicStatus(); + int GetPreviewMusicVolume(); EOffOn GetVideosToBackground(); @@ -150,6 +152,8 @@ namespace VocaluxeLib void FadeTo(EScreens nextScreen); float GetGlobalAlpha(); + + EScreens GetNextScreen(); } public interface ILog @@ -321,7 +325,7 @@ namespace VocaluxeLib void Play(float start = -1); void Load(CSong song, float start = 0f); void Stop(); - void Pause(); + void TogglePause(); CTexture GetCover(); CTexture GetVideoTexture(); bool IsPlaying(); diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index 079c0cb6..82974e48 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -376,10 +376,11 @@ namespace VocaluxeLib.Menu.SongMenu } public virtual void OnShow() {} - + public virtual void OnHide() { - _ResetPreview(); + if(CBase.Graphics.GetNextScreen() != EScreens.ScreenNames || CBase.Config.GetBackgroundMusicStatus() == EOffOn.TR_CONFIG_OFF) + _ResetPreview(); } public abstract bool HandleInput(ref SKeyEvent keyEvent, SScreenSongOptions options); diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs index f1449689..68e142e2 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs @@ -110,7 +110,11 @@ namespace VocaluxeLib.Menu.SongMenu set { if (value == base._PreviewNr) + { + if (!CBase.PreviewPlayer.IsPlaying()) + CBase.PreviewPlayer.Play(); return; + } base._PreviewNr = value; _UpdatePreview(); } diff --git a/VocaluxeLib/Utils/Player/CSongPlayer.cs b/VocaluxeLib/Utils/Player/CSongPlayer.cs index 8238e35e..8f1f2a5d 100644 --- a/VocaluxeLib/Utils/Player/CSongPlayer.cs +++ b/VocaluxeLib/Utils/Player/CSongPlayer.cs @@ -159,11 +159,15 @@ namespace VocaluxeLib.Utils.Player public new void TogglePause() { base.TogglePause(); - if (_Video != -1) + if (!IsPlaying && _Video != -1) { CBase.Video.Pause(_Video); CBase.Video.Skip(_Video, CBase.Sound.GetPosition(_StreamID) + _FadeTime, _Song.VideoGap); } + else if(_Video != -1) + { + CBase.Video.Resume(_Video); + } } public new void Update() diff --git a/VocaluxeLib/VocaluxeLib.csproj b/VocaluxeLib/VocaluxeLib.csproj index 04e04f51..a367e8e1 100644 --- a/VocaluxeLib/VocaluxeLib.csproj +++ b/VocaluxeLib/VocaluxeLib.csproj @@ -135,7 +135,6 @@ -