diff options
| -rw-r--r-- | engines/gob/gob.cpp | 1 | ||||
| -rw-r--r-- | engines/gob/module.mk | 1 | ||||
| -rw-r--r-- | engines/gob/save/saveload.h | 27 | ||||
| -rw-r--r-- | engines/gob/save/saveload_ajworld.cpp | 94 | 
4 files changed, 123 insertions, 0 deletions
| diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp index 3d3c43d91c..3d8a18ed38 100644 --- a/engines/gob/gob.cpp +++ b/engines/gob/gob.cpp @@ -492,6 +492,7 @@ bool GobEngine::initGameParts() {  		_map      = new Map_v2(this);  		_goblin   = new Goblin_v2(this);  		_scenery  = new Scenery_v2(this); +		_saveLoad = new SaveLoad_AJWorld(this, _targetName.c_str());  		break;  	case kGameTypeGob3: diff --git a/engines/gob/module.mk b/engines/gob/module.mk index 20214ea940..2249f44852 100644 --- a/engines/gob/module.mk +++ b/engines/gob/module.mk @@ -94,6 +94,7 @@ MODULE_OBJS := \  	save/saveload_v7.o \  	save/saveload_geisha.o \  	save/saveload_fascin.o \ +	save/saveload_ajworld.o \  	save/saveload_inca2.o \  	save/saveload_playtoons.o \  	save/saveconverter.o \ diff --git a/engines/gob/save/saveload.h b/engines/gob/save/saveload.h index 66b3482bac..834484757b 100644 --- a/engines/gob/save/saveload.h +++ b/engines/gob/save/saveload.h @@ -257,6 +257,33 @@ protected:  	SaveFile *getSaveFile(const char *fileName);  }; +/** Save/Load class for A.J.'s World of Discovery. */ +class SaveLoad_AJWorld : public SaveLoad { +public: +	SaveLoad_AJWorld(GobEngine *vm, const char *targetName); +	virtual ~SaveLoad_AJWorld(); + +	SaveMode getSaveMode(const char *fileName) const; + +protected: +	struct SaveFile { +		const char *sourceName; +		SaveMode mode; +		SaveHandler *handler; +		const char *description; +	}; + +	static SaveFile _saveFiles[]; + +	TempSpriteHandler *_tempSpriteHandler; + +	SaveHandler *getHandler(const char *fileName) const; +	const char *getDescription(const char *fileName) const; + +	const SaveFile *getSaveFile(const char *fileName) const; +	SaveFile *getSaveFile(const char *fileName); +}; +  /** Save/Load class for Goblins 3 and Lost in Time. */  class SaveLoad_v3 : public SaveLoad {  public: diff --git a/engines/gob/save/saveload_ajworld.cpp b/engines/gob/save/saveload_ajworld.cpp new file mode 100644 index 0000000000..727d071b3e --- /dev/null +++ b/engines/gob/save/saveload_ajworld.cpp @@ -0,0 +1,94 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "gob/save/saveload.h" +#include "gob/save/saveconverter.h" +#include "gob/inter.h" +#include "gob/variables.h" + +namespace Gob { + +SaveLoad_AJWorld::SaveFile SaveLoad_AJWorld::_saveFiles[] = { +	{ "menu.inf", kSaveModeSave, 0, "temporary sprite"} +}; + + +SaveLoad_AJWorld::SaveLoad_AJWorld(GobEngine *vm, const char *targetName) : +		SaveLoad(vm) { + +	_tempSpriteHandler = new TempSpriteHandler(vm); + +	_saveFiles[0].handler = _tempSpriteHandler; +} + +SaveLoad_AJWorld::~SaveLoad_AJWorld() { +	delete _tempSpriteHandler; +} + +const SaveLoad_AJWorld::SaveFile *SaveLoad_AJWorld::getSaveFile(const char *fileName) const { +	fileName = stripPath(fileName); + +	for (int i = 0; i < ARRAYSIZE(_saveFiles); i++) +		if (!scumm_stricmp(fileName, _saveFiles[i].sourceName)) +			return &_saveFiles[i]; + +	return 0; +} + +SaveLoad_AJWorld::SaveFile *SaveLoad_AJWorld::getSaveFile(const char *fileName) { +	fileName = stripPath(fileName); + +	for (int i = 0; i < ARRAYSIZE(_saveFiles); i++) +		if (!scumm_stricmp(fileName, _saveFiles[i].sourceName)) +			return &_saveFiles[i]; + +	return 0; +} + +SaveHandler *SaveLoad_AJWorld::getHandler(const char *fileName) const { +	const SaveFile *saveFile = getSaveFile(fileName); + +	if (saveFile) +		return saveFile->handler; + +	return 0; +} + +const char *SaveLoad_AJWorld::getDescription(const char *fileName) const { +	const SaveFile *saveFile = getSaveFile(fileName); + +	if (saveFile) +		return saveFile->description; + +	return 0; +} + +SaveLoad::SaveMode SaveLoad_AJWorld::getSaveMode(const char *fileName) const { +	const SaveFile *saveFile = getSaveFile(fileName); + +	if (saveFile) +		return saveFile->mode; + +	return kSaveModeNone; +} + +} // End of namespace Gob | 
