[Scummvm-cvs-logs] scummvm master -> fd2cbccecbd17114539ff3a032472729c704f1de

Strangerke Strangerke at scummvm.org
Sun Jan 5 11:00:13 CET 2014


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:
fd2cbccecb TSAGE: R2R - Implement alternate scene 205 used by the demo


Commit: fd2cbccecbd17114539ff3a032472729c704f1de
    https://github.com/scummvm/scummvm/commit/fd2cbccecbd17114539ff3a032472729c704f1de
Author: Strangerke (strangerke at scummvm.org)
Date: 2014-01-05T01:59:04-08:00

Commit Message:
TSAGE: R2R - Implement alternate scene 205 used by the demo

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_scenes0.cpp
    engines/tsage/ringworld2/ringworld2_scenes0.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 92585eb..ef212bc 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -65,8 +65,12 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		// Deck #2 - By Lift
 		return new Scene200();
 	case 205:
-		// Star-field Credits
-		return new Scene205();
+		if (g_vm->getFeatures() & GF_DEMO)
+			// End of Demo
+			return new Scene205Demo();
+		else
+			// Star-field Credits
+			return new Scene205();
 	case 250:
 		// Lift
 		return new Scene250();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
index 3a72462..6c9138f 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
@@ -2519,6 +2519,77 @@ void Scene205::handleText() {
 }
 
 /*--------------------------------------------------------------------------
+ * Scene 205 Demo - End of Demo
+ *
+ *--------------------------------------------------------------------------*/
+
+void Scene205Demo::Action1::signal() {
+	Scene205Demo *scene = (Scene205Demo *)R2_GLOBALS._sceneManager._scene;
+
+	switch (_actionIndex++) {
+	case 0:
+		setDelay(2);
+		break;
+
+	case 1: {
+		Common::String mask = g_resourceManager->getMessage(206, 0, true);
+//		Common::String msg = sprintf(mask.c_str(), "1-800-482-3766");
+		MessageDialog::show2(mask, OK_BTN_STRING);
+		setDelay(1);
+		}
+		break;
+
+	case 2:
+		scene->leaveScene();
+		break;
+	default:
+		break;
+	}
+}
+
+/*--------------------------------------------------------------------------*/
+
+void Scene205Demo::leaveScene() {
+	if (g_globals->getFlag(85))
+		R2_GLOBALS._sceneManager.changeScene(160);
+	else
+		R2_GLOBALS._sceneManager.changeScene(R2_GLOBALS._sceneManager._previousScene);
+
+	BF_GLOBALS._scenePalette.loadPalette(0);
+	BF_GLOBALS._scenePalette.refresh();
+}
+
+void Scene205Demo::postInit(SceneObjectList *OwnerList) {
+	R2_GLOBALS._sceneManager._hasPalette = true;
+	R2_GLOBALS._scenePalette.loadPalette(0);
+
+	loadScene(1000);
+	R2_GLOBALS._uiElements._active = false;
+	R2_GLOBALS._player.enableControl();
+	
+	SceneExt::postInit();
+
+	_sound1.play(337);
+	_stripManager.addSpeaker(&_animationPlayer);
+
+	setAction(&_action1);
+}
+
+void Scene205Demo::remove() {
+	R2_GLOBALS._sound1.fadeOut2(NULL);
+	SceneExt::remove();
+}
+
+void Scene205Demo::process(Event &event) {
+	if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+		event.handled = true;
+		leaveScene();
+	} else {
+		Scene::process(event);
+	}
+}
+
+/*--------------------------------------------------------------------------
  * Scene 250 - Lift
  *
  *--------------------------------------------------------------------------*/
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.h b/engines/tsage/ringworld2/ringworld2_scenes0.h
index 0e68b67..216039a 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.h
@@ -304,6 +304,24 @@ public:
 	virtual void dispatch();
 };
 
+class Scene205Demo: public SceneExt {
+	/* Actions */
+	class Action1: public Action {
+	public:
+		virtual void signal();
+	};
+private:
+	void leaveScene();
+public:
+	VisualSpeaker _animationPlayer;
+	ASound _sound1;
+	Action1 _action1;
+public:
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void remove();
+	virtual void process(Event &event);
+};
+
 class Scene250: public SceneExt {
 	class Button: public SceneActor {
 	public:






More information about the Scummvm-git-logs mailing list