aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/resource.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-07-31 16:37:34 +0000
committerJohannes Schickel2006-07-31 16:37:34 +0000
commit01b3a0b56836427cafe7707ae9e8a7189144d717 (patch)
tree6a4d04d4af7b64e95bfff1c93b8cad8f2b1a1d31 /engines/kyra/resource.cpp
parentff10c827fdc153346809b1baba62c94a35f4f467 (diff)
downloadscummvm-rg350-01b3a0b56836427cafe7707ae9e8a7189144d717.tar.gz
scummvm-rg350-01b3a0b56836427cafe7707ae9e8a7189144d717.tar.bz2
scummvm-rg350-01b3a0b56836427cafe7707ae9e8a7189144d717.zip
Yet more kyra3 init code.
svn-id: r23648
Diffstat (limited to 'engines/kyra/resource.cpp')
-rw-r--r--engines/kyra/resource.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/engines/kyra/resource.cpp b/engines/kyra/resource.cpp
index 2d9e22b9e8..995d8869c5 100644
--- a/engines/kyra/resource.cpp
+++ b/engines/kyra/resource.cpp
@@ -214,6 +214,38 @@ bool Resource::fileHandle(const char *file, uint32 *size, Common::File &filehand
return false;
}
+uint32 Resource::getFileSize(const char *file) {
+ Common::List<ResourceFile*>::iterator start = _pakfiles.begin();
+
+ Common::File temp;
+ if (temp.open(file))
+ return temp.size();
+
+ for (;start != _pakfiles.end(); ++start) {
+ uint32 size = (*start)->getFileSize(file);
+
+ if (size)
+ return size;
+ }
+
+ return 0;
+}
+
+bool Resource::loadFileToBuf(const char *file, void *buf, uint32 maxSize) {
+ Common::File tempHandle;
+ uint32 size = 0;
+ if (!fileHandle(file, &size, tempHandle))
+ return false;
+
+ if (size > maxSize)
+ return false;
+
+ memset(buf, 0, maxSize);
+ tempHandle.read(buf, size);
+
+ return true;
+}
+
///////////////////////////////////////////
// Pak file manager
#define PAKFile_Iterate Common::List<PakChunk>::iterator start=_files.begin();start != _files.end(); ++start