From bb2a9bcfd3f63434c4bfb01a31f2ab0d64d6260b Mon Sep 17 00:00:00 2001 From: krzys-h Date: Fri, 21 Feb 2014 14:19:58 +0100 Subject: Added option to set pause audio in Scene --- src/app/pausemanager.cpp | 24 +++------------------- src/object/robotmain.cpp | 46 +++++++++++++++++++++++++++++++++++++++--- src/object/robotmain.h | 9 +++++++-- src/sound/oalsound/alsound.cpp | 4 ++-- src/sound/oalsound/alsound.h | 2 +- src/sound/sound.cpp | 8 +------- src/sound/sound.h | 2 +- 7 files changed, 58 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/app/pausemanager.cpp b/src/app/pausemanager.cpp index 761e158..d357bba 100644 --- a/src/app/pausemanager.cpp +++ b/src/app/pausemanager.cpp @@ -20,6 +20,8 @@ #include "common/logger.h" +#include "object/robotmain.h" + template<> CPauseManager* CSingleton::m_instance = nullptr; @@ -41,27 +43,7 @@ void CPauseManager::SetPause(PauseType pause) if(pause != PAUSE_NONE) { if(m_pause != pause) { CLogger::GetInstancePointer()->Info("Game paused - %s\n", GetPauseName(pause).c_str()); - switch(pause) { - case PAUSE_EDITOR: - // TODO: We don't have this music yet - // m_sound->PlayPauseMusic(""); - #if DEV_BUILD - m_sound->PlayPauseMusic("Prototype.ogg"); - #endif - break; - - case PAUSE_SATCOM: - // TODO: We don't have this music yet - // m_sound->PlayPauseMusic(""); - #if DEV_BUILD - m_sound->PlayPauseMusic("Constructive.ogg"); - #endif - break; - - default: - // Don't change music - break; - } + CRobotMain::GetInstancePointer()->StartPauseMusic(pause); } m_pause = pause; diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp index b1cbe52..e66e2c6 100644 --- a/src/object/robotmain.cpp +++ b/src/object/robotmain.cpp @@ -647,6 +647,10 @@ CRobotMain::CRobotMain(CApplication* app, bool loadProfile) m_visitArrow = 0; m_audioTrack = ""; m_audioRepeat = true; + m_satcomTrack = ""; + m_satcomRepeat = true; + m_editorTrack = ""; + m_editorRepeat = true; m_delayWriteMessage = 0; m_selectObject = 0; m_infoUsed = 0; @@ -3923,6 +3927,10 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) m_terrain->FlushMaterials(); m_audioTrack = ""; m_audioRepeat = true; + m_satcomTrack = ""; + m_satcomRepeat = true; + m_editorTrack = ""; + m_editorRepeat = true; m_displayText->SetDelay(1.0f); m_displayText->SetEnable(true); m_immediatSatCom = false; @@ -4028,8 +4036,10 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) } } - if (Cmd(line, "MissionFile") && !resetObject) + if (Cmd(line, "MissionFile") && !resetObject) { m_version = OpInt(line, "version", 1); + continue; + } // TODO: Fallback to an non-localized entry sprintf(op, "Title.%c", m_app->GetLanguageChar()); @@ -4165,15 +4175,27 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) filenameStr << "music" << std::setfill('0') << std::setw(3) << trackid << ".ogg"; m_audioTrack = filenameStr.str(); } + m_audioRepeat = OpInt(line, "repeat", 1); } else { char trackname[100]; - OpString(line, "filename", trackname); + + OpString(line, "main", trackname); m_audioTrack = trackname; + m_audioRepeat = OpInt(line, "mainRepeat", 1); + + OpString(line, "satcom", trackname); + m_satcomTrack = trackname; + m_satcomRepeat = OpInt(line, "satcomRepeat", 1); + + OpString(line, "editor", trackname); + m_editorTrack = trackname; + m_editorRepeat = OpInt(line, "editorRepeat", 1); } - m_audioRepeat = OpInt(line, "repeat", 1); if (m_audioTrack != "") m_sound->CacheMusic(m_audioTrack); + if (m_satcomTrack != "") m_sound->CacheMusic(m_satcomTrack); + if (m_editorTrack != "") m_sound->CacheMusic(m_editorTrack); continue; } @@ -7220,6 +7242,24 @@ void CRobotMain::StartMusic() } } +//! Starts pause music +void CRobotMain::StartPauseMusic(PauseType pause) +{ + switch(pause) { + case PAUSE_EDITOR: + m_sound->PlayPauseMusic(m_editorTrack, m_editorRepeat); + break; + + case PAUSE_SATCOM: + m_sound->PlayPauseMusic(m_satcomTrack, m_satcomRepeat); + break; + + default: + // Don't change music + break; + } +} + //! Removes hilite and tooltip void CRobotMain::ClearInterface() { diff --git a/src/object/robotmain.h b/src/object/robotmain.h index 4fa842a..71ad455 100644 --- a/src/object/robotmain.h +++ b/src/object/robotmain.h @@ -340,6 +340,7 @@ public: float GetPersoAngle(); void StartMusic(); + void StartPauseMusic(PauseType pause); void ClearInterface(); void ChangeColor(); @@ -474,15 +475,19 @@ protected: bool m_showSoluce; bool m_showAll; bool m_cheatRadar; - bool m_audioRepeat; bool m_shortCut; std::string m_audioTrack; + bool m_audioRepeat; + std::string m_satcomTrack; + bool m_satcomRepeat; + std::string m_editorTrack; + bool m_editorRepeat; int m_delayWriteMessage; int m_movieInfoIndex; CObject* m_controller; - //Level Checker flags + // Level Checker flags bool m_beginObject; bool m_terrainGenerate; bool m_terrainInitTextures; diff --git a/src/sound/oalsound/alsound.cpp b/src/sound/oalsound/alsound.cpp index ce109e4..ad03970 100644 --- a/src/sound/oalsound/alsound.cpp +++ b/src/sound/oalsound/alsound.cpp @@ -682,7 +682,7 @@ bool ALSound::PlayMusic(const std::string &filename, bool bRepeat, float fadeTim } -bool ALSound::PlayPauseMusic(const std::string &filename) +bool ALSound::PlayPauseMusic(const std::string &filename, bool repeat) { if (m_previousMusic.fadeTime > 0.0f) { @@ -703,7 +703,7 @@ bool ALSound::PlayPauseMusic(const std::string &filename) m_currentMusic = nullptr; } } - return PlayMusic(filename, true); + return PlayMusic(filename, repeat); } diff --git a/src/sound/oalsound/alsound.h b/src/sound/oalsound/alsound.h index 4113098..bb9bf28 100644 --- a/src/sound/oalsound/alsound.h +++ b/src/sound/oalsound/alsound.h @@ -78,7 +78,7 @@ public: void SuspendMusic(); void StopMusic(float fadeTime=2.0f); bool IsPlayingMusic(); - bool PlayPauseMusic(const std::string &filename); + bool PlayPauseMusic(const std::string &filename, bool repeat); void StopPauseMusic(); bool CheckChannel(int &channel); diff --git a/src/sound/sound.cpp b/src/sound/sound.cpp index 3802611..c4b30b5 100644 --- a/src/sound/sound.cpp +++ b/src/sound/sound.cpp @@ -59,12 +59,6 @@ void CSoundInterface::AddMusicFiles(const std::string &path) CacheMusic("Intro2.ogg"); CacheMusic("music010.ogg"); CacheMusic("music011.ogg"); - // TODO: Add pause music here - // CacheMusic(""); - #if DEV_BUILD - CacheMusic("Prototype.ogg"); - CacheMusic("Constructive.ogg"); - #endif } bool CSoundInterface::Cache(Sound bSound, const std::string &bFile) @@ -181,7 +175,7 @@ bool CSoundInterface::IsPlayingMusic() return true; } -bool CSoundInterface::PlayPauseMusic(const std::string &filename) +bool CSoundInterface::PlayPauseMusic(const std::string &filename, bool repeat) { return true; } diff --git a/src/sound/sound.h b/src/sound/sound.h index 135ee43..e86da2b 100644 --- a/src/sound/sound.h +++ b/src/sound/sound.h @@ -321,7 +321,7 @@ public: * \param filename - name of file to play * \return return true on success */ - virtual bool PlayPauseMusic(const std::string &filename); + virtual bool PlayPauseMusic(const std::string &filename, bool repeat); /** Stop playing pause music and return to the mission music * \return nothing -- cgit v1.2.3-1-g7c22