[Scummvm-cvs-logs] scummvm master -> 2f79090e46582bb41e036c19f06456a966436927

dreammaster dreammaster at scummvm.org
Mon May 16 13:10:42 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
2f79090e46 TSAGE: Added support for handling keypresses in the Game classes. Separated logic for full game versus demo into the res


Commit: 2f79090e46582bb41e036c19f06456a966436927
    https://github.com/scummvm/scummvm/commit/2f79090e46582bb41e036c19f06456a966436927
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-05-16T04:09:05-07:00

Commit Message:
TSAGE: Added support for handling keypresses in the Game classes. Separated logic for full game versus demo into the respective Game classes.

Changed paths:
    engines/tsage/core.cpp
    engines/tsage/ringworld_demo.cpp
    engines/tsage/ringworld_demo.h
    engines/tsage/ringworld_logic.cpp
    engines/tsage/ringworld_logic.h
    engines/tsage/scenes.h
    engines/tsage/staticres.cpp
    engines/tsage/staticres.h



diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 2f05365..7534abd 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/ringworld_demo.cpp b/engines/tsage/ringworld_demo.cpp
index 6213ec4..3ad414f 100644
--- a/engines/tsage/ringworld_demo.cpp
+++ b/engines/tsage/ringworld_demo.cpp
@@ -54,6 +54,53 @@ void RingworldDemoGame::quitGame() {
 		_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 34bfb4f..7492c1e 100644
--- a/engines/tsage/ringworld_demo.h
+++ b/engines/tsage/ringworld_demo.h
@@ -32,10 +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 a03c408..2141fcc 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 6fa92fa..19b0f10 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/scenes.h b/engines/tsage/scenes.h
index a5aacba..b3c009c 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 851d168..9f36268 100644
--- a/engines/tsage/staticres.cpp
+++ b/engines/tsage/staticres.cpp
@@ -112,9 +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 d60e11a..fa93511 100644
--- a/engines/tsage/staticres.h
+++ b/engines/tsage/staticres.h
@@ -84,6 +84,7 @@ 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
 






More information about the Scummvm-git-logs mailing list