[Scummvm-cvs-logs] SF.net SVN: scummvm: [28953] scummvm/trunk/engines/saga

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Sep 19 01:15:48 CEST 2007


Revision: 28953
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28953&view=rev
Author:   thebluegr
Date:     2007-09-18 16:15:48 -0700 (Tue, 18 Sep 2007)

Log Message:
-----------
Fixed some glitches which occured when closing the psychic profile in IHNM

Modified Paths:
--------------
    scummvm/trunk/engines/saga/events.cpp
    scummvm/trunk/engines/saga/events.h
    scummvm/trunk/engines/saga/scene.cpp

Modified: scummvm/trunk/engines/saga/events.cpp
===================================================================
--- scummvm/trunk/engines/saga/events.cpp	2007-09-18 23:07:27 UTC (rev 28952)
+++ scummvm/trunk/engines/saga/events.cpp	2007-09-18 23:15:48 UTC (rev 28953)
@@ -474,6 +474,9 @@
 		case kEventRestoreMode:
 			_vm->_interface->restoreMode();
 			break;
+		case kEventSetMode:
+			_vm->_interface->setMode(event->param);
+			break;
 		default:
 			break;
 		}

Modified: scummvm/trunk/engines/saga/events.h
===================================================================
--- scummvm/trunk/engines/saga/events.h	2007-09-18 23:07:27 UTC (rev 28952)
+++ scummvm/trunk/engines/saga/events.h	2007-09-18 23:15:48 UTC (rev 28953)
@@ -93,6 +93,7 @@
 	kEventClearStatus = 4,
 	kEventSetFadeMode = 5,
 	kEventRestoreMode = 6,
+	kEventSetMode = 7,
 	// ACTOR events
 	kEventMove = 1,
 	// SCRIPT events

Modified: scummvm/trunk/engines/saga/scene.cpp
===================================================================
--- scummvm/trunk/engines/saga/scene.cpp	2007-09-18 23:07:27 UTC (rev 28952)
+++ scummvm/trunk/engines/saga/scene.cpp	2007-09-18 23:15:48 UTC (rev 28953)
@@ -1310,7 +1310,6 @@
 
 void Scene::clearPlacard() {
 	static PalEntry cur_pal[PAL_ENTRIES];
-	PalEntry *pal;
 	Event event;
 	Event *q_event;
 
@@ -1335,11 +1334,15 @@
 	event.duration = 0;
 	q_event = _vm->_events->chain(q_event, &event);
 
-	event.type = kEvTOneshot;
-	event.code = kTextEvent;
-	event.op = kEventRemove;
-	event.data = _vm->_script->getPlacardTextEntry();
-	q_event = _vm->_events->chain(q_event, &event);
+	if (_vm->getGameType() == GType_ITE) {
+		event.type = kEvTOneshot;
+		event.code = kTextEvent;
+		event.op = kEventRemove;
+		event.data = _vm->_script->getPlacardTextEntry();
+		q_event = _vm->_events->chain(q_event, &event);
+	} else {
+		_vm->_scene->_textList.clear();
+	}
 
 	event.type = kEvTImmediate;
 	event.code = kInterfaceEvent;
@@ -1348,16 +1351,53 @@
 	event.duration = 0;
 	q_event = _vm->_events->chain(q_event, &event);
 
-	_vm->_scene->getBGPal(pal);
+	if (_vm->getGameType() == GType_IHNM) {
+		// set mode to main
+		event.type = kEvTImmediate;
+		event.code = kInterfaceEvent;
+		event.op = kEventSetMode;
+		event.param = kPanelMain;
+		event.time = 0;
+		event.duration = 0;
+		q_event = _vm->_events->chain(q_event, &event);
+	}
 
+	// Display scene background, but stay with black palette
 	event.type = kEvTImmediate;
+	event.code = kBgEvent;
+	event.op = kEventDisplay;
+	event.param = kEvPNoSetPalette;
+	event.time = 0;
+	event.duration = 0;
+	q_event = _vm->_events->chain(q_event, &event);
+
+	// set fade mode
+	event.type = kEvTImmediate;
+	event.code = kInterfaceEvent;
+	event.op = kEventSetFadeMode;
+	event.param = kFadeIn;
+	event.time = 0;
+	event.duration = 0;
+	q_event = _vm->_events->chain(q_event, &event);
+
+	// Fade in from black to the scene background palette
+	event.type = kEvTImmediate;
 	event.code = kPalEvent;
 	event.op = kEventBlackToPal;
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
-	event.data = pal;
+	event.data = _bg.pal;
 	q_event = _vm->_events->chain(q_event, &event);
 
+	// set fade mode
+	event.type = kEvTImmediate;
+	event.code = kInterfaceEvent;
+	event.op = kEventSetFadeMode;
+	event.param = kNoFade;
+	event.time = 0;
+	event.duration = 0;
+	q_event = _vm->_events->chain(q_event, &event);
+
 	event.type = kEvTOneshot;
 	event.code = kCursorEvent;
 	event.op = kEventShow;
@@ -1464,12 +1504,8 @@
 
 void Scene::clearPsychicProfile() {
 	if (_vm->_interface->getMode() == kPanelPlacard || _vm->getGameId() == GID_IHNM_DEMO) {
-		_vm->_interface->restoreMode();
+		_vm->_render->setFlag(RF_DISABLE_ACTORS);
 		_vm->_scene->clearPlacard();
-		_vm->_scene->_textList.clear();
-		_vm->_render->setFlag(RF_DISABLE_ACTORS);
-		_vm->_gfx->restorePalette();
-		_vm->_scene->restoreScene();
 		_vm->_interface->activate();
 	}
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list