diff options
author | Eugene Sandulenko | 2005-09-03 07:56:42 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2005-09-03 07:56:42 +0000 |
commit | cd5502916ad6ec7990b906e1dc22c07e17309691 (patch) | |
tree | 830ce7c09947118491580674a013bdda4364ad51 | |
parent | 720961565aa33b478b2593521207d8f416271ffd (diff) | |
download | scummvm-rg350-cd5502916ad6ec7990b906e1dc22c07e17309691.tar.gz scummvm-rg350-cd5502916ad6ec7990b906e1dc22c07e17309691.tar.bz2 scummvm-rg350-cd5502916ad6ec7990b906e1dc22c07e17309691.zip |
o Fix bug #1258633 "ITE: Second Rif appears in wall of dog castle prison"
o Added debug output method to Location structure
o Fixed long-standing bug with save version being saved not in constant
endianness
svn-id: r18740
-rw-r--r-- | saga/actor.cpp | 8 | ||||
-rw-r--r-- | saga/actor.h | 4 | ||||
-rw-r--r-- | saga/saveload.cpp | 9 |
3 files changed, 18 insertions, 3 deletions
diff --git a/saga/actor.cpp b/saga/actor.cpp index b8e84ec979..3dd1d7e5cc 100644 --- a/saga/actor.cpp +++ b/saga/actor.cpp @@ -2870,6 +2870,14 @@ void Actor::loadState(Common::InSaveFile *in) { for (i = 0; i < _actorsCount; i++) { ActorData *a = _actors[i]; a->loadState(_vm->getCurrentLoadVersion(), in); + + // Fix bug #1258633 "ITE: Second Rif appears in wall of dog castle prison" + // For some reason in some cases actor position is all wrong, so Rif + // crawls to his original poition + if (i == 122 && _vm->getGameType() == GType_ITE) { + a->_location.x = 130; + a->_location.y = 55; + } } for (i = 0; i < _objsCount; i++) { diff --git a/saga/actor.h b/saga/actor.h index 37cad77936..0728816593 100644 --- a/saga/actor.h +++ b/saga/actor.h @@ -234,6 +234,10 @@ struct Location { y = stream.readUint16LE(); z = stream.readUint16LE(); } + + void debugPrint(int debuglevel = 0, const char *loc = "Loc:") const { + debug(debuglevel, "%s %d, %d, %d", loc, x, y, z); + } }; class CommonObjectData { diff --git a/saga/saveload.cpp b/saga/saveload.cpp index 5bfe583ff5..a2c07fdde2 100644 --- a/saga/saveload.cpp +++ b/saga/saveload.cpp @@ -167,8 +167,8 @@ void SagaEngine::save(const char *fileName, const char *saveName) { _saveHeader.type = MKID('SAGA'); _saveHeader.size = 0; - _saveHeader.version = CURRENT_SAGA_VER; - strcpy(_saveHeader.name, saveName); + _saveHeader.version = TO_LE_32(CURRENT_SAGA_VER); + strncpy(_saveHeader.name, saveName, SAVE_TITLE_SIZE); out->write(&_saveHeader, sizeof(_saveHeader)); @@ -204,6 +204,9 @@ void SagaEngine::load(const char *fileName) { in->read(&_saveHeader, sizeof(_saveHeader)); + _saveHeader.size = FROM_LE_32(_saveHeader.size); + _saveHeader.version = FROM_LE_32(_saveHeader.version); + if (_saveHeader.type != MKID('SAGA')) { error("SagaEngine::load wrong format"); } @@ -235,7 +238,7 @@ void SagaEngine::load(const char *fileName) { _scene->clearSceneQueue(); _scene->changeScene(sceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade); - _events->handleEvents(0); //dissolve back grounds + _events->handleEvents(0); //dissolve backgrounds if (insetSceneNumber != sceneNumber) { _render->setFlag(RF_DISABLE_ACTORS); |