[Scummvm-git-logs] scummvm master -> 4b6578603d1195f04be230870ab003ed0698d936

dreammaster paulfgilbert at gmail.com
Sun Aug 25 05:33:28 CEST 2019


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:
4b6578603d XEEN: Fix incorrect Throne sprites in Northern Sphinx


Commit: 4b6578603d1195f04be230870ab003ed0698d936
    https://github.com/scummvm/scummvm/commit/4b6578603d1195f04be230870ab003ed0698d936
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-08-24T20:33:22-07:00

Commit Message:
XEEN: Fix incorrect Throne sprites in Northern Sphinx

The Northern Sphinx used a list of object sprites that had
an empty entry mid-list. This commit fixes the problem by
allow such entries, but will only apply for new games

Changed paths:
    engines/xeen/map.cpp
    engines/xeen/map.h


diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index 9d384c7..f2a9395 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -383,12 +383,24 @@ void MonsterObjectData::synchronize(XeenSerializer &s, MonsterData &monsterData)
 		_wallItems.clear();
 	}
 
-	for (uint i = 0; i < 16; ++i) {
-		b = (i >= _objectSprites.size()) ? 0xff : _objectSprites[i]._spriteId;
-		s.syncAsByte(b);
-		if (s.isLoading() && b != 0xff)
-			_objectSprites.push_back(SpriteResourceEntry(b));
+	byte objSprites[16];
+	int maxSprite = 0;
+	for (int i = 0; i < 16; ++i) {
+		objSprites[i] = (i >= (int)_objectSprites.size()) ? 0xff : _objectSprites[i]._spriteId;
+		s.syncAsByte(objSprites[i]);
+		if (s.isLoading() && objSprites[i] != 0xff)
+			maxSprite = i;
+	}
+
+	if (s.isLoading()) {
+		for (int i = 0; i <= maxSprite; ++i) {
+			if (objSprites[i] == 0xff)
+				_objectSprites.push_back(SpriteResourceEntry());
+			else
+				_objectSprites.push_back(SpriteResourceEntry(objSprites[i]));
+		}
 	}
+
 	for (uint i = 0; i < 16; ++i) {
 		b = (i >= _monsterSprites.size()) ? 0xff : _monsterSprites[i]._spriteId;
 		s.syncAsByte(b);
@@ -810,7 +822,8 @@ void Map::load(int mapId) {
 		}
 
 		// Read in the object sprites
-		_mobData._objectSprites[i]._sprites.load(filename);
+		if (!_mobData._objectSprites[i].isEmpty())
+			_mobData._objectSprites[i]._sprites.load(filename);
 	}
 
 	// Load sprites for the monsters
diff --git a/engines/xeen/map.h b/engines/xeen/map.h
index 1c00e54..cdd3376 100644
--- a/engines/xeen/map.h
+++ b/engines/xeen/map.h
@@ -319,6 +319,11 @@ public:
 
 		SpriteResourceEntry() { _spriteId = -1; }
 		SpriteResourceEntry(int spriteId): _spriteId(spriteId) { }
+
+		/**
+		 * Returns true if no sprite id is specified
+		 */
+		bool isEmpty() const { return _spriteId == -1; }
 	};
 private:
 	XeenEngine *_vm;





More information about the Scummvm-git-logs mailing list