[Scummvm-git-logs] scummvm master -> ca57b25a32e1af04bb49d3c192f8d4d88fcdbebe

mgerhardy martin.gerhardy at gmail.com
Mon Aug 23 11:50:11 UTC 2021


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:
ca57b25a32 TWINE: fixed issue #12827 (Unable to exit scene on citadel island)


Commit: ca57b25a32e1af04bb49d3c192f8d4d88fcdbebe
    https://github.com/scummvm/scummvm/commit/ca57b25a32e1af04bb49d3c192f8d4d88fcdbebe
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-08-23T13:50:07+02:00

Commit Message:
TWINE: fixed issue #12827 (Unable to exit scene on citadel island)

introduced in 70fd4f428d9ed5ba1f71bb02f35b8fae7fccb410

Changed paths:
    engines/twine/scene/scene.cpp


diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 76d956fa6a..32404608c4 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -303,15 +303,15 @@ bool Scene::loadSceneLBA1() {
 	_sceneMusic = stream.readByte();
 
 	// load hero properties
-	_sceneHeroPos.x = stream.readUint16LE();
-	_sceneHeroPos.y = stream.readUint16LE();
-	_sceneHeroPos.z = stream.readUint16LE();
+	_sceneHeroPos.x = (int16)stream.readUint16LE();
+	_sceneHeroPos.y = (int16)stream.readUint16LE();
+	_sceneHeroPos.z = (int16)stream.readUint16LE();
 
-	_sceneHero->_moveScriptSize = stream.readUint16LE();
+	_sceneHero->_moveScriptSize = (int16)stream.readUint16LE();
 	_sceneHero->_moveScript = _currentScene + stream.pos();
 	stream.skip(_sceneHero->_moveScriptSize);
 
-	_sceneHero->_lifeScriptSize = stream.readUint16LE();
+	_sceneHero->_lifeScriptSize = (int16)stream.readUint16LE();
 	_sceneHero->_lifeScript = _currentScene + stream.pos();
 	stream.skip(_sceneHero->_lifeScriptSize);
 
@@ -327,15 +327,15 @@ bool Scene::loadSceneLBA1() {
 
 		act->_body = (BodyType)stream.readByte();
 		act->_anim = (AnimationTypes)stream.readByte();
-		act->_sprite = stream.readUint16LE();
-		act->_pos.x = stream.readUint16LE();
-		act->_pos.y = stream.readUint16LE();
-		act->_pos.z = stream.readUint16LE();
+		act->_sprite = (int16)stream.readUint16LE();
+		act->_pos.x = (int16)stream.readUint16LE();
+		act->_pos.y = (int16)stream.readUint16LE();
+		act->_pos.z = (int16)stream.readUint16LE();
 		act->_collisionPos = act->pos();
 		act->_strengthOfHit = stream.readByte();
 		setBonusParameterFlags(act, stream.readUint16LE());
-		act->_angle = stream.readUint16LE();
-		act->_speed = stream.readUint16LE();
+		act->_angle = (int16)stream.readUint16LE();
+		act->_speed = (int16)stream.readUint16LE();
 		act->_controlMode = (ControlMode)stream.readUint16LE();
 		act->_cropLeft = stream.readSint16LE();
 		act->_delayInMillis = act->_cropLeft; // TODO: this might not be needed
@@ -348,11 +348,11 @@ bool Scene::loadSceneLBA1() {
 		act->_armor = stream.readByte();
 		act->setLife(stream.readByte());
 
-		act->_moveScriptSize = stream.readUint16LE();
+		act->_moveScriptSize = (int16)stream.readUint16LE();
 		act->_moveScript = _currentScene + stream.pos();
 		stream.skip(act->_moveScriptSize);
 
-		act->_lifeScriptSize = stream.readUint16LE();
+		act->_lifeScriptSize = (int16)stream.readUint16LE();
 		act->_lifeScript = _currentScene + stream.pos();
 		stream.skip(act->_lifeScriptSize);
 
@@ -365,20 +365,20 @@ bool Scene::loadSceneLBA1() {
 	_sceneNumZones = stream.readUint16LE();
 	for (int32 i = 0; i < _sceneNumZones; i++) {
 		ZoneStruct *zone = &_sceneZones[i];
-		zone->mins.x = stream.readUint16LE();
-		zone->mins.y = stream.readUint16LE();
-		zone->mins.z = stream.readUint16LE();
+		zone->mins.x = (int16)stream.readUint16LE();
+		zone->mins.y = (int16)stream.readUint16LE();
+		zone->mins.z = (int16)stream.readUint16LE();
 
-		zone->maxs.x = stream.readUint16LE();
-		zone->maxs.y = stream.readUint16LE();
-		zone->maxs.z = stream.readUint16LE();
+		zone->maxs.x = (int16)stream.readUint16LE();
+		zone->maxs.y = (int16)stream.readUint16LE();
+		zone->maxs.z = (int16)stream.readUint16LE();
 
 		zone->type = (ZoneType)stream.readUint16LE();
 
-		zone->infoData.generic.info0 = stream.readUint16LE();
-		zone->infoData.generic.info1 = stream.readUint16LE();
-		zone->infoData.generic.info2 = stream.readUint16LE();
-		zone->infoData.generic.info3 = stream.readUint16LE();
+		zone->infoData.generic.info0 = (int16)stream.readUint16LE();
+		zone->infoData.generic.info1 = (int16)stream.readUint16LE();
+		zone->infoData.generic.info2 = (int16)stream.readUint16LE();
+		zone->infoData.generic.info3 = (int16)stream.readUint16LE();
 
 		zone->snap = stream.readUint16LE();
 	}
@@ -386,9 +386,9 @@ bool Scene::loadSceneLBA1() {
 	_sceneNumTracks = stream.readUint16LE();
 	for (int32 i = 0; i < _sceneNumTracks; i++) {
 		IVec3 *point = &_sceneTracks[i];
-		point->x = stream.readUint16LE();
-		point->y = stream.readUint16LE();
-		point->z = stream.readUint16LE();
+		point->x = (int16)stream.readUint16LE();
+		point->y = (int16)stream.readUint16LE();
+		point->z = (int16)stream.readUint16LE();
 	}
 
 	if (_engine->_debugScene->_useScenePatches) {




More information about the Scummvm-git-logs mailing list