aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorathrxx2011-05-16 18:05:00 +0200
committerathrxx2011-05-16 18:05:00 +0200
commit01c527749295c838b2079f9c95fbab7fb18edc56 (patch)
treea125bc44838f5bf83f309dfd9abe69a91cb1112a /engines/tsage
parent5fd257d3cccdb2800493237665eb1106f44fabab (diff)
parent88319a727a5adc4888ec17e5ee091e14ce176afd (diff)
downloadscummvm-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.cpp47
-rw-r--r--engines/tsage/detection.cpp2
-rw-r--r--engines/tsage/events.cpp7
-rw-r--r--engines/tsage/graphics.cpp27
-rw-r--r--engines/tsage/ringworld_demo.cpp62
-rw-r--r--engines/tsage/ringworld_demo.h4
-rw-r--r--engines/tsage/ringworld_logic.cpp48
-rw-r--r--engines/tsage/ringworld_logic.h1
-rw-r--r--engines/tsage/ringworld_scenes2.cpp3
-rw-r--r--engines/tsage/scenes.h1
-rw-r--r--engines/tsage/staticres.cpp6
-rw-r--r--engines/tsage/staticres.h6
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