aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/settings.cpp')
-rw-r--r--engines/bladerunner/settings.cpp127
1 files changed, 127 insertions, 0 deletions
diff --git a/engines/bladerunner/settings.cpp b/engines/bladerunner/settings.cpp
new file mode 100644
index 0000000000..679db5193e
--- /dev/null
+++ b/engines/bladerunner/settings.cpp
@@ -0,0 +1,127 @@
+/* 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.
+ *
+ */
+
+#include "bladerunner/settings.h"
+
+#include "bladerunner/bladerunner.h"
+#include "bladerunner/chapters.h"
+#include "bladerunner/scene.h"
+
+#include "common/debug.h"
+
+namespace BladeRunner {
+
+Settings::Settings(BladeRunnerEngine *vm) : _vm(vm) {
+ _chapter = 1;
+ _gamma = 1.0f;
+
+ _chapterChanged = false;
+ _newChapter = -1;
+ _newScene = -1;
+ _newSet = -1;
+
+ _startingGame = true;
+ _loadingGame = false;
+
+ _fullHDFrames = true;
+ _mst3k = false;
+}
+
+bool Settings::openNewScene() {
+ if (_newSet == -1) {
+ assert(_newScene == -1);
+ return true;
+ }
+ assert(_newScene != -1);
+
+ if (_startingGame) {
+ // Stop ambient audio and music
+// ambient::removeAllNonLoopingSounds(Ambient, 1);
+// ambient::removeAllLoopingSounds(Ambient, 1);
+// music::stop(Music, 2);
+ }
+
+ int currentSet = _vm->_scene->_setId;
+ int newSet = _newSet;
+ int newScene = _newScene;
+
+ _newSet = -1;
+ _newScene = -1;
+ if (currentSet != -1) {
+ _vm->_scene->close(!_loadingGame && !_startingGame);
+ }
+ if (_chapterChanged) {
+ if (_vm->_chapters->hasOpenResources())
+ _vm->_chapters->closeResources();
+
+ int newChapter = _newChapter;
+ _chapterChanged = false;
+ _newChapter = 0;
+ if (!_vm->_chapters->enterChapter(newChapter)) {
+ _vm->_gameIsRunning = false;
+ return false;
+ }
+ _chapter = newChapter;
+ if (_startingGame)
+ _startingGame = false;
+ }
+
+ if (!_vm->_scene->open(newSet, newScene, _loadingGame)) {
+ _vm->_gameIsRunning = false;
+ return false;
+ }
+
+ if (!_loadingGame && currentSet != newSet) {
+ // TODO: Reset actors for new set
+ }
+
+ _loadingGame = false;
+ return true;
+}
+
+int Settings::getAmmoType() {
+ return _ammoType;
+}
+
+int Settings::getAmmoAmount(int ammoType) {
+ return _ammoAmounts[ammoType];
+}
+
+void Settings::addAmmo(int ammoType, int ammo) {
+ if (ammoType > _ammoType || _ammoAmounts[_ammoType] == 0)
+ _ammoType = ammoType;
+ _ammoAmounts[ammoType] += ammo;
+}
+
+int Settings::getDifficulty() {
+ return _difficulty;
+}
+
+int Settings::getPlayerAgenda() {
+ return _playerAgenda;
+}
+
+void Settings::setPlayerAgenda(int agenda) {
+ _playerAgenda = agenda;
+}
+
+} // End of namespace BladeRunner