diff options
author | krzys-h <krzys_h@interia.pl> | 2014-07-01 12:15:38 +0200 |
---|---|---|
committer | krzys-h <krzys_h@interia.pl> | 2014-07-01 12:16:32 +0200 |
commit | d9fee8b2adad613cf8c10d153cd5cd7b261b7863 (patch) | |
tree | f6b71cc2daa719c10c1ce31cf738e1c6ec934a73 /src/app/pausemanager.cpp | |
parent | 0f2adf05fd2b2b38c2b84aa8d72b3fd756dcfcd4 (diff) | |
parent | 1835d2ae580525603308206f7b8e6b4552b3ca0f (diff) | |
download | colobot-d9fee8b2adad613cf8c10d153cd5cd7b261b7863.tar.gz colobot-d9fee8b2adad613cf8c10d153cd5cd7b261b7863.tar.bz2 colobot-d9fee8b2adad613cf8c10d153cd5cd7b261b7863.zip |
Release 0.1.3-alpha
Diffstat (limited to 'src/app/pausemanager.cpp')
-rw-r--r-- | src/app/pausemanager.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/app/pausemanager.cpp b/src/app/pausemanager.cpp new file mode 100644 index 0000000..d357bba --- /dev/null +++ b/src/app/pausemanager.cpp @@ -0,0 +1,94 @@ +// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * This program is free software: you can redistribute it and/or modify +// * it under the terms of the GNU General Public License as published by +// * the Free Software Foundation, either version 3 of the License, or +// * (at your option) any later version. +// * +// * This program is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// * GNU General Public License for more details. +// * +// * You should have received a copy of the GNU General Public License +// * along with this program. If not, see http://www.gnu.org/licenses/. + +#include "app/app.h" +#include "app/pausemanager.h" + +#include "common/logger.h" + +#include "object/robotmain.h" + + +template<> CPauseManager* CSingleton<CPauseManager>::m_instance = nullptr; + + +CPauseManager::CPauseManager() +{ + m_sound = CApplication::GetInstancePointer()->GetSound(); + + m_pause = PAUSE_NONE; +} + +CPauseManager::~CPauseManager() +{ + m_sound = nullptr; +} + +void CPauseManager::SetPause(PauseType pause) +{ + if(pause != PAUSE_NONE) { + if(m_pause != pause) { + CLogger::GetInstancePointer()->Info("Game paused - %s\n", GetPauseName(pause).c_str()); + CRobotMain::GetInstancePointer()->StartPauseMusic(pause); + } + + m_pause = pause; + } else + ClearPause(); +} + +void CPauseManager::ClearPause() +{ + if(m_pause != PAUSE_NONE) { + CLogger::GetInstancePointer()->Info("Game resumed\n"); + m_sound->StopPauseMusic(); + } + + m_pause = PAUSE_NONE; +} + +bool CPauseManager::GetPause() +{ + return m_pause != PAUSE_NONE; +} + +bool CPauseManager::GetPause(PauseType pause) +{ + return m_pause == pause; +} + +PauseType CPauseManager::GetPauseType() +{ + return m_pause; +} + +std::string CPauseManager::GetPauseName(PauseType pause) +{ + switch(pause) + { + case PAUSE_NONE: return "None"; + case PAUSE_USER: return "User"; + case PAUSE_SATCOM: return "SatCom"; + case PAUSE_SATCOMMOVIE: return "SatCom opening animation"; + case PAUSE_DIALOG: return "Dialog"; + case PAUSE_EDITOR: return "CBot editor"; + case PAUSE_VISIT: return "Visit"; + case PAUSE_CHEAT: return "Cheat console"; + case PAUSE_PHOTO: return "Photo mode"; + default: assert(false); // Should never happen + } +} |