diff options
author | Nicola Mettifogo | 2008-07-25 06:35:02 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2008-07-25 06:35:02 +0000 |
commit | 884a6b1dfb465990757c9ea3619d874a0c8c208c (patch) | |
tree | 5465df115b32af87e3b86511d59873b1ba442f82 /engines/parallaction/gui.cpp | |
parent | d1a6b175f5ef7f64435477775015730657195a11 (diff) | |
download | scummvm-rg350-884a6b1dfb465990757c9ea3619d874a0c8c208c.tar.gz scummvm-rg350-884a6b1dfb465990757c9ea3619d874a0c8c208c.tar.bz2 scummvm-rg350-884a6b1dfb465990757c9ea3619d874a0c8c208c.zip |
Converted BRA to work with the new menu approach. It is not yet well plugged-in as in NS, but it suffices for the moment.
svn-id: r33272
Diffstat (limited to 'engines/parallaction/gui.cpp')
-rw-r--r-- | engines/parallaction/gui.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/engines/parallaction/gui.cpp b/engines/parallaction/gui.cpp new file mode 100644 index 0000000000..2dbe64fcf6 --- /dev/null +++ b/engines/parallaction/gui.cpp @@ -0,0 +1,92 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#include "parallaction/gui.h" + +namespace Parallaction { + +bool MenuInputHelper::run() { + if (_newState == 0) { + debugC(3, kDebugExec, "MenuInputHelper has set NULL state"); + return false; + } + + if (_newState != _state) { + debugC(3, kDebugExec, "MenuInputHelper changing state to '%s'", _newState->_name.c_str()); + + _newState->enter(); + _state = _newState; + } + + _newState = _state->run(); + + return true; +} + +MenuInputHelper::~MenuInputHelper() { + StateMap::iterator b = _map.begin(); + for ( ; b != _map.end(); b++) { + delete b->_value; + } + _map.clear(); +} + + +void Parallaction::runGuiFrame() { + if (_input->_inputMode != Input::kInputModeMenu) { + return; + } + + if (!_menuHelper) { + error("No menu helper defined!"); + } + + bool res = _menuHelper->run(); + + if (!res) { + cleanupGui(); + _input->_inputMode = Input::kInputModeGame; + } + +} + +void Parallaction::cleanupGui() { + delete _menuHelper; + _menuHelper = 0; +} + +void Parallaction::setInternLanguage(uint id) { + //TODO: assert id! + + _language = id; + _disk->setLanguage(id); +} + +uint Parallaction::getInternLanguage() { + return _language; +} + + +} // namespace Parallaction |