diff options
| author | Arnaud Boutonné | 2009-07-07 11:58:22 +0000 | 
|---|---|---|
| committer | Arnaud Boutonné | 2009-07-07 11:58:22 +0000 | 
| commit | a0ab8c9c0cb079f21e342d1a53283064bdffebe4 (patch) | |
| tree | 9e724242a51f682746783450ea260affd4268df5 /engines/gob | |
| parent | a9aaf56b3e81d46776a6fba574ab9833a8f21be1 (diff) | |
| download | scummvm-rg350-a0ab8c9c0cb079f21e342d1a53283064bdffebe4.tar.gz scummvm-rg350-a0ab8c9c0cb079f21e342d1a53283064bdffebe4.tar.bz2 scummvm-rg350-a0ab8c9c0cb079f21e342d1a53283064bdffebe4.zip  | |
- Separate Playtoons gametypes from  in GobEngine::initGameParts()
- Add a specific save/load class for Playtoons as some specific files need to be tested
svn-id: r42214
Diffstat (limited to 'engines/gob')
| -rw-r--r-- | engines/gob/gob.cpp | 18 | ||||
| -rw-r--r-- | engines/gob/module.mk | 1 | ||||
| -rw-r--r-- | engines/gob/save/saveload.h | 24 | ||||
| -rw-r--r-- | engines/gob/save/saveload_playtoons.cpp | 88 | 
4 files changed, 128 insertions, 3 deletions
diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp index 8605dfbd52..c5136344eb 100644 --- a/engines/gob/gob.cpp +++ b/engines/gob/gob.cpp @@ -421,9 +421,6 @@ bool GobEngine::initGameParts() {  		_saveLoad = new SaveLoad_v4(this, _targetName.c_str());  		break; -	case kGameTypePlaytoon: -	case kGameTypePlaytnCk: -	case kGameTypeBambou:  	case kGameTypeDynasty:  		_init = new Init_v3(this);  		_video = new Video_v2(this); @@ -449,6 +446,21 @@ bool GobEngine::initGameParts() {  		_saveLoad = new SaveLoad_v6(this, _targetName.c_str());  		break; +	case kGameTypePlaytoon: +	case kGameTypePlaytnCk: +	case kGameTypeBambou: +		_init = new Init_v2(this); +		_video = new Video_v2(this); +//		_inter = new Inter_Playtoons(this); +		_inter = new Inter_v4(this); +		_mult = new Mult_v2(this); +		_draw = new Draw_v2(this); +		_map = new Map_v2(this); +		_goblin = new Goblin_v2(this); +		_scenery = new Scenery_v2(this); +		_saveLoad = new SaveLoad_playtoons(this); +		break; +  	default:  		deinitGameParts();  		return false; diff --git a/engines/gob/module.mk b/engines/gob/module.mk index 66c1b0dbaf..611abb6038 100644 --- a/engines/gob/module.mk +++ b/engines/gob/module.mk @@ -64,6 +64,7 @@ MODULE_OBJS := \  	save/saveload_v3.o \  	save/saveload_v4.o \  	save/saveload_v6.o \ +	save/saveload_playtoons.o \  	save/saveconverter.o \  	save/saveconverter_v2.o \  	save/saveconverter_v3.o \ diff --git a/engines/gob/save/saveload.h b/engines/gob/save/saveload.h index a74b64b883..8095b8c045 100644 --- a/engines/gob/save/saveload.h +++ b/engines/gob/save/saveload.h @@ -445,6 +445,30 @@ protected:  	SaveFile *getSaveFile(const char *fileName);  }; +/** Save/Load class for Playtoons. */ +class SaveLoad_playtoons : public SaveLoad { +public: +	SaveLoad_playtoons(GobEngine *vm); +	virtual ~SaveLoad_playtoons(); + +protected: +	struct SaveFile { +		const char *sourceName; +		SaveMode mode; +		SaveHandler *handler; +		const char *description; +	}; + +	static SaveFile _saveFiles[]; + +	SaveMode getSaveMode(const char *fileName) const; + +	const SaveFile *getSaveFile(const char *fileName) const; +	 +	SaveFile *getSaveFile(const char *fileName); + +}; +  } // End of namespace Gob  #endif // GOB_SAVE_SAVELOAD_H diff --git a/engines/gob/save/saveload_playtoons.cpp b/engines/gob/save/saveload_playtoons.cpp new file mode 100644 index 0000000000..576a10294f --- /dev/null +++ b/engines/gob/save/saveload_playtoons.cpp @@ -0,0 +1,88 @@ +/* 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. + * + * $URL$ + * $Id$ + * + */ + +#include "gob/save/saveload.h" +#include "gob/inter.h" +#include "gob/variables.h" + +namespace Gob { + +SaveLoad_playtoons::SaveFile SaveLoad_playtoons::_saveFiles[] = { +	{  "disk.001", kSaveModeExists, 0, 0}, // Playtoons 1 identification file +	{  "disk.002", kSaveModeExists, 0, 0}, // Playtoons 2 identification file +	{  "disk.003", kSaveModeExists, 0, 0}, // Playtoons 3 identification file +	{  "disk.004", kSaveModeExists, 0, 0}, // Playtoons 4 identification file +	{  "disk.005", kSaveModeExists, 0, 0}, // Playtoons 5 identification file +	{  "disk.006", kSaveModeExists, 0, 0}, // Playtoons CK 1 identification file +	{  "disk.007", kSaveModeExists, 0, 0}, // Playtoons CK 2 identification file +	{  "disk.008", kSaveModeExists, 0, 0}, // Playtoons CK 3 identification file +	{  "titre.001", kSaveModeExists, 0, 0}, // Playtoons 1 titles +	{  "titre.002", kSaveModeExists, 0, 0}, // Playtoons 2 titles +	{  "titre.003", kSaveModeExists, 0, 0}, // Playtoons 3 titles +	{  "titre.004", kSaveModeExists, 0, 0}, // Playtoons 4 titles +	{  "titre.005", kSaveModeExists, 0, 0}, // Playtoons 5 titles +	{  "titre.006", kSaveModeExists, 0, 0}, // Playtoons CK 1 empty title (???) +	{  "titre.007", kSaveModeExists, 0, 0}, // Playtoons CK 2 empty title (???) +	{  "titre.008", kSaveModeExists, 0, 0}, // Playtoons CK 3 empty title (???) +	{  "mdo.def",  kSaveModeExists, 0, 0}, +}; + +SaveLoad::SaveMode SaveLoad_playtoons::getSaveMode(const char *fileName) const { +	const SaveFile *saveFile = getSaveFile(fileName); + +	if (saveFile) +		return saveFile->mode; + +	return kSaveModeNone; +} + +SaveLoad_playtoons::SaveLoad_playtoons(GobEngine *vm) : +		SaveLoad(vm) { +} + +SaveLoad_playtoons::~SaveLoad_playtoons() { +} + +const SaveLoad_playtoons::SaveFile *SaveLoad_playtoons::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_playtoons::SaveFile *SaveLoad_playtoons::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; +} + +} // End of namespace Gob  | 
