[Scummvm-cvs-logs] SF.net SVN: scummvm: [31541] scummvm/trunk/engines/kyra/resource.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Thu Apr 17 18:55:13 CEST 2008


Revision: 31541
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31541&view=rev
Author:   lordhoto
Date:     2008-04-17 09:55:13 -0700 (Thu, 17 Apr 2008)

Log Message:
-----------
Fixed Kyra 3 TLK file loading.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/resource.cpp

Modified: scummvm/trunk/engines/kyra/resource.cpp
===================================================================
--- scummvm/trunk/engines/kyra/resource.cpp	2008-04-17 16:38:26 UTC (rev 31540)
+++ scummvm/trunk/engines/kyra/resource.cpp	2008-04-17 16:55:13 UTC (rev 31541)
@@ -685,26 +685,19 @@
 		uint32 filename = stream.readUint32LE();
 		uint32 offset = stream.readUint32LE();
 
-		entry.offset = offset;
-		entry.size = 0;
+		entry.offset = offset+4;
 
 		char realFilename[20];
 		snprintf(realFilename, 20, "%.08u.AUD", filename);
 
+		uint32 curOffset = stream.pos();
+		stream.seek(entry.offset+2, SEEK_SET);
+		entry.size = stream.readUint32LE();
+		stream.seek(curOffset, SEEK_SET);
+
 		files.push_back(FileList::value_type(realFilename, entry));
 	}
 
-	Common::sort(files.begin(), files.end(), ResLoaderTlk::sortTlkFileList);
-
-	for (FileList::iterator iter = files.begin(); iter != files.end(); ++iter) {
-		FileList::const_iterator next = ResLoaderTlk::nextFile(files, iter);
-		uint32 endOffset = (next == files.end() ? stream.size() : next->entry.offset);
-	
-		assert(endOffset >= iter->entry.offset);
-
-		iter->entry.size = endOffset - iter->entry.offset;
-	}
-
 	return true;
 }
 
@@ -717,20 +710,6 @@
 	return stream;
 }
 
-bool ResLoaderTlk::sortTlkFileList(const File &l, const File &r) {
-	return (l.entry.offset < r.entry.offset);
-}
-
-ResLoaderTlk::FileList::const_iterator ResLoaderTlk::nextFile(const FileList &list, FileList::const_iterator iter) {
-	ResArchiveLoader::FileList::const_iterator next = iter;
-	while ((++next) != list.end()) {
-		if (next->entry.offset != iter->entry.offset)
-			return next;
-	}
-
-	return next;
-}
-
 #pragma mark -
 
 void Resource::initializeLoaders() {


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