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

introduced in 70fd4f428d9ed5ba1f71bb02f35b8fae7fccb410
This commit is contained in:
Martin Gerhardy 2021-08-20 02:28:34 +02:00
parent 2df0dca6aa
commit ca57b25a32

View File

@ -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) {