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

bluegr bluegr at gmail.com
Sun Nov 11 22:34:42 CET 2012


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

Summary:
1b5e96f429 SAGA: Fix bug #3564919 - "SAGA: IHNM Spanish: Spiritual Barometer doesn't change"
faa7579241 SAGA: Add support for played time


Commit: 1b5e96f42903b0cf3a5456e85a09c2c01eef0538
    https://github.com/scummvm/scummvm/commit/1b5e96f42903b0cf3a5456e85a09c2c01eef0538
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-11-11T13:31:25-08:00

Commit Message:
SAGA: Fix bug #3564919 - "SAGA: IHNM Spanish: Spiritual Barometer doesn't change"

The Spanish version uses different colors for portrait
backgrounds. Also, portrait colors are now set correctly when
loading games directly from the launcher.

Changed paths:
    engines/saga/events.cpp
    engines/saga/saga.h
    engines/saga/sfuncs_ihnm.cpp



diff --git a/engines/saga/events.cpp b/engines/saga/events.cpp
index ec3ef2f..d98cef0 100644
--- a/engines/saga/events.cpp
+++ b/engines/saga/events.cpp
@@ -332,13 +332,22 @@ int Events::handleOneShot(Event *event) {
 
 #ifdef ENABLE_IHNM
 					if (_vm->getGameId() == GID_IHNM) {
+						PalEntry portraitBgColor = _vm->_interface->_portraitBgColor;
+						byte portraitColor = (_vm->getLanguage() == Common::ES_ESP) ? 253 : 254;
+
+						// Set the portrait bg color, in case a saved state is restored from the
+						// launcher. In this case, sfSetPortraitBgColor is not called, thus the
+						// portrait color will always be 0 (black).
+						if (portraitBgColor.red == 0 && portraitBgColor.green == 0 && portraitBgColor.blue == 0)
+							portraitBgColor.green = 255;
+
 						if (_vm->_spiritualBarometer > 255)
-							_vm->_gfx->setPaletteColor(kIHNMColorPortrait, 0xff, 0xff, 0xff);
+							_vm->_gfx->setPaletteColor(portraitColor, 0xff, 0xff, 0xff);
 						else
-							_vm->_gfx->setPaletteColor(kIHNMColorPortrait,
-								_vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.red / 256,
-								_vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.green / 256,
-								_vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.blue / 256);
+							_vm->_gfx->setPaletteColor(portraitColor,
+								_vm->_spiritualBarometer * portraitBgColor.red / 256,
+								_vm->_spiritualBarometer * portraitBgColor.green / 256,
+								_vm->_spiritualBarometer * portraitBgColor.blue / 256);
 					}
 #endif
 
diff --git a/engines/saga/saga.h b/engines/saga/saga.h
index 829425a..01cab21 100644
--- a/engines/saga/saga.h
+++ b/engines/saga/saga.h
@@ -395,9 +395,7 @@ enum ColorId {
 	kITEColorBlue = 0x93,
 	kITEColorLightBlue94 = 0x94,
 	kITEColorLightBlue96 = 0x96,
-	kITEColorGreen = 0xba,
-
-	kIHNMColorPortrait = 0xfe
+	kITEColorGreen = 0xba
 };
 
 enum KnownColor {
diff --git a/engines/saga/sfuncs_ihnm.cpp b/engines/saga/sfuncs_ihnm.cpp
index 3fbf3b6..fdfd0fd 100644
--- a/engines/saga/sfuncs_ihnm.cpp
+++ b/engines/saga/sfuncs_ihnm.cpp
@@ -168,17 +168,25 @@ void Script::sfSetChapterPoints(SCRIPTFUNC_PARAMS) {
 	_vm->_ethicsPoints[chapter] = thread->pop();
 	int16 barometer = thread->pop();
 	static PalEntry cur_pal[PAL_ENTRIES];
+	PalEntry portraitBgColor = _vm->_interface->_portraitBgColor;
+	byte portraitColor = (_vm->getLanguage() == Common::ES_ESP) ? 253 : 254;
 
 	_vm->_spiritualBarometer = _vm->_ethicsPoints[chapter] * 256 / barometer;
 	_vm->_scene->setChapterPointsChanged(true);		// don't save this music when saving in IHNM
 
+	// Set the portrait bg color, in case a saved state is restored from the
+	// launcher. In this case, sfSetPortraitBgColor is not called, thus the
+	// portrait color will always be 0 (black).
+	if (portraitBgColor.red == 0 && portraitBgColor.green == 0 && portraitBgColor.blue == 0)
+		portraitBgColor.green = 255;
+
 	if (_vm->_spiritualBarometer > 255)
-		_vm->_gfx->setPaletteColor(kIHNMColorPortrait, 0xff, 0xff, 0xff);
+		_vm->_gfx->setPaletteColor(portraitColor, 0xff, 0xff, 0xff);
 	else
-		_vm->_gfx->setPaletteColor(kIHNMColorPortrait,
-			_vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.red / 256,
-			_vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.green / 256,
-			_vm->_spiritualBarometer * _vm->_interface->_portraitBgColor.blue / 256);
+		_vm->_gfx->setPaletteColor(portraitColor,
+			_vm->_spiritualBarometer * portraitBgColor.red / 256,
+			_vm->_spiritualBarometer * portraitBgColor.green / 256,
+			_vm->_spiritualBarometer * portraitBgColor.blue / 256);
 
 	_vm->_gfx->getCurrentPal(cur_pal);
 	_vm->_gfx->setPalette(cur_pal);


Commit: faa7579241b1abcedf1f177124c301d6eeafbf9f
    https://github.com/scummvm/scummvm/commit/faa7579241b1abcedf1f177124c301d6eeafbf9f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-11-11T13:32:07-08:00

Commit Message:
SAGA: Add support for played time

Changed paths:
    engines/saga/detection.cpp
    engines/saga/saga.cpp
    engines/saga/saveload.cpp



diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp
index 9c17855..f6872c4 100644
--- a/engines/saga/detection.cpp
+++ b/engines/saga/detection.cpp
@@ -156,7 +156,8 @@ bool SagaMetaEngine::hasFeature(MetaEngineFeature f) const {
 		(f == kSupportsDeleteSave) ||
 		(f == kSavesSupportMetaInfo) ||
 		(f == kSavesSupportThumbnail) ||
-		(f == kSavesSupportCreationDate);
+		(f == kSavesSupportCreationDate) ||
+		(f == kSavesSupportPlayTime);
 }
 
 bool Saga::SagaEngine::hasFeature(EngineFeature f) const {
@@ -270,7 +271,10 @@ SaveStateDescriptor SagaMetaEngine::querySaveMetaInfos(const char *target, int s
 
 			desc.setSaveTime(hour, minutes);
 
-			// TODO: played time
+			if (version >= 8) {
+				uint32 playTime = in->readUint32BE();
+				desc.setPlayTime(playTime * 1000);
+			}
 		}
 
 		delete in;
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index 6e272d3..239a3be 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -202,6 +202,8 @@ SagaEngine::~SagaEngine() {
 }
 
 Common::Error SagaEngine::run() {
+	setTotalPlayTime(0);
+
 	// Assign default values to the config manager, in case settings are missing
 	ConfMan.registerDefault("talkspeed", "255");
 	ConfMan.registerDefault("subtitles", "true");
diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp
index 6a5a7d8..3cd44eb 100644
--- a/engines/saga/saveload.cpp
+++ b/engines/saga/saveload.cpp
@@ -34,7 +34,7 @@
 #include "saga/scene.h"
 #include "saga/script.h"
 
-#define CURRENT_SAGA_VER 7
+#define CURRENT_SAGA_VER 8
 
 namespace Saga {
 
@@ -204,10 +204,11 @@ void SagaEngine::save(const char *fileName, const char *saveName) {
 
 	uint32 saveDate = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF);
 	uint16 saveTime = ((curTime.tm_hour & 0xFF) << 8) | ((curTime.tm_min) & 0xFF);
+	uint32 playTime = g_engine->getTotalPlayTime() / 1000;
 
 	out->writeUint32BE(saveDate);
 	out->writeUint16BE(saveTime);
-	// TODO: played time
+	out->writeUint32BE(playTime);
 
 	// Surrounding scene
 	out->writeSint32LE(_scene->getOutsetSceneNumber());
@@ -299,7 +300,11 @@ void SagaEngine::load(const char *fileName) {
 
 		in->readUint32BE();	// save date
 		in->readUint16BE(); // save time
-		// TODO: played time
+
+		if (_saveHeader.version >= 8) {
+			uint32 playTime = in->readUint32BE();
+			g_engine->setTotalPlayTime(playTime * 1000);
+		}
 	}
 
 	// Clear pending events here, and don't process queued music events






More information about the Scummvm-git-logs mailing list