aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/scenes/scenecore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gnap/scenes/scenecore.cpp')
-rw-r--r--engines/gnap/scenes/scenecore.cpp658
1 files changed, 658 insertions, 0 deletions
diff --git a/engines/gnap/scenes/scenecore.cpp b/engines/gnap/scenes/scenecore.cpp
new file mode 100644
index 0000000000..2736addb31
--- /dev/null
+++ b/engines/gnap/scenes/scenecore.cpp
@@ -0,0 +1,658 @@
+/* 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 "gnap/gnap.h"
+#include "gnap/gamesys.h"
+#include "gnap/resource.h"
+
+namespace Gnap {
+
+int GnapEngine::initSceneLogic() {
+
+ int backgroundId = -1;
+
+ switch (_currentSceneNum) {
+#if 0 // TODO
+ case 0:
+ backgroundId = scene00_init();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ break;
+#endif
+ case 1:
+ backgroundId = scene01_init();
+ scene01_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 2:
+ backgroundId = scene02_init();
+ scene02_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 3:
+ backgroundId = scene03_init();
+ scene03_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 4:
+ backgroundId = scene04_init();
+ scene04_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 5:
+ backgroundId = scene05_init();
+ scene05_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 6:
+ backgroundId = scene06_init();
+ scene06_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 7:
+ backgroundId = scene07_init();
+ scene07_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 8:
+ backgroundId = scene08_init();
+ scene08_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 9:
+ backgroundId = scene09_init();
+ scene09_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 10:
+ backgroundId = scene10_init();
+ scene10_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 11:
+ backgroundId = scene11_init();
+ scene11_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 12:
+ backgroundId = scene12_init();
+ scene12_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 13:
+ backgroundId = scene13_init();
+ scene13_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 14:
+ backgroundId = scene14_init();
+ scene14_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ break;
+ case 15:
+ backgroundId = scene15_init();
+ scene15_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ break;
+ case 16:
+ case 47:
+ case 48:
+ case 54:
+ backgroundId = cutscene_init();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ break;
+ case 17:
+ backgroundId = scene17_init();
+ scene17_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 18:
+ backgroundId = scene18_init();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ scene18_updateHotspots();
+ break;
+ case 19:
+ backgroundId = scene19_init();
+ scene19_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 20:
+ backgroundId = scene20_init();
+ scene20_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 21:
+ backgroundId = scene21_init();
+ scene21_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 22:
+ backgroundId = scene22_init();
+ scene22_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 23:
+ backgroundId = scene23_init();
+ scene23_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 24:
+ backgroundId = scene24_init();
+ scene24_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 136, 11, 10);
+ break;
+ case 25:
+ backgroundId = scene25_init();
+ scene25_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 26:
+ backgroundId = scene26_init();
+ scene26_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 27:
+ backgroundId = scene27_init();
+ scene27_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 28:
+ backgroundId = scene28_init();
+ scene28_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 29:
+ backgroundId = scene29_init();
+ scene29_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 30:
+ backgroundId = scene30_init();
+ scene30_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 31:
+ backgroundId = scene31_init();
+ scene31_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 32:
+ backgroundId = scene32_init();
+ scene32_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 33:
+ backgroundId = scene33_init();
+ scene33_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 34:
+ backgroundId = scene03_init();
+ scene03_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 35:
+ backgroundId = scene05_init();
+ scene05_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 36:
+ backgroundId = scene06_init();
+ scene06_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 37:
+ backgroundId = scene04_init();
+ scene04_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 38:
+ backgroundId = scene38_init();
+ scene38_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 39:
+ backgroundId = scene39_init();
+ scene39_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 40:
+ backgroundId = scene40_init();
+ scene40_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 41:
+ backgroundId = scene41_init();
+ scene41_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 42:
+ backgroundId = scene42_init();
+ scene42_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 43:
+ backgroundId = scene43_init();
+ scene43_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 44:
+ backgroundId = scene44_init();
+ scene44_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 45:
+ backgroundId = scene45_init();
+ scene45_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 46:
+ backgroundId = scene46_init();
+ scene46_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 49:
+ backgroundId = scene49_init();
+ scene49_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 50:
+ backgroundId = scene50_init();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 51:
+ backgroundId = scene51_init();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 52:
+ backgroundId = scene52_init();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ case 53:
+ backgroundId = scene53_init();
+ scene53_updateHotspots();
+ _gameSys->setScaleValues(0, 500, 1, 1000);
+ initSceneGrid(21, 146, 11, 10);
+ break;
+ }
+
+ return backgroundId;
+}
+
+void GnapEngine::runSceneLogic() {
+ switch (_currentSceneNum) {
+ case 0:
+#if 0 // TODO
+ scene00_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 8;
+ break;
+#endif
+ case 1:
+ scene01_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 4;
+ break;
+ case 2:
+ scene02_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 4;
+ break;
+ case 3:
+ scene03_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 4;
+ break;
+ case 4:
+ scene04_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 4;
+ break;
+ case 5:
+ scene05_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 4;
+ break;
+ case 6:
+ scene06_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 4;
+ break;
+ case 7:
+ scene07_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 8;
+ break;
+ case 8:
+ scene08_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 9;
+ break;
+ case 9:
+ scene09_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 10;
+ break;
+ case 10:
+ scene10_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 11;
+ break;
+ case 11:
+ scene11_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 12;
+ break;
+ case 12:
+ scene12_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 11;
+ break;
+ case 13:
+ scene13_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 11;
+ break;
+ case 14:
+ scene14_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 13;
+ break;
+ case 15:
+ scene15_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 12;
+ break;
+ case 16:
+ scene16_initCutscene();
+ _newSceneNum = 17;
+ _newCursorValue = 3;
+ cutscene_run();
+ break;
+ case 17:
+ scene17_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 18:
+ scene18_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 19:
+ scene19_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 19;
+ break;
+ case 20:
+ scene20_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 22;
+ break;
+ case 21:
+ scene21_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 22:
+ scene22_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 23:
+ scene23_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 24:
+ scene24_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 25:
+ scene25_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 26:
+ scene26_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 27:
+ scene27_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 28:
+ scene28_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 29:
+ scene29_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 30:
+ scene30_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 31:
+ scene31_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 20;
+ break;
+ case 32:
+ scene32_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 33:
+ scene33_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 34:
+ scene03_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 35:
+ scene05_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 36:
+ scene06_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 37:
+ scene04_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 38:
+ scene38_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 39:
+ scene39_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 40:
+ scene40_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 41:
+ scene41_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 42:
+ scene42_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 43:
+ scene43_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 44:
+ scene44_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 45:
+ scene45_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 46:
+ scene46_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 37;
+ break;
+ case 47:
+ if (_prevSceneNum == 49) {
+ scene47_initCutscene1();
+ _newSceneNum = 7;
+ _newCursorValue = 2;
+ } else if (_prevSceneNum == 13) {
+ scene47_initCutscene2();
+ _newSceneNum = 11;
+ } else if (!isFlag(10) && _prevSceneNum == 2) {//CHECKME
+ if (isFlag(25)) {
+ scene47_initCutscene3();
+ _newSceneNum = 2;
+ } else {
+ scene47_initCutscene4();
+ _newSceneNum = 49;
+ }
+ } else if (_prevSceneNum == 21) {
+ scene47_initCutscene5();
+ _newSceneNum = 21;
+ setFlag(3);
+ setFlag(5);
+ } else if (_prevSceneNum == 30) {
+ scene47_initCutscene6();
+ _newSceneNum = 26;
+ } else if (isFlag(10) && _cursorValue == 1) {
+ scene47_initCutscene7();
+ _newSceneNum = 4;
+ }
+ cutscene_run();
+ break;
+ case 48:
+ scene48_initCutscene();
+ _newSceneNum = 33;
+ _newCursorValue = 4;
+ cutscene_run();
+ break;
+ case 49:
+ scene49_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 47;
+ break;
+ case 50:
+ scene50_run();
+ _newSceneNum = _prevSceneNum;
+ break;
+ case 51:
+ scene51_run();
+ break;
+ case 52:
+ scene52_run();
+ _newSceneNum = _prevSceneNum;
+ break;
+ case 53:
+ scene53_run();
+ if (_newSceneNum == 55)
+ _newSceneNum = 53;
+ break;
+ case 54:
+ if (_prevSceneNum == 45) {
+ scene54_initCutscene1();
+ _newSceneNum = 43;
+ cutscene_run();
+ } else {
+ scene54_initCutscene2();
+ cutscene_run();
+ _gameDone = true;
+ }
+ break;
+ }
+}
+
+} // End of namespace Gnap