aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorNicola Mettifogo2007-11-01 14:08:55 +0000
committerNicola Mettifogo2007-11-01 14:08:55 +0000
commit288f47e0341bd80302ef5585f6ef0da67d2738f5 (patch)
tree61532f3cef8f9ae7e517eb136599e3d8ec9923d1 /engines
parent512e57c69017578e9cbf2d623467933d93cf4aaf (diff)
downloadscummvm-rg350-288f47e0341bd80302ef5585f6ef0da67d2738f5.tar.gz
scummvm-rg350-288f47e0341bd80302ef5585f6ef0da67d2738f5.tar.bz2
scummvm-rg350-288f47e0341bd80302ef5585f6ef0da67d2738f5.zip
* Merged object Menu into Parallaction_ns.
* Some preliminary refactoring of ex-menu code. svn-id: r29354
Diffstat (limited to 'engines')
-rw-r--r--engines/parallaction/callables_ns.cpp5
-rw-r--r--engines/parallaction/gui_ns.cpp412
-rw-r--r--engines/parallaction/menu.cpp424
-rw-r--r--engines/parallaction/menu.h64
-rw-r--r--engines/parallaction/module.mk2
-rw-r--r--engines/parallaction/parallaction.h12
-rw-r--r--engines/parallaction/parallaction_ns.cpp6
7 files changed, 425 insertions, 500 deletions
diff --git a/engines/parallaction/callables_ns.cpp b/engines/parallaction/callables_ns.cpp
index c6c274b96c..c2ace3e3f0 100644
--- a/engines/parallaction/callables_ns.cpp
+++ b/engines/parallaction/callables_ns.cpp
@@ -31,7 +31,6 @@
#include "graphics/primitives.h" // for Graphics::drawLine
#include "parallaction/parallaction.h"
-#include "parallaction/menu.h"
#include "parallaction/sound.h"
@@ -435,7 +434,7 @@ void Parallaction_ns::_c_finito(void *parm) {
_gfx->updateScreen();
waitUntilLeftClick();
- _menu->selectCharacter();
+ guiSelectCharacter();
}
// this code saves main character animation from being removed from the following code
@@ -548,7 +547,7 @@ void Parallaction_ns::_c_endIntro(void *parm) {
waitUntilLeftClick();
_engineFlags &= ~kEngineBlockInput;
- _menu->selectCharacter();
+ guiSelectCharacter();
} else {
waitUntilLeftClick();
}
diff --git a/engines/parallaction/gui_ns.cpp b/engines/parallaction/gui_ns.cpp
new file mode 100644
index 0000000000..74c068cc4c
--- /dev/null
+++ b/engines/parallaction/gui_ns.cpp
@@ -0,0 +1,412 @@
+/* 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 "common/system.h"
+
+#include "parallaction/parallaction.h"
+#include "parallaction/sound.h"
+
+
+namespace Parallaction {
+
+const char *introMsg1[] = {
+ "INSERISCI IL CODICE",
+ "ENTREZ CODE",
+ "ENTER CODE",
+ "GIB DEN KODE EIN"
+};
+
+const char *introMsg2[] = {
+ "CODICE ERRATO",
+ "CODE ERRONE",
+ "WRONG CODE",
+ "GIB DEN KODE EIN"
+};
+
+const char *introMsg3[] = {
+ "PRESS LEFT MOUSE BUTTON",
+ "TO SEE INTRO",
+ "PRESS RIGHT MOUSE BUTTON",
+ "TO START"
+};
+
+const char *newGameMsg[] = {
+ "NUOVO GIOCO",
+ "NEUF JEU",
+ "NEW GAME",
+ "NEUES SPIEL"
+};
+
+const char *loadGameMsg[] = {
+ "GIOCO SALVATO",
+ "JEU SAUVE'",
+ "SAVED GAME",
+ "SPIEL GESPEICHERT"
+};
+
+
+#define BLOCK_WIDTH 16
+#define BLOCK_HEIGHT 24
+
+#define BLOCK_X 112
+#define BLOCK_Y 130
+
+#define BLOCK_SELECTION_X (BLOCK_X-1)
+#define BLOCK_SELECTION_Y (BLOCK_Y-1)
+
+#define BLOCK_X_OFFSET (BLOCK_WIDTH+1)
+#define BLOCK_Y_OFFSET 9
+
+// destination slots for code blocks
+//
+#define SLOT_X 61
+#define SLOT_Y 64
+#define SLOT_WIDTH (BLOCK_WIDTH+2)
+
+#define PASSWORD_LEN 6
+
+
+static uint16 _amigaKeys[][PASSWORD_LEN] = {
+ { 1, 3 ,7, 2, 4, 6 }, // dough
+ { 5, 3, 6, 2, 2, 7 }, // dino
+ { 0, 3, 6, 2, 2, 6 } // donna
+};
+
+static uint16 _pcKeys[][PASSWORD_LEN] = {
+ { 1, 7 ,7, 2, 2, 6 }, // dough
+ { 5, 3, 6, 1, 4, 7 }, // dino
+ { 0, 2, 8, 5, 5, 1 } // donna
+};
+
+enum {
+ NEW_GAME,
+ LOAD_GAME
+};
+
+void Parallaction_ns::guiStart() {
+
+ _disk->selectArchive((getFeatures() & GF_LANG_MULT) ? "disk1" : "disk0");
+
+ guiSplash();
+
+ _gfx->setFont(_menuFont);
+
+ _language = guiChooseLanguage();
+ _disk->setLanguage(_language);
+
+ if (getFeatures() & GF_DEMO) {
+ strcpy(_location._name, "fognedemo.dough");
+ return;
+ }
+
+ if (guiSelectGame() == NEW_GAME) {
+ guiNewGame();
+ }
+
+ return;
+}
+
+void Parallaction_ns::guiSplash() {
+
+ showSlide("intro");
+ _gfx->updateScreen();
+ g_system->delayMillis(2000);
+
+ showSlide("minintro");
+ _gfx->updateScreen();
+ g_system->delayMillis(2000);
+
+}
+
+void Parallaction_ns::guiNewGame() {
+
+ const char **v14 = introMsg3;
+
+ _disk->selectArchive("disk1");
+
+ setBackground("test", NULL, NULL);
+
+ _gfx->swapBuffers();
+
+ _gfx->displayCenteredString(50, v14[0]);
+ _gfx->displayCenteredString(70, v14[1]);
+ _gfx->displayCenteredString(100, v14[2]);
+ _gfx->displayCenteredString(120, v14[3]);
+
+ showCursor(false);
+
+ _gfx->updateScreen();
+
+ _mouseButtons = kMouseNone;
+ do {
+ updateInput();
+ } while (_mouseButtons != kMouseLeftUp && _mouseButtons != kMouseRightUp);
+
+ showCursor(true);
+
+ if (_mouseButtons != kMouseRightUp) {
+ strcpy(_location._name, "fogne.dough");
+ return; // show intro
+ }
+
+ guiSelectCharacter();
+
+ return; // start game
+}
+
+uint16 Parallaction_ns::guiChooseLanguage() {
+
+ if (getPlatform() == Common::kPlatformAmiga) {
+ if (!(getFeatures() & GF_LANG_MULT)) {
+ if (getFeatures() & GF_DEMO)
+ return 1; // Amiga Demo supports English
+ else
+ return 0; // The only other non multi-lingual version just supports Italian
+ }
+ }
+
+ // user can choose language in dos version
+ showSlide("lingua");
+ _gfx->displayString(60, 30, "SELECT LANGUAGE", 1);
+
+ setArrowCursor();
+
+ do {
+ updateInput();
+
+ if (_mouseButtons == kMouseLeftUp) {
+ for (uint16 _si = 0; _si < 4; _si++) {
+
+ if (80 + _si * 49 >= _mousePos.x) continue;
+ if (110 - _si * 25 >= _mousePos.y) continue;
+
+ if (128 + _si * 49 <= _mousePos.x) continue;
+ if (180 - _si * 25 <= _mousePos.y) continue;
+
+ beep();
+
+ switch (_si) {
+ case 0:
+ if (!(getFeatures() & GF_LANG_IT))
+ continue;
+ case 1:
+ if (!(getFeatures() & GF_LANG_FR))
+ continue;
+ case 2:
+ if (!(getFeatures() & GF_LANG_EN))
+ continue;
+ case 3:
+ if (!(getFeatures() & GF_LANG_DE))
+ continue;
+ }
+
+ return _si;
+ }
+ }
+
+ g_system->delayMillis(30);
+ _gfx->updateScreen();
+
+ } while (true);
+
+ // never reached !!!
+ return 0;
+}
+
+
+
+uint16 Parallaction_ns::guiSelectGame() {
+// printf("selectGame()\n");
+
+ showSlide("restore");
+
+ uint16 _si = 0;
+ uint16 _di = 3;
+
+ _mouseButtons = kMouseNone;
+ while (_mouseButtons != kMouseLeftUp) {
+
+ updateInput();
+
+ _si = (_mousePos.x > 160) ? 1 : 0;
+
+ if (_si != _di) {
+ _di = _si;
+
+ _gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
+ if (_si != 0) {
+ // load a game
+ _gfx->displayString(60, 30, loadGameMsg[_language], 1);
+ } else {
+ // new game
+ _gfx->displayString(60, 30, newGameMsg[_language], 1);
+ }
+
+ }
+
+ g_system->delayMillis(30);
+ _gfx->updateScreen();
+ }
+
+ if (_si == 0) return NEW_GAME; // new game
+
+ // load game
+
+ // TODO: allow the user to change her mind in this screen, that is
+ // don't force her to start at the intro when she closes her load
+ // game window without picking a savegame.
+ // The 2 strcpy's below act as workaround to prevent crashes for
+ // time being.
+ strcpy(_location._name, "fogne.dough");
+ loadGame();
+
+ return LOAD_GAME; // load game
+}
+
+
+int Parallaction_ns::guiGetSelectedBlock(const Common::Point &p, Common::Rect &r) {
+
+ for (uint16 _si = 0; _si < 9; _si++) {
+
+ Common::Rect q(
+ _si * BLOCK_X_OFFSET + BLOCK_SELECTION_X,
+ BLOCK_SELECTION_Y - _si * BLOCK_Y_OFFSET,
+ (_si + 1) * BLOCK_X_OFFSET + BLOCK_SELECTION_X,
+ BLOCK_SELECTION_Y + BLOCK_HEIGHT - _si * BLOCK_Y_OFFSET
+ );
+
+ if (q.contains(p)) {
+ r.setWidth(BLOCK_WIDTH);
+ r.setHeight(BLOCK_HEIGHT);
+ r.moveTo(_si * BLOCK_X_OFFSET + BLOCK_X, BLOCK_Y - _si * BLOCK_Y_OFFSET);
+ return _si;
+ }
+
+ }
+
+ return -1;
+}
+
+
+//
+// character selection and protection
+//
+void Parallaction_ns::guiSelectCharacter() {
+ debugC(1, kDebugMenu, "Parallaction_ns::guiselectCharacter()");
+
+ Graphics::Surface v14;
+ v14.create(BLOCK_WIDTH, BLOCK_HEIGHT, 1);
+
+ setArrowCursor();
+ _soundMan->stopMusic();
+
+ _gfx->setFont(_menuFont);
+
+ _disk->selectArchive((getFeatures() & GF_LANG_MULT) ? "disk1" : "disk0");
+
+ showSlide("password"); // loads background into kBitBack buffer
+
+
+ uint16 (*keys)[PASSWORD_LEN] = (getPlatform() == Common::kPlatformAmiga && (getFeatures() & GF_LANG_MULT)) ? _amigaKeys : _pcKeys;
+ uint16 points[3];
+ bool matched = false;
+ uint16 _di = 0;
+
+ while (true) {
+
+ _di = 0;
+
+ _gfx->displayString(60, 30, introMsg1[_language], 1); // displays message
+
+ points[0] = 0;
+ points[1] = 0;
+ points[2] = 0;
+
+ while (_di < PASSWORD_LEN) {
+
+ _mouseButtons = kMouseNone;
+ do {
+ updateInput();
+ g_system->delayMillis(30);
+ _gfx->updateScreen();
+ } while (_mouseButtons != kMouseLeftUp); // waits for left click
+
+ Common::Rect r;
+ int _si = guiGetSelectedBlock(_mousePos, r);
+ if (_si != -1) {
+ _gfx->grabRect((byte*)v14.pixels, r, Gfx::kBitFront, BLOCK_WIDTH);
+ _gfx->flatBlitCnv(&v14, _di * SLOT_WIDTH + SLOT_X, SLOT_Y, Gfx::kBitFront);
+ beep();
+
+ for (int i = 0; i < 3; i++) {
+ if (keys[i][_di] == _si) {
+ points[i]++;
+ }
+
+ if (points[i] == PASSWORD_LEN) {
+ matched = true;
+ }
+ }
+
+ _di++;
+ }
+ }
+
+ if (matched) {
+ break;
+ }
+
+ _gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
+ _gfx->displayString(60, 30, introMsg2[_language], 1);
+ _gfx->updateScreen();
+
+ g_system->delayMillis(2000);
+
+ _gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
+ }
+
+ if (points[1] == PASSWORD_LEN) {
+ sprintf(_location._name, "test.%s", _dinoName);
+ } else
+ if (points[2] == PASSWORD_LEN) {
+ sprintf(_location._name, "test.%s", _donnaName);
+ } else
+ if (points[0] == PASSWORD_LEN) {
+ sprintf(_location._name, "test.%s", _doughName);
+ }
+
+ _gfx->setBlackPalette();
+ _gfx->updateScreen();
+
+ _engineFlags |= kEngineChangeLocation;
+
+ v14.free();
+
+ return;
+
+}
+
+
+} // namespace Parallaction
diff --git a/engines/parallaction/menu.cpp b/engines/parallaction/menu.cpp
deleted file mode 100644
index 96a366bd9e..0000000000
--- a/engines/parallaction/menu.cpp
+++ /dev/null
@@ -1,424 +0,0 @@
-/* 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 "common/system.h"
-
-#include "parallaction/parallaction.h"
-#include "parallaction/menu.h"
-#include "parallaction/sound.h"
-
-
-namespace Parallaction {
-
-const char *introMsg1[] = {
- "INSERISCI IL CODICE",
- "ENTREZ CODE",
- "ENTER CODE",
- "GIB DEN KODE EIN"
-};
-
-const char *introMsg2[] = {
- "CODICE ERRATO",
- "CODE ERRONE",
- "WRONG CODE",
- "GIB DEN KODE EIN"
-};
-
-const char *introMsg3[] = {
- "PRESS LEFT MOUSE BUTTON",
- "TO SEE INTRO",
- "PRESS RIGHT MOUSE BUTTON",
- "TO START"
-};
-
-const char *newGameMsg[] = {
- "NUOVO GIOCO",
- "NEUF JEU",
- "NEW GAME",
- "NEUES SPIEL"
-};
-
-const char *loadGameMsg[] = {
- "GIOCO SALVATO",
- "JEU SAUVE'",
- "SAVED GAME",
- "SPIEL GESPEICHERT"
-};
-
-
-#define BLOCK_WIDTH 16
-#define BLOCK_HEIGHT 24
-
-#define BLOCK_X 112
-#define BLOCK_Y 130
-
-#define BLOCK_SELECTION_X (BLOCK_X-1)
-#define BLOCK_SELECTION_Y (BLOCK_Y-1)
-
-#define BLOCK_X_OFFSET (BLOCK_WIDTH+1)
-#define BLOCK_Y_OFFSET 9
-
-// destination slots for code blocks
-//
-#define SLOT_X 61
-#define SLOT_Y 64
-#define SLOT_WIDTH (BLOCK_WIDTH+2)
-
-#define PASSWORD_LEN 6
-
-static uint16 _amigaDinoKey[PASSWORD_LEN] = { 5, 3, 6, 2, 2, 7 };
-static uint16 _amigaDonnaKey[PASSWORD_LEN] = { 0, 3, 6, 2, 2, 6 };
-static uint16 _amigaDoughKey[PASSWORD_LEN] = { 1, 3 ,7, 2, 4, 6 };
-
-static uint16 _pcDinoKey[PASSWORD_LEN] = { 5, 3, 6, 1, 4, 7 };
-static uint16 _pcDonnaKey[PASSWORD_LEN] = { 0, 2, 8, 5, 5, 1 };
-static uint16 _pcDoughKey[PASSWORD_LEN] = { 1, 7 ,7, 2, 2, 6 };
-
-
-Menu::Menu(Parallaction *vm) {
- _vm = vm;
-
-}
-
-Menu::~Menu() {
-
-}
-
-
-void Menu::start() {
-
- _vm->_disk->selectArchive((_vm->getFeatures() & GF_LANG_MULT) ? "disk1" : "disk0");
-
- splash();
-
- _vm->_gfx->setFont(_vm->_menuFont);
-
- _language = chooseLanguage();
- _vm->_disk->setLanguage(_language);
-
- int game = selectGame();
- if (game == 0)
- newGame();
-
- return;
-}
-
-void Menu::splash() {
-
- _vm->showSlide("intro");
- _vm->_gfx->updateScreen();
- g_system->delayMillis(2000);
-
- _vm->showSlide("minintro");
- _vm->_gfx->updateScreen();
- g_system->delayMillis(2000);
-
-}
-
-void Menu::newGame() {
-
- if (_vm->getFeatures() & GF_DEMO) {
- // character screen is not shown on demo
- // so user warps to the playable intro
- strcpy(_vm->_location._name, "fognedemo.dough");
- return;
- }
-
- const char **v14 = introMsg3;
-
- _vm->_disk->selectArchive("disk1");
-
- _vm->setBackground("test", NULL, NULL);
-
- _vm->_gfx->swapBuffers();
-
- _vm->_gfx->displayCenteredString(50, v14[0]);
- _vm->_gfx->displayCenteredString(70, v14[1]);
- _vm->_gfx->displayCenteredString(100, v14[2]);
- _vm->_gfx->displayCenteredString(120, v14[3]);
-
- _vm->showCursor(false);
-
- _vm->_gfx->updateScreen();
-
- _mouseButtons = kMouseNone;
- do {
- _vm->updateInput();
- } while (_mouseButtons != kMouseLeftUp && _mouseButtons != kMouseRightUp);
-
- _vm->showCursor(true);
-
- if (_mouseButtons != kMouseRightUp) {
- strcpy(_vm->_location._name, "fogne.dough");
- return; // show intro
- }
-
- selectCharacter();
-
- return; // start game
-}
-
-uint16 Menu::chooseLanguage() {
-
- if (_vm->getPlatform() == Common::kPlatformAmiga) {
- if (!(_vm->getFeatures() & GF_LANG_MULT)) {
- if (_vm->getFeatures() & GF_DEMO)
- return 1; // Amiga Demo supports English
- else
- return 0; // The only other non multi-lingual version just supports Italian
- }
- }
-
- // user can choose language in dos version
- _vm->showSlide("lingua");
- _vm->_gfx->displayString(60, 30, "SELECT LANGUAGE", 1);
-
- _vm->setArrowCursor();
-
- do {
- _vm->updateInput();
-
- if (_mouseButtons == kMouseLeftUp) {
- for (uint16 _si = 0; _si < 4; _si++) {
-
- if (80 + _si * 49 >= _vm->_mousePos.x) continue;
- if (110 - _si * 25 >= _vm->_mousePos.y) continue;
-
- if (128 + _si * 49 <= _vm->_mousePos.x) continue;
- if (180 - _si * 25 <= _vm->_mousePos.y) continue;
-
- _vm->beep();
-
- switch (_si) {
- case 0:
- if (!(_vm->getFeatures() & GF_LANG_IT))
- continue;
- case 1:
- if (!(_vm->getFeatures() & GF_LANG_FR))
- continue;
- case 2:
- if (!(_vm->getFeatures() & GF_LANG_EN))
- continue;
- case 3:
- if (!(_vm->getFeatures() & GF_LANG_DE))
- continue;
- }
-
- return _si;
- }
- }
-
- g_system->delayMillis(30);
- _vm->_gfx->updateScreen();
-
- } while (true);
-
- // never reached !!!
- return 0;
-}
-
-
-
-uint16 Menu::selectGame() {
-// printf("selectGame()\n");
-
- if (_vm->getFeatures() & GF_DEMO) {
- return 0; // can't load a savegame in demo versions
- }
-
- _vm->showSlide("restore");
-
- uint16 _si = 0;
- uint16 _di = 3;
-
- _mouseButtons = kMouseNone;
- while (_mouseButtons != kMouseLeftUp) {
-
- _vm->updateInput();
-
- _si = (_vm->_mousePos.x > 160) ? 1 : 0;
-
- if (_si != _di) {
- _di = _si;
-
- _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
- if (_si != 0) {
- // load a game
- _vm->_gfx->displayString(60, 30, loadGameMsg[_language], 1);
- } else {
- // new game
- _vm->_gfx->displayString(60, 30, newGameMsg[_language], 1);
- }
-
- }
-
- g_system->delayMillis(30);
- _vm->_gfx->updateScreen();
- }
-
- if (_si == 0) return 0; // new game
-
- // load game
-
- // TODO: allow the user to change her mind in this screen, that is
- // don't force her to start at the intro when she closes her load
- // game window without picking a savegame.
- // The 2 strcpy's below act as workaround to prevent crashes for
- // time being.
- strcpy(_vm->_location._name, "fogne.dough");
- _vm->loadGame();
-
- return 1; // load game
-}
-
-
-int Menu::getSelectedBlock(const Common::Point &p, Common::Rect &r) {
-
- for (uint16 _si = 0; _si < 9; _si++) {
-
- Common::Rect q(
- _si * BLOCK_X_OFFSET + BLOCK_SELECTION_X,
- BLOCK_SELECTION_Y - _si * BLOCK_Y_OFFSET,
- (_si + 1) * BLOCK_X_OFFSET + BLOCK_SELECTION_X,
- BLOCK_SELECTION_Y + BLOCK_HEIGHT - _si * BLOCK_Y_OFFSET
- );
-
- if (q.contains(p)) {
- r.setWidth(BLOCK_WIDTH);
- r.setHeight(BLOCK_HEIGHT);
- r.moveTo(_si * BLOCK_X_OFFSET + BLOCK_X, BLOCK_Y - _si * BLOCK_Y_OFFSET);
- return _si;
- }
-
- }
-
- return -1;
-}
-
-
-//
-// character selection and protection
-//
-void Menu::selectCharacter() {
- debugC(1, kDebugMenu, "Menu::selectCharacter()");
-
- uint16 _di = 0;
-
- uint16 _donna_points, _dino_points, _dough_points;
-
- Graphics::Surface v14;
- v14.create(BLOCK_WIDTH, BLOCK_HEIGHT, 1);
-
- _vm->setArrowCursor();
- _vm->_soundMan->stopMusic();
-
- _vm->_gfx->setFont(_vm->_menuFont);
-
- _vm->_disk->selectArchive((_vm->getFeatures() & GF_LANG_MULT) ? "disk1" : "disk0");
-
- _vm->showSlide("password"); // loads background into kBitBack buffer
-
- while (true) {
-
- _di = 0;
-
- _vm->_gfx->displayString(60, 30, introMsg1[_language], 1); // displays message
-
- _donna_points = 0;
- _dino_points = 0;
- _dough_points = 0;
-
- while (_di < PASSWORD_LEN) {
-
- _mouseButtons = kMouseNone;
- do {
- _vm->updateInput();
- g_system->delayMillis(30);
- _vm->_gfx->updateScreen();
- } while (_mouseButtons != kMouseLeftUp); // waits for left click
-
- Common::Rect r;
- int _si = getSelectedBlock(_vm->_mousePos, r);
- if (_si != -1) {
- _vm->_gfx->grabRect((byte*)v14.pixels, r, Gfx::kBitFront, BLOCK_WIDTH);
- _vm->_gfx->flatBlitCnv(&v14, _di * SLOT_WIDTH + SLOT_X, SLOT_Y, Gfx::kBitFront);
- _vm->beep();
-
- if (_vm->getPlatform() == Common::kPlatformAmiga && (_vm->getFeatures() & GF_LANG_MULT)) {
- if (_amigaDinoKey[_di] == _si)
- _dino_points++; // dino
- if (_amigaDonnaKey[_di] == _si)
- _donna_points++; // donna
- if (_amigaDoughKey[_di] == _si)
- _dough_points++; // dough
- } else {
- if (_pcDinoKey[_di] == _si)
- _dino_points++; // dino
- if (_pcDonnaKey[_di] == _si)
- _donna_points++; // donna
- if (_pcDoughKey[_di] == _si)
- _dough_points++; // dough
- }
-
- _di++;
- }
- }
-
- if (_dino_points == PASSWORD_LEN || _donna_points == PASSWORD_LEN || _dough_points == PASSWORD_LEN) {
- break;
- }
-
- _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
- _vm->_gfx->displayString(60, 30, introMsg2[_language], 1);
- _vm->_gfx->updateScreen();
-
- g_system->delayMillis(2000);
-
- _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
- }
-
- if (_dino_points == PASSWORD_LEN) {
- sprintf(_vm->_location._name, "test.%s", _dinoName);
- } else
- if (_donna_points == PASSWORD_LEN) {
- sprintf(_vm->_location._name, "test.%s", _donnaName);
- } else
- if (_dough_points == PASSWORD_LEN) {
- sprintf(_vm->_location._name, "test.%s", _doughName);
- }
-
- _vm->_gfx->setBlackPalette();
- _vm->_gfx->updateScreen();
-
- _engineFlags |= kEngineChangeLocation;
-
- v14.free();
-
- return;
-
-}
-
-
-} // namespace Parallaction
diff --git a/engines/parallaction/menu.h b/engines/parallaction/menu.h
deleted file mode 100644
index bb9eabdfb7..0000000000
--- a/engines/parallaction/menu.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* 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$
- *
- */
-
-#ifndef PARALLACTION_MENU_H
-#define PARALLACTION_MENU_H
-
-#include "common/rect.h"
-
-#include "parallaction/defs.h"
-
-namespace Parallaction {
-
-class Parallaction;
-
-class Menu {
-
-public:
- Menu(Parallaction *vm);
- virtual ~Menu();
-
- void start();
- void selectCharacter();
-
-protected:
- void splash();
- void newGame();
- uint16 chooseLanguage();
- uint16 selectGame();
- int getSelectedBlock(const Common::Point &p, Common::Rect& r);
-
-public:
-
-
-protected:
- Parallaction* _vm;
-
-
-};
-
-#endif
-
-} // namespace Parallaction
diff --git a/engines/parallaction/module.mk b/engines/parallaction/module.mk
index 56eaddac95..188ffe0dbb 100644
--- a/engines/parallaction/module.mk
+++ b/engines/parallaction/module.mk
@@ -13,7 +13,7 @@ MODULE_OBJS := \
font.o \
graphics.o \
inventory.o \
- menu.o \
+ gui_ns.o \
objects.o \
parallaction.o \
parallaction_br.o \
diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h
index 0f4cd12253..49d3915455 100644
--- a/engines/parallaction/parallaction.h
+++ b/engines/parallaction/parallaction.h
@@ -185,7 +185,6 @@ void waitUntilLeftClick();
class Debugger;
class Gfx;
-class Menu;
class SoundMan;
@@ -667,8 +666,6 @@ public:
private:
- Menu* _menu;
-
void initFonts();
void freeFonts();
@@ -905,6 +902,15 @@ protected:
DECLARE_UNQUALIFIED_INSTRUCTION_OPCODE(move);
DECLARE_UNQUALIFIED_INSTRUCTION_OPCODE(endscript);
+ void guiStart();
+ void guiSelectCharacter();
+ void guiSplash();
+ void guiNewGame();
+ uint16 guiChooseLanguage();
+ uint16 guiSelectGame();
+ int guiGetSelectedBlock(const Common::Point &p, Common::Rect& r);
+
+
};
diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp
index fd717a11b6..f4eac6c037 100644
--- a/engines/parallaction/parallaction_ns.cpp
+++ b/engines/parallaction/parallaction_ns.cpp
@@ -29,7 +29,6 @@
#include "parallaction/parallaction.h"
#include "parallaction/sound.h"
-#include "parallaction/menu.h"
namespace Parallaction {
@@ -260,8 +259,7 @@ void Parallaction_ns::callFunction(uint index, void* parm) {
int Parallaction_ns::go() {
- _menu = new Menu(this);
- _menu->start();
+ guiStart();
LocationName locname;
locname.bind(_location._name);
@@ -287,8 +285,6 @@ int Parallaction_ns::go() {
runGame();
- delete _menu;
-
return 0;
}