[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