diff options
author | krzys-h <krzys_h@interia.pl> | 2013-12-31 12:58:45 +0100 |
---|---|---|
committer | krzys-h <krzys_h@interia.pl> | 2013-12-31 13:24:09 +0100 |
commit | 4a237f5925eb0d371e097416b17dd5e919cd2258 (patch) | |
tree | 9ce5e9347d0e0a655b247c530c8264581f19036a /src/app/pausemanager.cpp | |
parent | 3536f1c7cc52792a7d833b4f823aa515dc00d933 (diff) | |
download | colobot-4a237f5925eb0d371e097416b17dd5e919cd2258.tar.gz colobot-4a237f5925eb0d371e097416b17dd5e919cd2258.tar.bz2 colobot-4a237f5925eb0d371e097416b17dd5e919cd2258.zip |
CPauseManager
Diffstat (limited to 'src/app/pausemanager.cpp')
-rw-r--r-- | src/app/pausemanager.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/app/pausemanager.cpp b/src/app/pausemanager.cpp new file mode 100644 index 0000000..847958d --- /dev/null +++ b/src/app/pausemanager.cpp @@ -0,0 +1,83 @@ +// * 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/pausemanager.h" + +#include "common/logger.h" + + +template<> CPauseManager* CSingleton<CPauseManager>::m_instance = nullptr; + + +CPauseManager::CPauseManager() +{ + m_pause = PAUSE_NONE; +} + +CPauseManager::~CPauseManager() +{ +} + +void CPauseManager::SetPause(PauseType pause) +{ + if(pause != PAUSE_NONE) { + if(m_pause != pause) + CLogger::GetInstancePointer()->Info("Game paused - %s\n", GetPauseName(pause).c_str()); + + m_pause = pause; + } else + ClearPause(); +} + +void CPauseManager::ClearPause() +{ + if(m_pause != PAUSE_NONE) + CLogger::GetInstancePointer()->Info("Game resumed\n"); + + 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_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 + } +} |