[Scummvm-cvs-logs] SF.net SVN: scummvm: [25864] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Sun Feb 25 21:12:24 CET 2007


Revision: 25864
          http://scummvm.svn.sourceforge.net/scummvm/?rev=25864&view=rev
Author:   peres001
Date:     2007-02-25 12:12:23 -0800 (Sun, 25 Feb 2007)

Log Message:
-----------
got rid of ArchievedFile. Since only one single file is being read from the archives at every moment, the ArchivedFile structure used for bookkeeping is useless.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/animation.cpp
    scummvm/trunk/engines/parallaction/archive.cpp
    scummvm/trunk/engines/parallaction/disk.h
    scummvm/trunk/engines/parallaction/graphics.cpp
    scummvm/trunk/engines/parallaction/location.cpp

Modified: scummvm/trunk/engines/parallaction/animation.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/animation.cpp	2007-02-25 19:15:00 UTC (rev 25863)
+++ scummvm/trunk/engines/parallaction/animation.cpp	2007-02-25 20:12:23 UTC (rev 25864)
@@ -256,16 +256,16 @@
 
 	sprintf(vC8, "%s.script", filename);
 
-	ArchivedFile *file = openArchivedFile(vC8);
-	if (!file) errorFileNotFound(vC8);
+	if (!openArchivedFile(vC8))
+		errorFileNotFound(vC8);
 
 	uint32 size = getArchivedFileLength(vC8);
 	char* src = (char*)memAlloc(size+1);
 
-	readArchivedFile(file, src, size);
+	readArchivedFile(src, size);
 	src[size] = '\0';
 
-	closeArchivedFile(file);
+	closeArchivedFile();
 
 	_numLocals = 0;
 

Modified: scummvm/trunk/engines/parallaction/archive.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/archive.cpp	2007-02-25 19:15:00 UTC (rev 25863)
+++ scummvm/trunk/engines/parallaction/archive.cpp	2007-02-25 20:12:23 UTC (rev 25864)
@@ -27,16 +27,12 @@
 
 namespace Parallaction {
 
-struct ArchivedFile {
-	uint16	_index;
-	uint32	_offset;
-	uint32	_cursor;
-	uint16	field_A;	// unused
-	uint16	field_C;	// unused
-	uint32	_endOffset;
-};
+static bool   			_file = false;
+static uint16			_fileIndex = 0;
+static uint32			_fileOffset = 0;
+static uint32			_fileCursor = 0;
+static uint32			_fileEndOffset = 0;
 
-
 #define MAX_ARCHIVE_ENTRIES 		384
 
 #define DIRECTORY_OFFSET_IN_FILE	0x4000
@@ -53,7 +49,6 @@
 static uint32			_archiveLenghts[MAX_ARCHIVE_ENTRIES];
 static uint32			_archiveOffsets[MAX_ARCHIVE_ENTRIES];
 
-static uint32			_handle = MAX_ARCHIVE_ENTRIES;
 
 
 void openArchive(const char *file) {
@@ -106,37 +101,36 @@
 }
 
 
-ArchivedFile *openArchivedFile(const char *name) {
+bool openArchivedFile(const char *name) {
 
 	uint16 i = 0;
 	for ( ; i < MAX_ARCHIVE_ENTRIES; i++) {
 		if (!scumm_stricmp(_archiveDir[i], name)) break;
 	}
-	if (i == MAX_ARCHIVE_ENTRIES) return NULL;
+	if (i == MAX_ARCHIVE_ENTRIES) return false;
 
 	debugC(1, kDebugDisk, "file '%s' found in slot %i", name, i);
 
-	ArchivedFile *file = (ArchivedFile*)memAlloc(sizeof(ArchivedFile));
+	_file = true;
 
-	if (!file)
-		error("openArchivedFile: can't allocate buffer for '%s'", name);
+	_fileIndex = i;
+	_fileOffset = _archiveOffsets[i];
+	_fileCursor = _archiveOffsets[i];
+	_fileEndOffset = _archiveOffsets[i] + _archiveLenghts[i];
 
-	file->_index = i;
-	file->_offset = _archiveOffsets[i];
-	file->_cursor = _archiveOffsets[i];
-	file->_endOffset = _archiveOffsets[i] + _archiveLenghts[i];
+	_archive.seek(_fileOffset);
 
-	_handle = file->_index;
-	_archive.seek(file->_offset);
-
-	return file;
+	return true;
 }
 
 
 
-void closeArchivedFile(ArchivedFile *file) {
-	if (file) memFree(file);
-	_handle = MAX_ARCHIVE_ENTRIES;
+void closeArchivedFile() {
+	_file = false;
+	_fileIndex = 0;
+	_fileCursor = 0;
+	_fileOffset = 0;
+	_fileEndOffset = 0;
 	return;
 }
 
@@ -156,17 +150,19 @@
 
 
 
-int16 readArchivedFile(ArchivedFile *file, void *buffer, uint16 size) {
+int16 readArchivedFile(void *buffer, uint16 size) {
 //	printf("readArchivedFile(%i, %i)\n", file->_cursor, file->_endOffset);
+	if (_file == false)
+		error("readArchiveFile: no archived file is currently open");
 
-	if (file->_cursor == file->_endOffset) return -1;
+	if (_fileCursor == _fileEndOffset) return -1;
 
-	if (file->_endOffset - file->_cursor < size)
-		size = file->_endOffset - file->_cursor;
+	if (_fileEndOffset - _fileCursor < size)
+		size = _fileEndOffset - _fileCursor;
 
-	_archive.seek(file->_cursor);
+	_archive.seek(_fileCursor);
 	int16 read = _archive.read(buffer, size);
-	file->_cursor += read;
+	_fileCursor += read;
 
 	return read;
 }
@@ -186,7 +182,9 @@
 #endif
 
 
-char *readArchivedFileText(char *buf, uint16 size, void*) {
+char *readArchivedFileText(char *buf, uint16 size) {
+	if (_file == false)
+		error("readArchiveFileText: no archived file is currently open");
 
 	char *t = _archive.readLine(buf, size);
 

Modified: scummvm/trunk/engines/parallaction/disk.h
===================================================================
--- scummvm/trunk/engines/parallaction/disk.h	2007-02-25 19:15:00 UTC (rev 25863)
+++ scummvm/trunk/engines/parallaction/disk.h	2007-02-25 20:12:23 UTC (rev 25864)
@@ -36,13 +36,13 @@
 void openArchive(const char *file);
 void closeArchive();
 
-ArchivedFile *openArchivedFile(const char *name);
-void closeArchivedFile(ArchivedFile*);
+bool openArchivedFile(const char *name);
+void closeArchivedFile();
 
 uint16 getArchivedFileLength(const char *name);
 
-int16 readArchivedFile(ArchivedFile*, void *buffer, uint16 size);
-char *readArchivedFileText(char *buf, uint16 size, void*);
+int16 readArchivedFile(void *buffer, uint16 size);
+char *readArchivedFileText(char *buf, uint16 size);
 
 
 

Modified: scummvm/trunk/engines/parallaction/graphics.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/graphics.cpp	2007-02-25 19:15:00 UTC (rev 25863)
+++ scummvm/trunk/engines/parallaction/graphics.cpp	2007-02-25 20:12:23 UTC (rev 25864)
@@ -1020,20 +1020,19 @@
 	char path[PATH_LEN];
 
 	strcpy(path, filename);
-	ArchivedFile *file = openArchivedFile(path);
-	if (!file) {
+	if (!openArchivedFile(path)) {
 		sprintf(path, "%s.pp", filename);
-		file = openArchivedFile(path);
-		if (!file) errorFileNotFound(path);
+		if (!openArchivedFile(path))
+			errorFileNotFound(path);
 	}
 
 	cnv->_width = cnv->_height = 0;
 
 	byte unk;
-	readArchivedFile(file, &unk, 1);
-	readArchivedFile(file, &unk, 1);
+	readArchivedFile(&unk, 1);
+	readArchivedFile(&unk, 1);
 	cnv->_width = unk;
-	readArchivedFile(file, &unk, 1);
+	readArchivedFile(&unk, 1);
 	cnv->_height = unk;
 
 	uint16 compressedsize = getArchivedFileLength(path) - 3;
@@ -1042,8 +1041,8 @@
 	uint16 size = cnv->_width*cnv->_height;
 	cnv->_data0 = (byte*)memAlloc(size);
 
-	readArchivedFile(file, compressed, compressedsize);
-	closeArchivedFile(file);
+	readArchivedFile(compressed, compressedsize);
+	closeArchivedFile();
 
 	decompressChunk(compressed, cnv->_data0, size);
 	memFree(compressed);
@@ -1060,22 +1059,21 @@
 	char path[PATH_LEN];
 
 	strcpy(path, filename);
-	ArchivedFile *file = openArchivedFile(path);
-	if (!file) {
+	if (!openArchivedFile(path)) {
 		sprintf(path, "%s.pp", filename);
-		file = openArchivedFile(path);
-		if (!file) errorFileNotFound(path);
+		if (!openArchivedFile(path))
+			errorFileNotFound(path);
 	}
 
 	cnv->_count = cnv->_width = cnv->_height = 0;
 
 	byte unk;
 
-	readArchivedFile(file, &unk, 1);
+	readArchivedFile(&unk, 1);
 	cnv->_count = unk;
-	readArchivedFile(file, &unk, 1);
+	readArchivedFile(&unk, 1);
 	cnv->_width = unk;
-	readArchivedFile(file, &unk, 1);
+	readArchivedFile(&unk, 1);
 	cnv->_height = unk;
 
 	uint16 framesize = cnv->_width*cnv->_height;
@@ -1085,7 +1083,7 @@
 	uint32 size = getArchivedFileLength(path) - 3;
 
 	byte *buf = (byte*)memAlloc(size);
-	readArchivedFile(file, buf, size);
+	readArchivedFile(buf, size);
 
 	byte *s = buf;
 
@@ -1098,7 +1096,7 @@
 		s += read;
 	}
 
-	closeArchivedFile(file);
+	closeArchivedFile();
 
 	memFree(buf);
 
@@ -1167,16 +1165,16 @@
 void Graphics::loadBackground(const char *filename, Graphics::Buffers buffer) {
 //	printf("Graphics::loadBackground(%s)\n", filename);
 
-	ArchivedFile *file = openArchivedFile(filename);
-	if (!file) errorFileNotFound(filename);
+	if (!openArchivedFile(filename))
+		errorFileNotFound(filename);
 
 //	byte palette[PALETTE_SIZE];
 	byte v150[4];
-	readArchivedFile(file, _palette, PALETTE_SIZE);
-	readArchivedFile(file, &v150, 4);
+	readArchivedFile(_palette, PALETTE_SIZE);
+	readArchivedFile(&v150, 4);
 
 	byte tempfx[sizeof(PaletteFxRange)*6];
-	readArchivedFile(file, &tempfx, sizeof(PaletteFxRange)*6);
+	readArchivedFile(&tempfx, sizeof(PaletteFxRange)*6);
 
 //	setPalette(palette);
 
@@ -1207,7 +1205,7 @@
 	memset(_buffers[kMask0], 0, SCREENMASK_WIDTH*SCREEN_HEIGHT);
 
 	byte *v4 = (byte*)memAlloc(SCREEN_SIZE);
-	readArchivedFile(file, v4, SCREEN_SIZE);
+	readArchivedFile(v4, SCREEN_SIZE);
 
 	byte v144[SCREEN_WIDTH];
 
@@ -1218,7 +1216,7 @@
 	}
 
 	memFree(v4);
-	closeArchivedFile(file);
+	closeArchivedFile();
 
 	return;
 }
@@ -1231,17 +1229,17 @@
 //
 void Graphics::loadMaskAndPath(const char *filename) {
 
-	ArchivedFile *file = openArchivedFile(filename);
-	if (!file) errorFileNotFound(filename);
+	if (!openArchivedFile(filename))
+		errorFileNotFound(filename);
 
 	byte v4[4];
-	readArchivedFile(file, v4, 4);
-	readArchivedFile(file, _buffers[kPath0], SCREENPATH_WIDTH*SCREEN_HEIGHT);
-	readArchivedFile(file, _buffers[kMask0], SCREENMASK_WIDTH*SCREEN_HEIGHT);
+	readArchivedFile(v4, 4);
+	readArchivedFile(_buffers[kPath0], SCREENPATH_WIDTH*SCREEN_HEIGHT);
+	readArchivedFile(_buffers[kMask0], SCREENMASK_WIDTH*SCREEN_HEIGHT);
 
 	for (uint16 _si = 0; _si < 4; _si++) _bgLayers[_si] = v4[_si];
 
-	closeArchivedFile(file);
+	closeArchivedFile();
 	return;
 }
 

Modified: scummvm/trunk/engines/parallaction/location.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/location.cpp	2007-02-25 19:15:00 UTC (rev 25863)
+++ scummvm/trunk/engines/parallaction/location.cpp	2007-02-25 20:12:23 UTC (rev 25864)
@@ -66,11 +66,11 @@
 	_languageDir[2] = '\0';
 	openArchive(_languageDir);
 	_languageDir[2] = '/';
-	ArchivedFile *file = openArchivedFile(archivefile);
-	if (!file) {
+
+	if (!openArchivedFile(archivefile)) {
 		sprintf(archivefile, "%s%s.loc", _languageDir, filename);
-		file = openArchivedFile(archivefile);
-		if (!file) errorFileNotFound(filename);
+		if (!openArchivedFile(archivefile))
+			errorFileNotFound(filename);
 	}
 
 	uint32 count = getArchivedFileLength(archivefile);
@@ -78,8 +78,8 @@
 
 	_locationScript = new Script(location_src);
 
-	readArchivedFile(file, location_src, count);
-	closeArchivedFile(file);
+	readArchivedFile(location_src, count);
+	closeArchivedFile();
 	closeArchive();
 
 	fillBuffers(*_locationScript, true);


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