aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-11-10 20:58:28 +1100
committerPaul Gilbert2011-11-10 20:58:28 +1100
commit8eeb8f2814f946730323001462e4fcc8b9c7a652 (patch)
tree6e0c35739bceb401d0b03fe4daad9321da206d5e
parent9c9ffc45d71609d7d6396b20ee04c15ac167dd56 (diff)
downloadscummvm-rg350-8eeb8f2814f946730323001462e4fcc8b9c7a652.tar.gz
scummvm-rg350-8eeb8f2814f946730323001462e4fcc8b9c7a652.tar.bz2
scummvm-rg350-8eeb8f2814f946730323001462e4fcc8b9c7a652.zip
TSAGE: Implemented R2R help dialog
-rw-r--r--engines/tsage/ringworld2/ringworld2_dialogs.cpp97
-rw-r--r--engines/tsage/ringworld2/ringworld2_dialogs.h13
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.cpp7
-rw-r--r--engines/tsage/staticres.cpp17
-rw-r--r--engines/tsage/staticres.h17
5 files changed, 150 insertions, 1 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_dialogs.cpp b/engines/tsage/ringworld2/ringworld2_dialogs.cpp
index 553a10a5a6..4cb023d672 100644
--- a/engines/tsage/ringworld2/ringworld2_dialogs.cpp
+++ b/engines/tsage/ringworld2/ringworld2_dialogs.cpp
@@ -341,6 +341,103 @@ CharacterDialog::CharacterDialog() {
setCenter(160, 100);
}
+/*--------------------------------------------------------------------------*/
+
+void HelpDialog::show() {
+ HelpDialog *dlg = new HelpDialog();
+ dlg->draw();
+
+ // Show the character selection dialog
+ GfxButton *btn = dlg->execute(&dlg->_btnResume);
+
+ // If a function button was selected, take care of it
+ Event evt;
+ evt.eventType = EVENT_KEYPRESS;
+ evt.kbd.keycode = Common::KEYCODE_INVALID;
+ if (btn == &dlg->_btnList[0]) {
+ evt.kbd.keycode = Common::KEYCODE_F2;
+ } else if (btn == &dlg->_btnList[1]) {
+ evt.kbd.keycode = Common::KEYCODE_F3;
+ } else if (btn == &dlg->_btnList[2]) {
+ evt.kbd.keycode = Common::KEYCODE_F4;
+ } else if (btn == &dlg->_btnList[3]) {
+ evt.kbd.keycode = Common::KEYCODE_F5;
+ } else if (btn == &dlg->_btnList[4]) {
+ evt.kbd.keycode = Common::KEYCODE_F7;
+ } else if (btn == &dlg->_btnList[5]) {
+ evt.kbd.keycode = Common::KEYCODE_F8;
+ } else if (btn == &dlg->_btnList[6]) {
+ evt.kbd.keycode = Common::KEYCODE_F10;
+ }
+
+ // Remove the dialog
+ dlg->remove();
+ delete dlg;
+
+ // If a action button was selected, dispatch to handle it
+ if (evt.kbd.keycode != Common::KEYCODE_INVALID)
+ R2_GLOBALS._game->processEvent(evt);
+}
+
+HelpDialog::HelpDialog() {
+ // Set the title and game version
+ _msgTitle.set(HELP_MSG, 172, ALIGN_CENTER);
+ _msgTitle._bounds.moveTo(5, 0);
+ _msgVersion.set(GAME_VERSION, 172, ALIGN_CENTER);
+ _msgVersion._bounds.moveTo(5, _msgTitle._bounds.bottom + 3);
+ addElements(&_msgTitle, &_msgVersion, NULL);
+
+ // Set buttons
+ _btnList[0].setText(F2);
+ _btnList[0]._bounds.moveTo(5, _msgVersion._bounds.bottom + 2);
+ _btnDescription[0].set(SOUND_OPTIONS, 140, ALIGN_LEFT);
+ _btnDescription[0]._bounds.moveTo(_btnList[0]._bounds.right + 2, _btnList[0]._bounds.top + 4);
+
+ _btnList[1].setText(F3);
+ _btnList[1]._bounds.moveTo(5, _btnList[0]._bounds.bottom);
+ _btnDescription[1].set(QUIT_GAME, 140, ALIGN_LEFT);
+ _btnDescription[1]._bounds.moveTo(_btnList[1]._bounds.right + 2, _btnList[1]._bounds.top + 4);
+
+ _btnList[2].setText(F4);
+ _btnList[2]._bounds.moveTo(5, _btnList[1]._bounds.bottom);
+ _btnDescription[2].set(RESTART_GAME, 140, ALIGN_LEFT);
+ _btnDescription[2]._bounds.moveTo(_btnList[2]._bounds.right + 2, _btnList[2]._bounds.top + 4);
+
+ _btnList[3].setText(F5);
+ _btnList[3]._bounds.moveTo(5, _btnList[2]._bounds.bottom);
+ _btnDescription[3].set(SAVE_GAME, 140, ALIGN_LEFT);
+ _btnDescription[3]._bounds.moveTo(_btnList[3]._bounds.right + 2, _btnList[3]._bounds.top + 4);
+
+ _btnList[4].setText(F7);
+ _btnList[4]._bounds.moveTo(5, _btnList[3]._bounds.bottom);
+ _btnDescription[4].set(RESTORE_GAME, 140, ALIGN_LEFT);
+ _btnDescription[4]._bounds.moveTo(_btnList[4]._bounds.right + 2, _btnList[4]._bounds.top + 4);
+
+ _btnList[5].setText(F8);
+ _btnList[5]._bounds.moveTo(5, _btnList[4]._bounds.bottom);
+ _btnDescription[5].set(SHOW_CREDITS, 140, ALIGN_LEFT);
+ _btnDescription[5]._bounds.moveTo(_btnList[5]._bounds.right + 2, _btnList[5]._bounds.top + 4);
+
+ _btnList[6].setText(F10);
+ _btnList[6]._bounds.moveTo(5, _btnList[5]._bounds.bottom);
+ _btnDescription[6].set(PAUSE_GAME, 140, ALIGN_LEFT);
+ _btnDescription[6]._bounds.moveTo(_btnList[6]._bounds.right + 2, _btnList[6]._bounds.top + 4);
+
+ for (int i = 0; i < 7; ++i) {
+ addElements(&_btnList[i], &_btnDescription[i], NULL);
+ }
+
+ // Add 'Resume' button
+ _btnResume.setText(RESUME_PLAY);
+ _btnResume._bounds.moveTo(5, _btnList[6]._bounds.bottom + 2);
+ addElements(&_btnResume, NULL);
+
+ // Set the dialog size and position
+ frame();
+ _bounds.collapse(-6, -6);
+ setCenter(160, 100);
+}
+
} // End of namespace Ringworld2
} // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_dialogs.h b/engines/tsage/ringworld2/ringworld2_dialogs.h
index 89e50545bf..02a1aed81c 100644
--- a/engines/tsage/ringworld2/ringworld2_dialogs.h
+++ b/engines/tsage/ringworld2/ringworld2_dialogs.h
@@ -71,6 +71,19 @@ public:
static void show();
};
+class HelpDialog: public GfxDialog {
+private:
+ GfxMessage _msgTitle, _msgVersion;
+ GfxButton _btnList[7];
+ GfxMessage _btnDescription[7];
+ GfxButton _btnResume;
+public:
+ HelpDialog();
+ virtual ~HelpDialog() {}
+
+ static void show();
+};
+
} // End of namespace Ringworld2
} // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 94aa8c583e..fa8d0be1af 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -659,7 +659,7 @@ void Ringworld2Game::processEvent(Event &event) {
switch (event.kbd.keycode) {
case Common::KEYCODE_F1:
// F1 - Help
-// MessageDialog::show(HELP_MSG, OK_BTN_STRING);
+ HelpDialog::show();
break;
case Common::KEYCODE_F2:
@@ -685,6 +685,11 @@ void Ringworld2Game::processEvent(Event &event) {
g_globals->_events.setCursorFromFlag();
break;
+ case Common::KEYCODE_F8:
+ // F8 - Credits
+ warning("TODO: Show Credits");
+ break;
+
case Common::KEYCODE_F10:
// F10 - Pause
GfxDialog::setPalette();
diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp
index 84b76ad47f..238e7b3049 100644
--- a/engines/tsage/staticres.cpp
+++ b/engines/tsage/staticres.cpp
@@ -199,6 +199,23 @@ const char *CHAR_SEEKER_MSG = " Seeker ";
const char *CHAR_MIRANDA_MSG = "Miranda";
const char *CHAR_CANCEL_MSG = " Cancel ";
+const char *GAME_VERSION = "ScummVM Version";
+const char *SOUND_OPTIONS = "Sound options";
+const char *QUIT_GAME = "Quit";
+const char *RESTART_GAME = "Restart";
+const char *SAVE_GAME = "Save game";
+const char *RESTORE_GAME = "Restore game";
+const char *SHOW_CREDITS = "Show credits";
+const char *PAUSE_GAME = "Pause game";
+const char *RESUME_PLAY = " Resume play ";
+const char *F2 = "F2";
+const char *F3 = "F3";
+const char *F4 = "F4";
+const char *F5 = "F5";
+const char *F7 = "F7";
+const char *F8 = "F8";
+const char *F10 = "F10";
+
} // End of namespace Ringworld2
} // End of namespace TsAGE
diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h
index 2fd97d198c..faff3f4103 100644
--- a/engines/tsage/staticres.h
+++ b/engines/tsage/staticres.h
@@ -157,6 +157,23 @@ extern const char *CHAR_SEEKER_MSG;
extern const char *CHAR_MIRANDA_MSG;
extern const char *CHAR_CANCEL_MSG;
+extern const char *GAME_VERSION;
+extern const char *SOUND_OPTIONS;
+extern const char *QUIT_GAME;
+extern const char *RESTART_GAME;
+extern const char *SAVE_GAME;
+extern const char *RESTORE_GAME;
+extern const char *SHOW_CREDITS;
+extern const char *PAUSE_GAME;
+extern const char *RESUME_PLAY;
+extern const char *F2;
+extern const char *F3;
+extern const char *F4;
+extern const char *F5;
+extern const char *F7;
+extern const char *F8;
+extern const char *F10;
+
} // End of namespace Ringworld2
} // End of namespace TsAGE