diff options
author | Nicola Mettifogo | 2007-11-01 14:08:55 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-11-01 14:08:55 +0000 |
commit | 288f47e0341bd80302ef5585f6ef0da67d2738f5 (patch) | |
tree | 61532f3cef8f9ae7e517eb136599e3d8ec9923d1 /engines | |
parent | 512e57c69017578e9cbf2d623467933d93cf4aaf (diff) | |
download | scummvm-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.cpp | 5 | ||||
-rw-r--r-- | engines/parallaction/gui_ns.cpp | 412 | ||||
-rw-r--r-- | engines/parallaction/menu.cpp | 424 | ||||
-rw-r--r-- | engines/parallaction/menu.h | 64 | ||||
-rw-r--r-- | engines/parallaction/module.mk | 2 | ||||
-rw-r--r-- | engines/parallaction/parallaction.h | 12 | ||||
-rw-r--r-- | engines/parallaction/parallaction_ns.cpp | 6 |
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; } |