[Scummvm-cvs-logs] SF.net SVN: scummvm:[41752] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Mon Jun 22 12:12:34 CEST 2009


Revision: 41752
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41752&view=rev
Author:   drmccoy
Date:     2009-06-22 10:12:33 +0000 (Mon, 22 Jun 2009)

Log Message:
-----------
Adding DataIO::existData()

Modified Paths:
--------------
    scummvm/trunk/engines/gob/dataio.cpp
    scummvm/trunk/engines/gob/dataio.h
    scummvm/trunk/engines/gob/game.cpp
    scummvm/trunk/engines/gob/game.h
    scummvm/trunk/engines/gob/init.cpp
    scummvm/trunk/engines/gob/inter_v2.cpp
    scummvm/trunk/engines/gob/inter_v6.cpp
    scummvm/trunk/engines/gob/map_v1.cpp
    scummvm/trunk/engines/gob/sound/sound.cpp
    scummvm/trunk/engines/gob/videoplayer.cpp

Modified: scummvm/trunk/engines/gob/dataio.cpp
===================================================================
--- scummvm/trunk/engines/gob/dataio.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/dataio.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -488,6 +488,16 @@
 	return file_open(path);
 }
 
+bool DataIO::existData(const char *path) {
+	int16 handle = openData(path);
+
+	if (handle < 0)
+		return false;
+
+	closeData(handle);
+	return true;
+}
+
 DataStream *DataIO::openAsStream(int16 handle, bool dispose) {
 	uint32 curPos = getPos(handle);
 	seekData(handle, 0, SEEK_END);

Modified: scummvm/trunk/engines/gob/dataio.h
===================================================================
--- scummvm/trunk/engines/gob/dataio.h	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/dataio.h	2009-06-22 10:12:33 UTC (rev 41752)
@@ -80,6 +80,7 @@
 	byte *getUnpackedData(const char *name);
 	void closeData(int16 handle);
 	int16 openData(const char *path);
+	bool existData(const char *path);
 	DataStream *openAsStream(int16 handle, bool dispose = false);
 
 	int32 getDataSize(const char *name);

Modified: scummvm/trunk/engines/gob/game.cpp
===================================================================
--- scummvm/trunk/engines/gob/game.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/game.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -417,21 +417,18 @@
 }
 
 int32 Game::loadTotFile(const char *path) {
-	int16 handle;
 	int32 size;
 
 	_lomHandle = -1;
 
 	size = -1;
-	handle = _vm->_dataIO->openData(path);
-	if (handle >= 0) {
-
+	if (_vm->_dataIO->existData(path)) {
 		if (!scumm_stricmp(path + strlen(path) - 3, "LOM")) {
 			warning("Urban Stub: loadTotFile %s", path);
 
-			_lomHandle = handle;
+			_lomHandle = _vm->_dataIO->openData(path);
 
-			DataStream *stream = _vm->_dataIO->openAsStream(handle);
+			DataStream *stream = _vm->_dataIO->openAsStream(_lomHandle);
 
 			stream->seek(48);
 			size = stream->readUint32LE();
@@ -442,7 +439,6 @@
 
 			delete stream;
 		} else {
-			_vm->_dataIO->closeData(handle);
 			size = _vm->_dataIO->getDataSize(path);
 			_totFileData = _vm->_dataIO->getData(path);
 		}
@@ -497,7 +493,6 @@
 
 void Game::loadImFile(void) {
 	char path[20];
-	int16 handle;
 
 	if ((_totFileData[0x3D] != 0) && (_totFileData[0x3B] == 0))
 		return;
@@ -506,11 +501,9 @@
 	if (_totFileData[0x3B] != 0)
 		path[strlen(path) - 1] = '0' + _totFileData[0x3B];
 
-	handle = _vm->_dataIO->openData(path);
-	if (handle < 0)
+	if (!_vm->_dataIO->existData(path))
 		return;
 
-	_vm->_dataIO->closeData(handle);
 	_imFileData = _vm->_dataIO->getData(path);
 }
 
@@ -675,12 +668,10 @@
 	strcat(_curExtFile, ".EXT");
 }
 
-int16 Game::openLocTextFile(char *locTextFile, int language) {
-	int n;
-
-	n = strlen(locTextFile);
+bool Game::getLocTextFile(char *locTextFile, int language) {
+	int n = strlen(locTextFile);
 	if (n < 4)
-		return -1;
+		return false;
 
 	locTextFile[n - 4] = 0;
 	switch (language) {
@@ -712,43 +703,42 @@
 		strcat(locTextFile, ".ang");
 		break;
 	}
-	return _vm->_dataIO->openData(locTextFile);
+
+	return _vm->_dataIO->existData(locTextFile);
 }
 
 byte *Game::loadLocTexts(int32 *dataSize) {
 	char locTextFile[20];
-	int16 handle;
-	int i;
 
 	strcpy(locTextFile, _curTotFile);
 
-	handle = openLocTextFile(locTextFile, _vm->_global->_languageWanted);
-	if (handle >= 0) {
+	bool found = getLocTextFile(locTextFile, _vm->_global->_languageWanted);
+	if (found) {
 
 		_foundTotLoc = true;
 		_vm->_global->_language = _vm->_global->_languageWanted;
 
 	} else if (!_foundTotLoc) {
-		bool found = false;
-
+		// Trying US for GB and vice versa
 		if (_vm->_global->_languageWanted == 2) {
-			handle = openLocTextFile(locTextFile, 5);
-			if (handle >= 0) {
+			found = getLocTextFile(locTextFile, 5);
+			if (found) {
 				_vm->_global->_language = 5;
 				found = true;
 			}
 		} else if (_vm->_global->_languageWanted == 5) {
-			handle = openLocTextFile(locTextFile, 2);
-			if (handle >= 0) {
+			found = getLocTextFile(locTextFile, 2);
+			if (found) {
 				_vm->_global->_language = 2;
 				found = true;
 			}
 		}
 
 		if (!found) {
-			for (i = 0; i < 10; i++) {
-				handle = openLocTextFile(locTextFile, i);
-				if (handle >= 0) {
+			// Looking for the first existing language
+			for (int i = 0; i < 10; i++) {
+				found = getLocTextFile(locTextFile, i);
+				if (found) {
 					_vm->_global->_language = i;
 					break;
 				}
@@ -760,14 +750,13 @@
 	debugC(1, kDebugFileIO, "Using language %d for %s",
 			_vm->_global->_language, _curTotFile);
 
-	if (handle >= 0) {
-		_vm->_dataIO->closeData(handle);
-
+	if (found) {
 		if (dataSize)
 			*dataSize = _vm->_dataIO->getDataSize(locTextFile);
 
 		return _vm->_dataIO->getData(locTextFile);
 	}
+
 	return 0;
 }
 

Modified: scummvm/trunk/engines/gob/game.h
===================================================================
--- scummvm/trunk/engines/gob/game.h	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/game.h	2009-06-22 10:12:33 UTC (rev 41752)
@@ -229,7 +229,7 @@
 	void loadImFile(void);
 
 	void collAreaSub(int16 index, int8 enter);
-	int16 openLocTextFile(char *locTextFile, int language);
+	bool getLocTextFile(char *locTextFile, int language);
 
 	virtual void setCollisions(byte arg_0 = 1);
 	virtual void collSub(uint16 offset);

Modified: scummvm/trunk/engines/gob/init.cpp
===================================================================
--- scummvm/trunk/engines/gob/init.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/init.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -80,9 +80,6 @@
 }
 
 void Init::initGame() {
-	int16 handle2;
-	int16 handle;
-	int16 imdHandle;
 	byte *infBuf;
 	char *infPtr;
 	char *infEnd;
@@ -91,11 +88,8 @@
 	initVideo();
 
 	if (!_vm->isDemo()) {
-		handle2 = _vm->_dataIO->openData(_vm->_startStk.c_str());
-		if (handle2 >= 0) {
-			_vm->_dataIO->closeData(handle2);
+		if (_vm->_dataIO->existData(_vm->_startStk.c_str()))
 			_vm->_dataIO->openDataFile(_vm->_startStk.c_str());
-		}
 	}
 
 	_vm->_util->initInput();
@@ -127,19 +121,13 @@
 		return;
 	}
 
-	handle = _vm->_dataIO->openData("intro.inf");
+	if (!_vm->_dataIO->existData("intro.inf")) {
 
-	if (handle < 0) {
-		for (int i = 0; i < 4; i++) {
-			handle2 = _vm->_dataIO->openData(_fontNames[i]);
-			if (handle2 >= 0) {
-				_vm->_dataIO->closeData(handle2);
+		for (int i = 0; i < 4; i++)
+			if (_vm->_dataIO->existData(_fontNames[i]))
 				_vm->_draw->_fonts[i] = _vm->_util->loadFont(_fontNames[i]);
-			}
-		}
-	} else {
-		_vm->_dataIO->closeData(handle);
 
+	} else {
 		infBuf = _vm->_dataIO->getData("intro.inf");
 		infPtr = (char *) infBuf;
 
@@ -153,11 +141,8 @@
 			buffer[j] = 0;
 
 			strcat(buffer, ".let");
-			handle2 = _vm->_dataIO->openData(buffer);
-			if (handle2 >= 0) {
-				_vm->_dataIO->closeData(handle2);
+			if (_vm->_dataIO->existData(buffer))
 				_vm->_draw->_fonts[i] = _vm->_util->loadFont(buffer);
-			}
 
 			if ((infPtr + 1) >= infEnd)
 				break;
@@ -167,26 +152,21 @@
 		delete[] infBuf;
 	}
 
-	strcpy(buffer, _vm->_startTot.c_str());
-	handle = _vm->_dataIO->openData(buffer);
+	if (_vm->_dataIO->existData(_vm->_startTot.c_str())) {
+		DataStream *stream = _vm->_dataIO->getDataStream(_vm->_startTot.c_str());
 
-	if (handle >= 0) {
-		DataStream *stream = _vm->_dataIO->openAsStream(handle, true);
-
 		stream->seek(0x2C);
 		_vm->_inter->allocateVars(stream->readUint16LE());
 
 		delete stream;
 
-		strcpy(_vm->_game->_curTotFile, buffer);
+		strcpy(_vm->_game->_curTotFile, _vm->_startTot.c_str());
 
 		_vm->_sound->cdTest(1, "GOB");
 		_vm->_sound->cdLoadLIC("gob.lic");
 
 		// Search for a Coktel logo animation or image to display
-		imdHandle = _vm->_dataIO->openData("coktel.imd");
-		if (imdHandle >= 0) {
-			_vm->_dataIO->closeData(imdHandle);
+		if (_vm->_dataIO->existData("coktel.imd")) {
 			_vm->_draw->initScreen();
 			_vm->_draw->_cursorIndex = -1;
 
@@ -198,19 +178,17 @@
 			}
 
 			_vm->_draw->closeScreen();
-		} else if ((imdHandle = _vm->_dataIO->openData("coktel.clt")) >= 0) {
+		} else if (_vm->_dataIO->existData("coktel.clt")) {
 			_vm->_draw->initScreen();
-
-			stream = _vm->_dataIO->openAsStream(imdHandle, true);
 			_vm->_util->clearPalette();
+
+			stream = _vm->_dataIO->getDataStream("coktel.clt");
 			stream->read((byte *) _vm->_draw->_vgaPalette, 768);
 			delete stream;
 
-			imdHandle = _vm->_dataIO->openData("coktel.ims");
-			if (imdHandle >= 0) {
+			if (_vm->_dataIO->existData("coktel.ims")) {
 				byte *sprBuf;
 
-				_vm->_dataIO->closeData(imdHandle);
 				sprBuf = _vm->_dataIO->getData("coktel.ims");
 				_vm->_video->drawPackedSprite(sprBuf, 320, 200, 0, 0, 0,
 						*_vm->_draw->_frontSurface);

Modified: scummvm/trunk/engines/gob/inter_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v2.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/inter_v2.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -1317,13 +1317,12 @@
 
 	mode = _vm->_saveLoad->getSaveMode(_vm->_parse->getResultStr());
 	if (mode == SaveLoad::kSaveModeNone) {
-		handle = _vm->_dataIO->openData(_vm->_parse->getResultStr());
 
-		if (handle >= 0) {
-			_vm->_dataIO->closeData(handle);
+		if (_vm->_dataIO->existData(_vm->_parse->getResultStr()))
 			size = _vm->_dataIO->getDataSize(_vm->_parse->getResultStr());
-		} else
+		else
 			warning("File \"%s\" not found", _vm->_parse->getResultStr());
+
 	} else if (mode == SaveLoad::kSaveModeSave)
 		size = _vm->_saveLoad->getSize(_vm->_parse->getResultStr());
 	else if (mode == SaveLoad::kSaveModeExists)

Modified: scummvm/trunk/engines/gob/inter_v6.cpp
===================================================================
--- scummvm/trunk/engines/gob/inter_v6.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/inter_v6.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -432,11 +432,8 @@
 
 	fileName[len - 1] = 'V';
 
-	int16 handle;
-	if ((handle = _vm->_dataIO->openData(fileName)) >= 0) {
-		_vm->_dataIO->closeData(handle);
+	if (_vm->_dataIO->existData(fileName))
 		return;
-	}
 
 	fileName[len - 1] = '8';
 }

Modified: scummvm/trunk/engines/gob/map_v1.cpp
===================================================================
--- scummvm/trunk/engines/gob/map_v1.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/map_v1.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -64,7 +64,6 @@
 void Map_v1::loadMapObjects(const char *avjFile) {
 	char avoName[128];
 	byte *dataBuf;
-	int16 handle;
 	int16 tmp;
 	int32 flag;
 	int16 gobDataCount;
@@ -75,15 +74,14 @@
 	strcpy(avoName, _sourceFile);
 	strcat(avoName, ".avo");
 
-	handle = _vm->_dataIO->openData(avoName);
-	if (handle >= 0) {
+	if (_vm->_dataIO->existData(avoName)) {
 		_loadFromAvo = true;
-		_vm->_dataIO->closeData(handle);
 		dataBuf = _vm->_dataIO->getData(avoName);
 	} else {
 		_loadFromAvo = false;
 		dataBuf = _vm->_dataIO->getData(avjFile);
 	}
+
 	Common::MemoryReadStream mapData(dataBuf, 4294967295U);
 
 	init();
@@ -146,7 +144,6 @@
 
 void Map_v1::loadSounds(Common::SeekableReadStream &data) {
 	int16 count;
-	int16 handle;
 	char buf[19];
 	char sndNames[20][14];
 
@@ -162,11 +159,9 @@
 	_vm->_sound->sampleLoad(&_vm->_goblin->_soundData[14], SOUND_SND, "diamant1.snd");
 
 	for (int i = 0; i < count; i++) {
-		handle = _vm->_dataIO->openData(sndNames[i]);
-		if (handle < 0)
+		if (!_vm->_dataIO->existData(sndNames[i]))
 			continue;
 
-		_vm->_dataIO->closeData(handle);
 		_vm->_sound->sampleLoad(&_vm->_goblin->_soundData[i], SOUND_SND, sndNames[i]);
 	}
 }

Modified: scummvm/trunk/engines/gob/sound/sound.cpp
===================================================================
--- scummvm/trunk/engines/gob/sound/sound.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/sound/sound.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -114,14 +114,11 @@
 
 	debugC(2, kDebugSound, "Loading sample \"%s\"", fileName);
 
-	int16 handle = _vm->_dataIO->openData(fileName);
-	if (handle < 0) {
+	if (!_vm->_dataIO->existData(fileName)) {
 		warning("Can't open sample file \"%s\"", fileName);
 		return false;
 	}
 
-	_vm->_dataIO->closeData(handle);
-
 	byte *data;
 	uint32 size;
 
@@ -503,17 +500,12 @@
 
 	debugC(1, kDebugSound, "CDROM: Loading LIC \"%s\"", fname);
 
-	int handle = _vm->_dataIO->openData(fname);
-
-	if (handle == -1)
+	if (!_vm->_dataIO->existData(fname))
 		return;
 
-	_vm->_dataIO->closeData(handle);
-
 	_vm->_dataIO->getUnpackedData(fname);
 
-	handle = _vm->_dataIO->openData(fname);
-	DataStream *stream = _vm->_dataIO->openAsStream(handle, true);
+	DataStream *stream = _vm->_dataIO->getDataStream(fname);
 
 	_cdrom->readLIC(*stream);
 

Modified: scummvm/trunk/engines/gob/videoplayer.cpp
===================================================================
--- scummvm/trunk/engines/gob/videoplayer.cpp	2009-06-22 10:11:53 UTC (rev 41751)
+++ scummvm/trunk/engines/gob/videoplayer.cpp	2009-06-22 10:12:33 UTC (rev 41752)
@@ -201,15 +201,11 @@
 		int i;
 		for (i = 0; i < ARRAYSIZE(_extensions); i++) {
 			if ((which == kVideoTypeTry) || (which == ((Type) i))) {
-				int16 handle;
-
 				fileName[len] = '.';
 				fileName[len + 1] = 0;
 				strcat(fileName, _extensions[i]);
 
-				handle = _vm->_dataIO->openData(fileName);
-				if (handle >= 0) {
-					_vm->_dataIO->closeData(handle);
+				if (_vm->_dataIO->existData(fileName)) {
 					which = (Type) i;
 					break;
 				}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list