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); | 
