diff options
| -rw-r--r-- | engines/neverhood/neverhood.cpp | 7 | ||||
| -rw-r--r-- | engines/neverhood/neverhood.h | 4 | ||||
| -rw-r--r-- | engines/neverhood/saveload.cpp | 19 | 
3 files changed, 17 insertions, 13 deletions
| diff --git a/engines/neverhood/neverhood.cpp b/engines/neverhood/neverhood.cpp index 3769117f7f..e7c9f32d45 100644 --- a/engines/neverhood/neverhood.cpp +++ b/engines/neverhood/neverhood.cpp @@ -123,9 +123,10 @@ Common::Error NeverhoodEngine::run() {  		(*navigationList)[5].middleFlag = 1;  	} -	if (ConfMan.hasKey("save_slot")) -		loadGameState(ConfMan.getInt("save_slot")); -	else +	if (ConfMan.hasKey("save_slot")) { +		if (loadGameState(ConfMan.getInt("save_slot")).getCode() != Common::kNoError) +			_gameModule->startup(); +	} else  		_gameModule->startup();  	mainLoop(); diff --git a/engines/neverhood/neverhood.h b/engines/neverhood/neverhood.h index 39bc9cef2c..773e80df7d 100644 --- a/engines/neverhood/neverhood.h +++ b/engines/neverhood/neverhood.h @@ -122,8 +122,8 @@ public:  	Common::Error loadGameState(int slot);  	Common::Error saveGameState(int slot, const Common::String &description);  	Common::Error removeGameState(int slot); -	void savegame(const char *filename, const char *description); -	void loadgame(const char *filename); +	bool savegame(const char *filename, const char *description); +	bool loadgame(const char *filename);  	const char *getSavegameFilename(int num);  	static Common::String getSavegameFilename(const Common::String &target, int num);  	static kReadSaveHeaderError readSaveHeader(Common::SeekableReadStream *in, bool loadThumbnail, SaveHeader &header); diff --git a/engines/neverhood/saveload.cpp b/engines/neverhood/saveload.cpp index 578d9858ff..ae93a0cea4 100644 --- a/engines/neverhood/saveload.cpp +++ b/engines/neverhood/saveload.cpp @@ -61,12 +61,12 @@ NeverhoodEngine::kReadSaveHeaderError NeverhoodEngine::readSaveHeader(Common::Se  	return ((in->eos() || in->err()) ? kRSHEIoError : kRSHENoError);  } -void NeverhoodEngine::savegame(const char *filename, const char *description) { +bool NeverhoodEngine::savegame(const char *filename, const char *description) {  	Common::OutSaveFile *out;  	if (!(out = g_system->getSavefileManager()->openForSaving(filename))) {  		warning("Can't create file '%s', game not saved", filename); -		return; +		return false;  	}  	TimeDate curTime; @@ -99,13 +99,14 @@ void NeverhoodEngine::savegame(const char *filename, const char *description) {  	out->finalize();  	delete out; +	return true;  } -void NeverhoodEngine::loadgame(const char *filename) { +bool NeverhoodEngine::loadgame(const char *filename) {  	Common::InSaveFile *in;  	if (!(in = g_system->getSavefileManager()->openForLoading(filename))) {  		warning("Can't open file '%s', game not loaded", filename); -		return; +		return false;  	}  	SaveHeader header; @@ -115,7 +116,7 @@ void NeverhoodEngine::loadgame(const char *filename) {  	if (errorCode != kRSHENoError) {  		warning("Error loading savegame '%s'", filename);  		delete in; -		return; +		return false;  	}  	g_engine->setTotalPlayTime(header.playTime * 1000); @@ -128,18 +129,20 @@ void NeverhoodEngine::loadgame(const char *filename) {  	_gameModule->requestRestoreGame();  	delete in; - +	return true;  }  Common::Error NeverhoodEngine::loadGameState(int slot) {  	const char *fileName = getSavegameFilename(slot); -	loadgame(fileName); +	if (!loadgame(fileName)) +		return Common::kReadingFailed;  	return Common::kNoError;  }  Common::Error NeverhoodEngine::saveGameState(int slot, const Common::String &description) {  	const char *fileName = getSavegameFilename(slot); -	savegame(fileName, description.c_str()); +	if (!savegame(fileName, description.c_str())) +		return Common::kWritingFailed;  	return Common::kNoError;  } | 
