[Scummvm-cvs-logs] CVS: scummvm/saga scene.cpp,1.93,1.94 scene.h,1.47,1.48

Andrew Kurushin h00ligan at users.sourceforge.net
Tue Mar 29 14:15:14 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21067

Modified Files:
	scene.cpp scene.h 
Log Message:
fixed script params (some fair animals should walk now)

Index: scene.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.cpp,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -d -r1.93 -r1.94
--- scene.cpp	29 Mar 2005 17:54:52 -0000	1.93
+++ scene.cpp	29 Mar 2005 22:14:20 -0000	1.94
@@ -302,7 +302,7 @@
 	}
 
 	endScene();
-	loadScene(sceneNumber, BY_SCENE, SC_defaultScene, NULL, fadeIn, actorsEntrance);
+	loadScene(sceneNumber, BY_SCENE, NULL, NULL, fadeIn, actorsEntrance);
 
 	return SUCCESS;
 }
@@ -645,7 +645,7 @@
 		event.param2 = _desc.startScriptEntrypointNumber;
 		event.param3 = 0;		// Action
 		event.param4 = _sceneNumber;	// Object
-		event.param5 = 0;		// With Object - TODO: should be 'entrance'
+		event.param5 = actorsEntrance;	// With Object
 		event.param6 = 0;		// Actor
 
 		q_event = _vm->_events->chain(q_event, &event);
@@ -663,15 +663,89 @@
 		q_event = _vm->_events->chain(q_event, &event);
 	}
 
+	getInfo(&scene_info);
+
 	if (scene_proc == NULL) {
-		_sceneProc = SC_defaultScene;
+		if (!_inGame) {
+			_inGame = true;
+			_vm->_interface->setMode(kPanelInventory);
+		}
+
+		_vm->_sound->stopVoice();
+		_vm->_sound->stopSound();
+
+		if (_desc.musicRN >= 0) {
+			event.type = ONESHOT_EVENT;
+			event.code = MUSIC_EVENT;
+			event.param = _desc.musicRN;
+			event.param2 = MUSIC_DEFAULT;
+			event.op = EVENT_PLAY;
+			event.time = 0;
+
+			_vm->_events->queue(&event);
+		} else {
+			event.type = ONESHOT_EVENT;
+			event.code = MUSIC_EVENT;
+			event.op = EVENT_STOP;
+			event.time = 0;
+
+			_vm->_events->queue(&event);
+		}
+
+		// Set scene background
+		event.type = ONESHOT_EVENT;
+		event.code = BG_EVENT;
+		event.op = EVENT_DISPLAY;
+		event.param = SET_PALETTE;
+		event.time = 0;
+
+		_vm->_events->queue(&event);
+
+		// Activate user interface
+		event.type = ONESHOT_EVENT;
+		event.code = INTERFACE_EVENT;
+		event.op = EVENT_ACTIVATE;
+		event.time = 0;
+
+		_vm->_events->queue(&event);
+
+		// Begin palette cycle animation if present
+		event.type = ONESHOT_EVENT;
+		event.code = PALANIM_EVENT;
+		event.op = EVENT_CYCLESTART;
+		event.time = 0;
+
+		q_event = _vm->_events->queue(&event);
+
+		// Show cursor
+		event.type = ONESHOT_EVENT;
+		event.code = CURSOR_EVENT;
+		event.op = EVENT_SHOW;
+		_vm->_events->chain(q_event, &event);
+
+		// Start the scene main script
+		if (_desc.sceneScriptEntrypointNumber > 0) {
+			event.type = ONESHOT_EVENT;
+			event.code = SCRIPT_EVENT;
+			event.op = EVENT_EXEC_NONBLOCKING;
+			event.time = 0;
+			event.param = _desc.scriptModuleNumber;
+			event.param2 = _desc.sceneScriptEntrypointNumber;
+			event.param3 = kVerbEnter;		// Action
+			event.param4 = _sceneNumber;	// Object
+			event.param5 = actorsEntrance;		// With Object
+			event.param6 = 0;		// Actor
+
+			_vm->_events->queue(&event);
+		}
+
+		debug(0, "Scene started");
+
 	} else {
-		_sceneProc = scene_proc;
+		scene_proc(SCENE_BEGIN, &scene_info, this);
 	}
 
-	getInfo(&scene_info);
 
-	_sceneProc(SCENE_BEGIN, &scene_info, this);
 
 	// We probably don't want "followers" to go into scene -1. At the very
 	// least we don't want garbage to be drawn that early in the ITE intro.
@@ -930,9 +1004,11 @@
 
 	debug(0, "Ending scene...");
 
-	getInfo(&scene_info);
+	if (_sceneProc != NULL) {
+		getInfo(&scene_info);
 
-	_sceneProc(SCENE_END, &scene_info, this);
+		_sceneProc(SCENE_END, &scene_info, this);
+	}
 
 	//
 	_vm->_script->abortAllThreads();
@@ -1014,9 +1090,6 @@
 	_vm->_console->DebugPrintf(fmt, "Music R#", _desc.musicRN);
 }
 
-int Scene::SC_defaultScene(int param, SCENE_INFO *scene_info, void *refCon) {
-	return ((Scene *)refCon)->defaultScene(param, scene_info);
-}
 
 void Scene::cmdActionMapInfo() {
 	_actionMap->cmdInfo();
@@ -1026,96 +1099,6 @@
 	_objectMap->cmdInfo();
 }
 
-int Scene::defaultScene(int param, SCENE_INFO *scene_info) {
-	EVENT event;
-	EVENT *q_event;
-
-	if (!_inGame) {
-		_inGame = true;
-		_vm->_interface->setMode(kPanelInventory);
-	}
-
-	switch (param) {
-	case SCENE_BEGIN:
-		_vm->_sound->stopVoice();
-		_vm->_sound->stopSound();
-
-		if (_desc.musicRN >= 0) {
-			event.type = ONESHOT_EVENT;
-			event.code = MUSIC_EVENT;
-			event.param = _desc.musicRN;
-			event.param2 = MUSIC_DEFAULT;
-			event.op = EVENT_PLAY;
-			event.time = 0;
-
-			_vm->_events->queue(&event);
-		} else {
-			event.type = ONESHOT_EVENT;
-			event.code = MUSIC_EVENT;
-			event.op = EVENT_STOP;
-			event.time = 0;
-
-			_vm->_events->queue(&event);
-		}
-
-		// Set scene background
-		event.type = ONESHOT_EVENT;
-		event.code = BG_EVENT;
-		event.op = EVENT_DISPLAY;
-		event.param = SET_PALETTE;
-		event.time = 0;
-
-		_vm->_events->queue(&event);
-
-		// Activate user interface
-		event.type = ONESHOT_EVENT;
-		event.code = INTERFACE_EVENT;
-		event.op = EVENT_ACTIVATE;
-		event.time = 0;
-
-		_vm->_events->queue(&event);
-
-		// Begin palette cycle animation if present
-		event.type = ONESHOT_EVENT;
-		event.code = PALANIM_EVENT;
-		event.op = EVENT_CYCLESTART;
-		event.time = 0;
-
-		q_event = _vm->_events->queue(&event);
-		
-		// Show cursor
-		event.type = ONESHOT_EVENT;
-		event.code = CURSOR_EVENT;
-		event.op = EVENT_SHOW;
-		_vm->_events->chain(q_event, &event);
-
-		// Start the scene main script
-		if (_desc.sceneScriptEntrypointNumber > 0) {
-			event.type = ONESHOT_EVENT;
-			event.code = SCRIPT_EVENT;
-			event.op = EVENT_EXEC_NONBLOCKING;
-			event.time = 0;
-			event.param = _desc.scriptModuleNumber;
-			event.param2 = _desc.sceneScriptEntrypointNumber;
-			event.param3 = 0;		// Action
-			event.param4 = _sceneNumber;	// Object
-			event.param5 = 0;		// With Object - TODO: should be 'entrance'
-			event.param6 = 0;		// Actor - TODO: should be VERB_ENTER
-
-			_vm->_events->queue(&event);
-		}
-
-		debug(0, "Scene started");
-		break;
-	case SCENE_END:
-		break;
-	default:
-		warning("Scene::defaultScene(): Illegal scene procedure parameter");
-		break;
-	}
-
-	return 0;
-}
 
 void Scene::loadSceneEntryList(const byte* resourcePointer, size_t resourceLength) {	
 	int i;

Index: scene.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.h,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- scene.h	18 Mar 2005 17:11:36 -0000	1.47
+++ scene.h	29 Mar 2005 22:14:20 -0000	1.48
@@ -296,8 +296,6 @@
 	
 	int _sceneDoors[SCENE_DOORS_MAX];
 
-	static int SC_defaultScene(int param, SCENE_INFO *scene_info, void *refCon);
-	int defaultScene(int param, SCENE_INFO *scene_info);
 
  public:
 	ObjectMap *_actionMap;





More information about the Scummvm-git-logs mailing list