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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Sat Sep 15 14:09:57 CEST 2007


Revision: 28904
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28904&view=rev
Author:   thebluegr
Date:     2007-09-15 05:09:56 -0700 (Sat, 15 Sep 2007)

Log Message:
-----------
Palette fade in when a cutaway starts in IHNM is working now. Also, the fade mode is properly set in all cases where palette fadeout is used. Some code formatting

Modified Paths:
--------------
    scummvm/trunk/engines/saga/actor.cpp
    scummvm/trunk/engines/saga/animation.cpp
    scummvm/trunk/engines/saga/animation.h
    scummvm/trunk/engines/saga/events.cpp
    scummvm/trunk/engines/saga/events.h
    scummvm/trunk/engines/saga/interface.cpp
    scummvm/trunk/engines/saga/ite_introproc.cpp
    scummvm/trunk/engines/saga/palanim.cpp
    scummvm/trunk/engines/saga/scene.cpp
    scummvm/trunk/engines/saga/script.cpp
    scummvm/trunk/engines/saga/sfuncs.cpp

Modified: scummvm/trunk/engines/saga/actor.cpp
===================================================================
--- scummvm/trunk/engines/saga/actor.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/actor.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -2415,8 +2415,8 @@
 				event.param4 = -1;		// Object
 				event.param5 = -1;		// With Object
 				event.param6 = -1;		// Actor
+				_vm->_events->queue(&event);
 
-				_vm->_events->queue(&event);
 				_dragonHunt = false;
 			}
 		} else {

Modified: scummvm/trunk/engines/saga/animation.cpp
===================================================================
--- scummvm/trunk/engines/saga/animation.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/animation.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -84,34 +84,38 @@
 	Event event;
 	Event *q_event = NULL;
 	bool startImmediately = false;
+	byte *resourceData;
+	size_t resourceDataLength;
+	ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE);
 
 	_cutAwayFade = fade;
 
 	_vm->_gfx->savePalette();
 	_vm->_gfx->getCurrentPal(saved_pal);
 
-	// TODO: Fade in and fade out at this point are problematic right now, caused
-	// by the fact that we're trying to mix events with direct calls:
-	// 1) The background of the animation is shown when _vm->decodeBGImage and
-	// bgSurface->blit are called below, before palette fadeout starts
-	// 2) Fade in to the animation is currently problematic (it fades in to white)
-	// We either have to use non-event calls to fade in/out the palette, or change
-	// the background display and animation parts to events
-	fade = false;	// remove this once palette fadein-fadeout works
-
 	if (fade) {
 		static PalEntry cur_pal[PAL_ENTRIES];
 
+		_vm->_interface->setFadeMode(kFadeOut);
+
+		// Fade to black out
 		_vm->_gfx->getCurrentPal(cur_pal);
-
 		event.type = kEvTImmediate;
 		event.code = kPalEvent;
 		event.op = kEventPalToBlack;
 		event.time = 0;
 		event.duration = kNormalFadeDuration;
 		event.data = cur_pal;
+		q_event = _vm->_events->queue(&event);
 
-		q_event = _vm->_events->queue(&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);
 	}
 
 	// Prepare cutaway
@@ -131,46 +135,19 @@
 	else
 		_vm->_interface->setMode(kPanelCutaway);
 
-	// Set the initial background and palette for the cutaway
-	ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE);
-
-	byte *resourceData;
-	size_t resourceDataLength;
-
-	_vm->_resource->loadResource(context, _cutawayList[cut].backgroundResourceId, resourceData, resourceDataLength);
-
-	byte *buf;
-	size_t buflen;
-	int width;
-	int height;
-
-	_vm->decodeBGImage(resourceData, resourceDataLength, &buf, &buflen, &width, &height);
-
-	const PalEntry *palette = (const PalEntry *)_vm->getImagePal(resourceData, resourceDataLength);
-
-	Surface *bgSurface = _vm->_render->getBackGroundSurface();
-	const Rect rect(width, height);
-
-	bgSurface->blit(rect, buf);
-	_vm->_frameCount++;
-
-	// Handle fade up, if we previously faded down
 	if (fade) {
+		// Set the initial background and palette for the cutaway
 		event.type = kEvTImmediate;
-		event.code = kPalEvent;
-		event.op = kEventBlackToPal;
+		event.code = kCutawayEvent;
+		event.op = kEventShowCutawayBg;
 		event.time = 0;
-		event.duration = kNormalFadeDuration;
-		event.data = (PalEntry *)palette;
-
+		event.duration = 0;
+		event.param = _cutawayList[cut].backgroundResourceId;
 		q_event = _vm->_events->chain(q_event, &event);
 	} else {
-		_vm->_gfx->setPalette(palette);
+		showCutawayBg(_cutawayList[cut].backgroundResourceId);
 	}
 
-	free(buf);
-	free(resourceData);
-
 	// Play the animation
 
 	int cutawaySlot = -1;
@@ -215,7 +192,10 @@
 		event.param = MAX_ANIMATIONS + cutawaySlot;
 		event.time = (40 / 3) * 1000 / _cutawayList[cut].frameRate;
 
-		_vm->_events->queue(&event);
+		if (fade)
+			q_event = _vm->_events->chain(q_event, &event);
+		else
+			_vm->_events->queue(&event);
 	}
 
 	return MAX_ANIMATIONS + cutawaySlot;
@@ -235,7 +215,6 @@
 
 	debug(0, "returnFromCutaway()");
 
-
 	if (_cutawayActive) {
 		Event event;
 		Event *q_event = NULL;
@@ -243,16 +222,26 @@
 		if (_cutAwayFade) {
 			static PalEntry cur_pal[PAL_ENTRIES];
 
+			_vm->_interface->setFadeMode(kFadeOut);
+
+			// Fade to black out
 			_vm->_gfx->getCurrentPal(cur_pal);
-
 			event.type = kEvTImmediate;
 			event.code = kPalEvent;
 			event.op = kEventPalToBlack;
 			event.time = 0;
 			event.duration = kNormalFadeDuration;
 			event.data = cur_pal;
+			q_event = _vm->_events->queue(&event);
 
-			q_event = _vm->_events->queue(&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);
 		}
 
 		// Clear the cutaway. Note that this sets _cutawayActive to false
@@ -275,7 +264,6 @@
 		event.op = kEventResumeAll;
 		event.time = 0;
 		event.duration = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);		// chain with the other events
 
 		// Draw the scene
@@ -284,7 +272,6 @@
 		event.op = kEventDraw;
 		event.time = 0;
 		event.duration = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);		// chain with the other events
 
 		// Handle fade up, if we previously faded down
@@ -295,16 +282,13 @@
 			event.time = 0;
 			event.duration = kNormalFadeDuration;
 			event.data = saved_pal;
-
 			q_event = _vm->_events->chain(q_event, &event);
-
 		}
 
 		event.type = kEvTOneshot;
 		event.code = kScriptEvent;
 		event.op = kEventThreadWake;
 		event.param = kWaitTypeWakeUp;
-
 		q_event = _vm->_events->chain(q_event, &event);
 	}
 }
@@ -336,6 +320,45 @@
 	}
 }
 
+void Anim::showCutawayBg(int bg) {
+	ResourceContext *context = _vm->_resource->getContext(GAME_RESOURCEFILE);
+
+	byte *resourceData;
+	size_t resourceDataLength;
+	byte *buf;
+	size_t buflen;
+	int width;
+	int height;
+	Event event;
+	static PalEntry pal[PAL_ENTRIES];
+
+	_vm->_resource->loadResource(context, bg, resourceData, resourceDataLength);
+	_vm->decodeBGImage(resourceData, resourceDataLength, &buf, &buflen, &width, &height);
+
+	const byte *palPointer = _vm->getImagePal(resourceData, resourceDataLength);
+	memcpy(pal, palPointer, sizeof(pal));
+	Surface *bgSurface = _vm->_render->getBackGroundSurface();
+	const Rect rect(width, height);
+	bgSurface->blit(rect, buf);
+	_vm->_frameCount++;
+
+	if (_cutAwayFade) {
+		// Handle fade up, if we previously faded down
+		event.type = kEvTImmediate;
+		event.code = kPalEvent;
+		event.op = kEventBlackToPal;
+		event.time = 0;
+		event.duration = kNormalFadeDuration;
+		event.data = pal;
+		_vm->_events->queue(&event);
+	} else {
+		_vm->_gfx->setPalette(pal);
+	}
+
+	free(buf);
+	free(resourceData);
+}
+
 void Anim::startVideo(int vid, bool fade) {
 	debug(0, "startVideo(%d, %d)", vid, fade);
 
@@ -470,7 +493,6 @@
 		event.op = kEventFrame;
 		event.param = animId;
 		event.time = 10;
-
 		_vm->_events->queue(&event);
 
 		// Nothing to render here (apart from the background, which is already rendered),
@@ -503,8 +525,8 @@
 		event.op = kEventFrame;
 		event.param = animId;
 		event.time = 0;
+		_vm->_events->queue(&event);
 
-		_vm->_events->queue(&event);
 		return;
 	}
 
@@ -568,7 +590,6 @@
 	event.op = kEventFrame;
 	event.param = animId;
 	event.time = frameTime;
-
 	_vm->_events->queue(&event);
 }
 

Modified: scummvm/trunk/engines/saga/animation.h
===================================================================
--- scummvm/trunk/engines/saga/animation.h	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/animation.h	2007-09-15 12:09:56 UTC (rev 28904)
@@ -119,6 +119,7 @@
 	void endCutaway(void);
 	void returnFromCutaway(void);
 	void clearCutaway(void);
+	void showCutawayBg(int bg);
 
 	void startVideo(int vid, bool fade);
 	void endVideo(void);

Modified: scummvm/trunk/engines/saga/events.cpp
===================================================================
--- scummvm/trunk/engines/saga/events.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/events.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -549,6 +549,9 @@
 		case kEventClear:
 			_vm->_anim->clearCutaway();
 			break;
+		case kEventShowCutawayBg:
+			_vm->_anim->showCutawayBg(event->param);
+			break;
 		default:
 			break;
 		}

Modified: scummvm/trunk/engines/saga/events.h
===================================================================
--- scummvm/trunk/engines/saga/events.h	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/events.h	2007-09-15 12:09:56 UTC (rev 28904)
@@ -117,7 +117,8 @@
 	kEventDissolve = 1,
 	kEventDissolveBGMask = 2,
 	// CUTAWAY events
-	kEventClear = 1
+	kEventClear = 1,
+	kEventShowCutawayBg = 2
 };
 
 enum EventParams {

Modified: scummvm/trunk/engines/saga/interface.cpp
===================================================================
--- scummvm/trunk/engines/saga/interface.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/interface.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -1527,7 +1527,6 @@
 			event.param4 = obj;	// Object
 			event.param5 = 0;	// With Object
 			event.param6 = obj;		// Actor
-
 			_vm->_events->queue(&event);
 		}
 	}

Modified: scummvm/trunk/engines/saga/ite_introproc.cpp
===================================================================
--- scummvm/trunk/engines/saga/ite_introproc.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/ite_introproc.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -115,7 +115,6 @@
 		event.op = kEventDisplay;
 		event.data = entry;
 		event.time = (i == 0) ? 0 : VOICE_PAD;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Play voice
@@ -124,7 +123,6 @@
 		event.op = kEventPlay;
 		event.param = dialogue[i].i_voice_rn;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		voice_len = _vm->_sndRes->getVoiceLength(dialogue[i].i_voice_rn);
@@ -138,7 +136,6 @@
 		event.op = kEventRemove;
 		event.data = entry;
 		event.time = voice_len;
-
 		q_event = _vm->_events->chain(q_event, &event);
 	}
 
@@ -265,7 +262,6 @@
 		event.op = kEventDisplay;
 		event.data = entry;
 		event.time = delta_time;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Remove text
@@ -274,7 +270,6 @@
 		event.op = kEventRemove;
 		event.data = entry;
 		event.time = duration;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		y += (_vm->_font->getHeight(font) + line_spacing);
@@ -301,7 +296,6 @@
 		event.op = kEventDisplay;
 		event.param = kEvPSetPalette;
 		event.time = 0;
-
 		q_event = _vm->_events->queue(&event);
 
 		debug(3, "Intro animation procedure started.");
@@ -340,7 +334,6 @@
 		event.op = kEventPlay;
 		event.param = 0;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Queue intro music playback
@@ -350,7 +343,6 @@
 		event.param2 = MUSIC_LOOP;
 		event.op = kEventPlay;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 		}
 		break;
@@ -427,7 +419,6 @@
 		event.code = kPalAnimEvent;
 		event.op = kEventCycleStart;
 		event.time = 0;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Queue narrator dialogue list
@@ -438,8 +429,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = VOICE_PAD;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -504,7 +495,6 @@
 		event.op = kEventDissolve;
 		event.time = 0;
 		event.duration = DISSOLVE_DURATION;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Begin palette cycling animation for candles
@@ -512,7 +502,6 @@
 		event.code = kPalAnimEvent;
 		event.op = kEventCycleStart;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Queue narrator dialogue list
@@ -523,8 +512,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = VOICE_PAD;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -588,7 +577,6 @@
 		event.op = kEventDissolve;
 		event.time = 0;
 		event.duration = DISSOLVE_DURATION;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Begin palette cycling animation for candles
@@ -596,7 +584,6 @@
 		event.code = kPalAnimEvent;
 		event.op = kEventCycleStart;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Queue narrator dialogue list
@@ -607,8 +594,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = VOICE_PAD;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -681,7 +668,6 @@
 		event.op = kEventDissolve;
 		event.time = 0;
 		event.duration = DISSOLVE_DURATION;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Begin palette cycling animation for candles
@@ -689,7 +675,6 @@
 		event.code = kPalAnimEvent;
 		event.op = kEventCycleStart;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Queue narrator dialogue list
@@ -700,8 +685,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = VOICE_PAD;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -747,7 +732,6 @@
 		event.op = kEventPlay;
 		event.param = 0;
 		event.time = 0;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Begin ITE title theme music
@@ -759,7 +743,6 @@
 		event.param2 = MUSIC_NORMAL;
 		event.op = kEventPlay;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Pause animation before logo
@@ -768,7 +751,6 @@
 		event.op = kEventStop;
 		event.param = 0;
 		event.time = 3000;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Display logo
@@ -777,7 +759,6 @@
 		event.op = kEventDissolveBGMask;
 		event.time = 0;
 		event.duration = LOGO_DISSOLVE_DURATION;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Remove logo
@@ -786,7 +767,6 @@
 		event.op = kEventDissolve;
 		event.time = 3000;
 		event.duration = LOGO_DISSOLVE_DURATION;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Unpause animation before logo
@@ -795,7 +775,6 @@
 		event.op = kEventPlay;
 		event.time = 0;
 		event.param = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Queue game credits list
@@ -806,8 +785,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = 1000;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -870,7 +849,6 @@
 		event.op = kEventDissolve;
 		event.time = 0;
 		event.duration = DISSOLVE_DURATION;
-
 		q_event = _vm->_events->queue(&event);
 
 		if (_vm->_anim->hasAnimation(0)) {
@@ -882,7 +860,6 @@
 			event.op = kEventPlay;
 			event.param = 0;
 			event.time = 0;
-
 			q_event = _vm->_events->chain(q_event, &event);
 		}
 
@@ -895,8 +872,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = 1000;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -950,7 +927,6 @@
 		event.op = kEventDissolve;
 		event.time = 0;
 		event.duration = DISSOLVE_DURATION;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Begin title screen background animation
@@ -961,7 +937,6 @@
 		event.op = kEventPlay;
 		event.param = 0;
 		event.time = 0;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// Queue game credits list
@@ -973,8 +948,8 @@
 		event.code = kSceneEvent;
 		event.op = kEventEnd;
 		event.time = 1000;
-
 		q_event = _vm->_events->chain(q_event, &event);
+
 		break;
 	case SCENE_END:
 		break;
@@ -1005,7 +980,6 @@
 		event.op = kEventDissolve;
 		event.time = 0;
 		event.duration = DISSOLVE_DURATION;
-
 		q_event_start = _vm->_events->queue(&event);
 
 		// End scene after momentary pause
@@ -1014,6 +988,7 @@
 		event.op = kEventEnd;
 		event.time = 5000;
 		q_event = _vm->_events->chain(q_event_start, &event);
+
 		break;
 	case SCENE_END:
 		break;

Modified: scummvm/trunk/engines/saga/palanim.cpp
===================================================================
--- scummvm/trunk/engines/saga/palanim.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/palanim.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -131,7 +131,6 @@
 	event.code = kPalAnimEvent;
 	event.op = kEventCycleStep;
 	event.time = PALANIM_CYCLETIME;
-
 	_vm->_events->queue(&event);
 
 	return SUCCESS;
@@ -178,7 +177,6 @@
 	event.code = kPalAnimEvent;
 	event.op = kEventCycleStep;
 	event.time = vectortime + PALANIM_CYCLETIME;
-
 	_vm->_events->queue(&event);
 
 	return SUCCESS;

Modified: scummvm/trunk/engines/saga/scene.cpp
===================================================================
--- scummvm/trunk/engines/saga/scene.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/scene.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -785,7 +785,6 @@
 		event.param4 = _sceneNumber;	// Object
 		event.param5 = loadSceneParams->actorsEntrance;	// With Object
 		event.param6 = 0;		// Actor
-
 		q_event = _vm->_events->chain(q_event, &event);
 	}
 
@@ -807,7 +806,6 @@
 		event.time = 0;
 		event.duration = kNormalFadeDuration;
 		event.data = _bg.pal;
-
 		q_event = _vm->_events->chain(q_event, &event);
 
 		// set fade mode
@@ -836,14 +834,12 @@
 				event.param2 = MUSIC_DEFAULT;
 				event.op = kEventPlay;
 				event.time = 0;
-
 				_vm->_events->queue(&event);
 			} else {
 				event.type = kEvTOneshot;
 				event.code = kMusicEvent;
 				event.op = kEventStop;
 				event.time = 0;
-
 				_vm->_events->queue(&event);
 			}
 		}
@@ -854,7 +850,6 @@
 		event.op = kEventDisplay;
 		event.param = kEvPSetPalette;
 		event.time = 0;
-
 		_vm->_events->queue(&event);
 
 		// Begin palette cycle animation if present
@@ -862,7 +857,6 @@
 		event.code = kPalAnimEvent;
 		event.op = kEventCycleStart;
 		event.time = 0;
-
 		q_event = _vm->_events->queue(&event);
 
 		// Start the scene main script
@@ -877,7 +871,6 @@
 			event.param4 = _sceneNumber;	// Object
 			event.param5 = loadSceneParams->actorsEntrance;		// With Object
 			event.param6 = 0;		// Actor
-
 			_vm->_events->queue(&event);
 		}
 
@@ -1326,22 +1319,31 @@
 	Event event;
 	Event *q_event;
 
+	_vm->_interface->setFadeMode(kFadeOut);
+
+	// Fade to black out
 	_vm->_gfx->getCurrentPal(cur_pal);
-
 	event.type = kEvTImmediate;
 	event.code = kPalEvent;
 	event.op = kEventPalToBlack;
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
 	event.data = cur_pal;
-
 	q_event = _vm->_events->queue(&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 = kTextEvent;
 	event.op = kEventRemove;
 	event.data = _vm->_script->getPlacardTextEntry();
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	event.type = kEvTImmediate;
@@ -1349,7 +1351,6 @@
 	event.op = kEventRestoreMode;
 	event.time = 0;
 	event.duration = 0;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	_vm->_scene->getBGPal(pal);
@@ -1360,20 +1361,17 @@
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
 	event.data = pal;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	event.type = kEvTOneshot;
 	event.code = kCursorEvent;
 	event.op = kEventShow;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	event.type = kEvTOneshot;
 	event.code = kScriptEvent;
 	event.op = kEventThreadWake;
 	event.param = kWaitTypePlacard;
-
 	q_event = _vm->_events->chain(q_event, &event);
 }
 
@@ -1395,30 +1393,37 @@
 	event.type = kEvTOneshot;
 	event.code = kCursorEvent;
 	event.op = kEventHide;
-
 	q_event = _vm->_events->queue(&event);
 
+	_vm->_interface->setFadeMode(kFadeOut);
+
+	// Fade to black out
 	_vm->_gfx->getCurrentPal(cur_pal);
-
 	event.type = kEvTImmediate;
 	event.code = kPalEvent;
 	event.op = kEventPalToBlack;
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
 	event.data = cur_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 = kInterfaceEvent;
 	event.op = kEventClearStatus;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	// Set the background and palette for the psychic profile
 	event.type = kEvTOneshot;
 	event.code = kPsychicProfileBgEvent;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	_vm->_scene->_textList.clear();
@@ -1442,7 +1447,6 @@
 		event.code = kTextEvent;
 		event.op = kEventDisplay;
 		event.data = _psychicProfileTextEntry;
-
 		q_event = _vm->_events->chain(q_event, &event);
 	}
 
@@ -1454,14 +1458,12 @@
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
 	event.data = pal;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	event.type = kEvTOneshot;
 	event.code = kScriptEvent;
 	event.op = kEventThreadWake;
 	event.param = kWaitTypePlacard;
-
 	q_event = _vm->_events->chain(q_event, &event);
 }
 

Modified: scummvm/trunk/engines/saga/script.cpp
===================================================================
--- scummvm/trunk/engines/saga/script.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/script.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -505,7 +505,6 @@
 		event.param4 = _pendingObject[0];	// Object
 		event.param5 = _pendingObject[1];	// With Object
 		event.param6 = (objectType == kGameObjectActor) ? _pendingObject[0] : ID_PROTAG;		// Actor
-
 		_vm->_events->queue(&event);
 
 	} else {

Modified: scummvm/trunk/engines/saga/sfuncs.cpp
===================================================================
--- scummvm/trunk/engines/saga/sfuncs.cpp	2007-09-15 03:08:58 UTC (rev 28903)
+++ scummvm/trunk/engines/saga/sfuncs.cpp	2007-09-15 12:09:56 UTC (rev 28904)
@@ -431,7 +431,6 @@
 	event.param4 = theObject;	// Object
 	event.param5 = withObject;	// With Object
 	event.param6 = objectId;
-
 	_vm->_events->queue(&event);
 }
 
@@ -1177,24 +1176,32 @@
 	event.type = kEvTOneshot;
 	event.code = kCursorEvent;
 	event.op = kEventHide;
-
 	q_event = _vm->_events->queue(&event);
 
-	_vm->_gfx->getCurrentPal(cur_pal);
+	_vm->_interface->setFadeMode(kFadeOut);
 
+	// Fade to black out
+	_vm->_gfx->getCurrentPal(cur_pal);
 	event.type = kEvTImmediate;
 	event.code = kPalEvent;
 	event.op = kEventPalToBlack;
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
 	event.data = cur_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 = kInterfaceEvent;
 	event.op = kEventClearStatus;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	event.type = kEvTOneshot;
@@ -1206,7 +1213,6 @@
 	event.param3 = _vm->_scene->getHeight();
 	event.param4 = 0;
 	event.param5 = _vm->getDisplayWidth();
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	// Put the text in the center of the viewport, assuming it will fit on
@@ -1231,25 +1237,21 @@
 	event.code = kTextEvent;
 	event.op = kEventDisplay;
 	event.data = _placardTextEntry;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	_vm->_scene->getBGPal(pal);
-
 	event.type = kEvTImmediate;
 	event.code = kPalEvent;
 	event.op = kEventBlackToPal;
 	event.time = 0;
 	event.duration = kNormalFadeDuration;
 	event.data = pal;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 	event.type = kEvTOneshot;
 	event.code = kScriptEvent;
 	event.op = kEventThreadWake;
 	event.param = kWaitTypePlacard;
-
 	q_event = _vm->_events->chain(q_event, &event);
 
 }
@@ -1738,7 +1740,6 @@
 	static PalEntry cur_pal[PAL_ENTRIES];
 
 	_vm->_gfx->getCurrentPal(cur_pal);
-
 	event.type = kEvTImmediate;
 	event.code = kPalEvent;
 	event.op = kEventPalFade;
@@ -1749,7 +1750,6 @@
 	event.param2 = endingBrightness;
 	event.param3 = firstPalEntry;
 	event.param4 = lastPalEntry - firstPalEntry + 1;
-
 	_vm->_events->queue(&event);
 }
 
@@ -1798,7 +1798,6 @@
 	event.code = kTextEvent;
 	event.op = kEventDisplay;
 	event.data = _psychicProfileTextEntry;
-
 	_vm->_events->queue(&event);
 
 	_ihnmDemoCurrentY += 10;
@@ -1932,7 +1931,6 @@
 												// change
 												// FIXME: If this is too short for other cases apart from chapter
 												// point change, set it back to 1000
-
 		_vm->_events->queue(&event);
 
 		if (!_vm->_scene->haveChapterPointsChanged()) {


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