diff options
author | athrxx | 2011-05-16 18:05:00 +0200 |
---|---|---|
committer | athrxx | 2011-05-16 18:05:00 +0200 |
commit | 01c527749295c838b2079f9c95fbab7fb18edc56 (patch) | |
tree | a125bc44838f5bf83f309dfd9abe69a91cb1112a /engines/tsage | |
parent | 5fd257d3cccdb2800493237665eb1106f44fabab (diff) | |
parent | 88319a727a5adc4888ec17e5ee091e14ce176afd (diff) | |
download | scummvm-rg350-01c527749295c838b2079f9c95fbab7fb18edc56.tar.gz scummvm-rg350-01c527749295c838b2079f9c95fbab7fb18edc56.tar.bz2 scummvm-rg350-01c527749295c838b2079f9c95fbab7fb18edc56.zip |
Merge branch 'master' of https://github.com/scummvm/scummvm
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/core.cpp | 47 | ||||
-rw-r--r-- | engines/tsage/detection.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/events.cpp | 7 | ||||
-rw-r--r-- | engines/tsage/graphics.cpp | 27 | ||||
-rw-r--r-- | engines/tsage/ringworld_demo.cpp | 62 | ||||
-rw-r--r-- | engines/tsage/ringworld_demo.h | 4 | ||||
-rw-r--r-- | engines/tsage/ringworld_logic.cpp | 48 | ||||
-rw-r--r-- | engines/tsage/ringworld_logic.h | 1 | ||||
-rw-r--r-- | engines/tsage/ringworld_scenes2.cpp | 3 | ||||
-rw-r--r-- | engines/tsage/scenes.h | 1 | ||||
-rw-r--r-- | engines/tsage/staticres.cpp | 6 | ||||
-rw-r--r-- | engines/tsage/staticres.h | 6 |
12 files changed, 155 insertions, 59 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 2f0536599a..7534abdec7 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -3481,52 +3481,11 @@ void SceneHandler::postInit(SceneObjectList *OwnerList) { void SceneHandler::process(Event &event) { // Main keypress handler - if ((event.eventType == EVENT_KEYPRESS) && !event.handled) { - switch (event.kbd.keycode) { - case Common::KEYCODE_F1: - // F1 - Help - MessageDialog::show((_vm->getFeatures() & GF_DEMO) ? DEMO_HELP_MSG : HELP_MSG, OK_BTN_STRING); - break; - - case Common::KEYCODE_F2: { - // F2 - Sound Options - ConfigDialog *dlg = new ConfigDialog(); - dlg->runModal(); - delete dlg; - _globals->_events.setCursorFromFlag(); - break; - } - - case Common::KEYCODE_F3: - // F3 - Quit - _globals->_game->quitGame(); - event.handled = false; - break; - - case Common::KEYCODE_F4: - // F4 - Restart - _globals->_game->restartGame(); - _globals->_events.setCursorFromFlag(); - break; - - case Common::KEYCODE_F7: - // F7 - Restore - _globals->_game->restoreGame(); - _globals->_events.setCursorFromFlag(); - break; + if (!event.handled) { + _globals->_game->processEvent(event); - case Common::KEYCODE_F10: - // F10 - Pause - GfxDialog::setPalette(); - MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING); + if (event.eventType == EVENT_KEYPRESS) _globals->_events.setCursorFromFlag(); - break; - - default: - break; - } - - _globals->_events.setCursorFromFlag(); } // Check for displaying right-click dialog diff --git a/engines/tsage/detection.cpp b/engines/tsage/detection.cpp index 4ab2142c95..20c2002257 100644 --- a/engines/tsage/detection.cpp +++ b/engines/tsage/detection.cpp @@ -88,7 +88,7 @@ public: } virtual const char *getName() const { - return "TsAGE Engine"; + return "TsAGE"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp index 132225dacb..e889c56c4d 100644 --- a/engines/tsage/events.cpp +++ b/engines/tsage/events.cpp @@ -151,8 +151,13 @@ void EventsClass::setCursor(CursorType cursorType) { switch (cursorType) { case CURSOR_NONE: // No cursor - cursor = _resourceManager->getSubResource(4, 1, 6, &size); _globals->setFlag(122); + + if (_vm->getFeatures() & GF_DEMO) { + CursorMan.showMouse(false); + return; + } + cursor = _resourceManager->getSubResource(4, 1, 6, &size); break; case CURSOR_LOOK: diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index 5da00e8522..85dfc5d058 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -967,9 +967,10 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) { // Event loop GfxButton *selectedButton = NULL; - while (!_vm->getEventManager()->shouldQuit()) { + bool breakFlag = false; + while (!_vm->getEventManager()->shouldQuit() && !breakFlag) { Event event; - while (_globals->_events.getEvent(event)) { + while (_globals->_events.getEvent(event) && !breakFlag) { // Adjust mouse positions to be relative within the dialog event.mousePos.x -= _gfxManager._bounds.left; event.mousePos.y -= _gfxManager._bounds.top; @@ -978,19 +979,23 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) { if ((*i)->process(event)) selectedButton = static_cast<GfxButton *>(*i); } - } - if (selectedButton) - break; - else if (!event.handled) { - if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { - selectedButton = NULL; - break; - } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) { - selectedButton = defaultButton; + if (selectedButton) { + breakFlag = true; break; + } else if (!event.handled) { + if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { + selectedButton = NULL; + breakFlag = true; + break; + } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) { + selectedButton = defaultButton; + breakFlag = true; + break; + } } } + g_system->delayMillis(10); g_system->updateScreen(); } diff --git a/engines/tsage/ringworld_demo.cpp b/engines/tsage/ringworld_demo.cpp index 2dacea660a..3ad414fa20 100644 --- a/engines/tsage/ringworld_demo.cpp +++ b/engines/tsage/ringworld_demo.cpp @@ -39,6 +39,68 @@ Scene *RingworldDemoGame::createScene(int sceneNumber) { return new RingworldDemoScene(); } +void RingworldDemoGame::quitGame() { + _globals->_events.setCursor(CURSOR_ARROW); + MessageDialog *dlg = new MessageDialog(DEMO_EXIT_MSG, EXIT_BTN_STRING, DEMO_BTN_STRING); + dlg->draw(); + + GfxButton *selectedButton = dlg->execute(&dlg->_btn2); + bool exitFlag = selectedButton != &dlg->_btn2; + + delete dlg; + _globals->_events.hideCursor(); + + if (exitFlag) + _vm->quitGame(); +} + +void RingworldDemoGame::pauseGame() { + _globals->_events.setCursor(CURSOR_ARROW); + MessageDialog *dlg = new MessageDialog(DEMO_PAUSED_MSG, EXIT_BTN_STRING, DEMO_RESUME_BTN_STRING); + dlg->draw(); + + GfxButton *selectedButton = dlg->execute(&dlg->_btn2); + bool exitFlag = selectedButton != &dlg->_btn2; + + delete dlg; + _globals->_events.hideCursor(); + + if (exitFlag) + _vm->quitGame(); +} + +void RingworldDemoGame::processEvent(Event &event) { + if (event.eventType == EVENT_KEYPRESS) { + switch (event.kbd.keycode) { + case Common::KEYCODE_F1: + // F1 - Help + MessageDialog::show(DEMO_HELP_MSG, OK_BTN_STRING); + break; + + case Common::KEYCODE_F2: { + // F2 - Sound Options + ConfigDialog *dlg = new ConfigDialog(); + dlg->runModal(); + delete dlg; + _globals->_events.setCursorFromFlag(); + break; + } + + case Common::KEYCODE_F3: + // F3 - Quit + quitGame(); + event.handled = false; + break; + + default: + break; + } + } else if (event.eventType == EVENT_BUTTON_DOWN) { + pauseGame(); + event.handled = true; + } +} + /*-------------------------------------------------------------------------- * Ringworld Demo scene * diff --git a/engines/tsage/ringworld_demo.h b/engines/tsage/ringworld_demo.h index 8b69da8f43..7492c1e871 100644 --- a/engines/tsage/ringworld_demo.h +++ b/engines/tsage/ringworld_demo.h @@ -32,9 +32,13 @@ namespace tSage { class RingworldDemoGame: public Game { +private: + void pauseGame(); public: virtual void start(); virtual Scene *createScene(int sceneNumber); + virtual void quitGame(); + virtual void processEvent(Event &event); }; class RingworldDemoScene: public Scene { diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp index a03c4081da..2141fcce5a 100644 --- a/engines/tsage/ringworld_logic.cpp +++ b/engines/tsage/ringworld_logic.cpp @@ -1421,4 +1421,52 @@ void RingworldGame::endGame(int resNum, int lineNum) { _globals->_events.setCursorFromFlag(); } +void RingworldGame::processEvent(Event &event) { + if (event.eventType == EVENT_KEYPRESS) { + switch (event.kbd.keycode) { + case Common::KEYCODE_F1: + // F1 - Help + MessageDialog::show(HELP_MSG, OK_BTN_STRING); + break; + + case Common::KEYCODE_F2: { + // F2 - Sound Options + ConfigDialog *dlg = new ConfigDialog(); + dlg->runModal(); + delete dlg; + _globals->_events.setCursorFromFlag(); + break; + } + + case Common::KEYCODE_F3: + // F3 - Quit + quitGame(); + event.handled = false; + break; + + case Common::KEYCODE_F4: + // F4 - Restart + restartGame(); + _globals->_events.setCursorFromFlag(); + break; + + case Common::KEYCODE_F7: + // F7 - Restore + restoreGame(); + _globals->_events.setCursorFromFlag(); + break; + + case Common::KEYCODE_F10: + // F10 - Pause + GfxDialog::setPalette(); + MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING); + _globals->_events.setCursorFromFlag(); + break; + + default: + break; + } + } +} + } // End of namespace tSage diff --git a/engines/tsage/ringworld_logic.h b/engines/tsage/ringworld_logic.h index 6fa92fa043..19b0f10b42 100644 --- a/engines/tsage/ringworld_logic.h +++ b/engines/tsage/ringworld_logic.h @@ -453,6 +453,7 @@ public: virtual void endGame(int resNum, int lineNum); virtual Scene *createScene(int sceneNumber); + virtual void processEvent(Event &event); }; } // End of namespace tSage diff --git a/engines/tsage/ringworld_scenes2.cpp b/engines/tsage/ringworld_scenes2.cpp index 906f648b9e..4378eac724 100644 --- a/engines/tsage/ringworld_scenes2.cpp +++ b/engines/tsage/ringworld_scenes2.cpp @@ -477,13 +477,14 @@ void Scene1001::Action1::signal() { case 19: { _globals->_soundHandler.startSound(91); byte adjustData[4] = {0xff, 0xff, 0xff, 0}; - _globals->_scenePalette.fade(adjustData, true, 0); + _globals->_scenePalette.fade(adjustData, false, 0); scene->_object1._strip = 7; scene->_object1._frame = 1; scene->_object1.setPosition(Common::Point(314, 112)); scene->_object1.addMover(NULL); setDelay(2); + break; } case 20: _globals->_scenePalette.loadPalette(16); diff --git a/engines/tsage/scenes.h b/engines/tsage/scenes.h index a5aacbacfa..b3c009c4fe 100644 --- a/engines/tsage/scenes.h +++ b/engines/tsage/scenes.h @@ -129,6 +129,7 @@ public: virtual void quitGame() {} virtual void endGame(int resNum, int lineNum) {} virtual Scene *createScene(int sceneNumber) = 0; + virtual void processEvent(Event &event) {} }; } // End of namespace tSage diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp index 6c2d92497e..9f36268ce3 100644 --- a/engines/tsage/staticres.cpp +++ b/engines/tsage/staticres.cpp @@ -112,6 +112,10 @@ const char *SCENE6100_VERY_WELL = "Very well. I will retrieve the stasis box and Wait for it's return in the lander bay."; const char *DEMO_HELP_MSG = " Help...\rF2 - Sound Options\rF3 - Exit demo\r\rPress ENTER\rto continue"; -const char *DEMO_PAUSED_MSG = " demo is paused"; +const char *DEMO_PAUSED_MSG = "Ringworld\x14 demo is paused"; +const char *DEMO_EXIT_MSG = "Press ENTER to resume the Ringworld\x14 demo. Press ESC to exit"; +const char *EXIT_BTN_STRING = "Exit"; +const char *DEMO_BTN_STRING = "Demo"; +const char *DEMO_RESUME_BTN_STRING = "Resume"; } // End of namespace tSage diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h index bed9e0dce0..fa93511779 100644 --- a/engines/tsage/staticres.h +++ b/engines/tsage/staticres.h @@ -79,6 +79,12 @@ extern const char *SCENE6100_VERY_WELL; // Demo messages extern const char *DEMO_HELP_MSG; extern const char *DEMO_PAUSED_MSG; +extern const char *DEMO_HELP_MSG; +extern const char *DEMO_PAUSED_MSG; +extern const char *DEMO_EXIT_MSG; +extern const char *EXIT_BTN_STRING; +extern const char *DEMO_BTN_STRING; +extern const char *DEMO_RESUME_BTN_STRING; } // End of namespace tSage |