From d10e7157efa864124b259845ea9fbda37e2ed60c Mon Sep 17 00:00:00 2001 From: Nimetu Date: Sun, 12 May 2019 17:13:39 +0300 Subject: [PATCH] Added: Music player directory/autoplay options to client.cfg --HG-- branch : develop --- code/ryzom/client/client_default.cfg | 4 ++++ code/ryzom/client/src/client_cfg.cpp | 8 ++++++++ code/ryzom/client/src/client_cfg.h | 4 ++++ .../client/src/interface_v3/music_player.cpp | 5 ++--- code/ryzom/client/src/main_loop.cpp | 20 +++++++++++++++++-- 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/code/ryzom/client/client_default.cfg b/code/ryzom/client/client_default.cfg index 3516e2a2c..7aabb2e4c 100644 --- a/code/ryzom/client/client_default.cfg +++ b/code/ryzom/client/client_default.cfg @@ -359,6 +359,10 @@ SoundGameMusicVolume_min = 0.0; SoundGameMusicVolume_max = 1.0; SoundGameMusicVolume_step = 0.001; +// MP3 player +MediaPlayerDirectory = "music"; +MediaPlayerAutoPlay = false; + // MISC PreDataPath = { "user", "patch", "data", "examples" }; NeedComputeVS = 0; diff --git a/code/ryzom/client/src/client_cfg.cpp b/code/ryzom/client/src/client_cfg.cpp index 52e08463d..67e09aaf4 100644 --- a/code/ryzom/client/src/client_cfg.cpp +++ b/code/ryzom/client/src/client_cfg.cpp @@ -472,6 +472,10 @@ CClientConfig::CClientConfig() ColorShout = CRGBA(150,0,0,255); // Default Shout color. ColorTalk = CRGBA(255,255,255,255); // Default Talk color. + // MP3 player + MediaPlayerDirectory = "music"; + MediaPlayerAutoPlay = false; + // PreDataPath.push_back("data/gamedev/language/"); // Default Path for the language data // DataPath.push_back("data/"); // Default Path for the Data. @@ -1247,6 +1251,10 @@ void CClientConfig::setValues() // Max track READ_INT_FV(MaxTrack) + // MP3 Player + READ_STRING_FV(MediaPlayerDirectory); + READ_BOOL_FV(MediaPlayerAutoPlay); + ///////////////// // USER COLORS // // Shout Color diff --git a/code/ryzom/client/src/client_cfg.h b/code/ryzom/client/src/client_cfg.h index c9c75a152..af2e97bd3 100644 --- a/code/ryzom/client/src/client_cfg.h +++ b/code/ryzom/client/src/client_cfg.h @@ -366,6 +366,10 @@ struct CClientConfig /// The max number of track we want to use. uint MaxTrack; + // MP3 Player + string MediaPlayerDirectory; + bool MediaPlayerAutoPlay; + /// Pre Data Path. std::vector PreDataPath; /// Data Path. diff --git a/code/ryzom/client/src/interface_v3/music_player.cpp b/code/ryzom/client/src/interface_v3/music_player.cpp index 3243cdb5b..fe97dd937 100644 --- a/code/ryzom/client/src/interface_v3/music_player.cpp +++ b/code/ryzom/client/src/interface_v3/music_player.cpp @@ -23,6 +23,7 @@ #include "../input.h" #include "../sound_manager.h" #include "interface_manager.h" +#include "../client_cfg.h" using namespace std; using namespace NLMISC; @@ -43,8 +44,6 @@ extern UDriver *Driver; #define MP3_SAVE_SHUFFLE "UI:SAVE:MP3_SHUFFLE" #define MP3_SAVE_REPEAT "UI:SAVE:MP3_REPEAT" -static const std::string MediaPlayerDirectory("music/"); - CMusicPlayer MusicPlayer; // *************************************************************************** @@ -396,7 +395,7 @@ public: // Recursive scan for files from media directory vector filesToProcess; - string newPath = CPath::standardizePath(MediaPlayerDirectory); + string newPath = CPath::standardizePath(ClientCfg.MediaPlayerDirectory); CPath::getPathContent (newPath, true, false, true, filesToProcess); uint i; diff --git a/code/ryzom/client/src/main_loop.cpp b/code/ryzom/client/src/main_loop.cpp index 32b76391b..981bc7c72 100644 --- a/code/ryzom/client/src/main_loop.cpp +++ b/code/ryzom/client/src/main_loop.cpp @@ -1081,6 +1081,8 @@ bool mainLoop() ProgressBar.finish(); + bool musicTriggerAutoPlay = true; + // Main loop. If the window is no more Active -> Exit. while( !UserEntity->permanentDeath() && !game_exit ) @@ -1733,7 +1735,7 @@ bool mainLoop() bool wantTraversals = !StereoDisplay || StereoDisplay->isSceneFirst(); bool keepTraversals = StereoDisplay && !StereoDisplay->isSceneLast(); doRenderScene(wantTraversals, keepTraversals); - + if (!StereoDisplay || StereoDisplay->isSceneLast()) { if (fullDetail) @@ -1803,7 +1805,7 @@ bool mainLoop() { displayPACSPrimitive(); } - + // display Sound box if (SoundBox) { @@ -2418,6 +2420,17 @@ bool mainLoop() // Update ingame duration and stat report sending updateStatReport (); + // Auto play once on character login + if (musicTriggerAutoPlay) + { + musicTriggerAutoPlay = false; + if (ClientCfg.SoundOn && ClientCfg.MediaPlayerAutoPlay) + { + MusicPlayer.stop(); + CAHManager::getInstance()->runActionHandler("music_player", NULL, "play_songs"); + MusicPlayer.play(); + } + } // Update the music player MusicPlayer.update (); @@ -2453,6 +2466,9 @@ bool mainLoop() // we have just completed init main loop, after reselecting character // repeat the steps before the main loop itself + // new char, retrigger music autoplay + musicTriggerAutoPlay = true; + // pre main loop in mainLoop resetIngameTime ();