diff options
author | Johannes Schickel | 2006-07-31 16:37:34 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-07-31 16:37:34 +0000 |
commit | 01b3a0b56836427cafe7707ae9e8a7189144d717 (patch) | |
tree | 6a4d04d4af7b64e95bfff1c93b8cad8f2b1a1d31 /engines/kyra/resource.cpp | |
parent | ff10c827fdc153346809b1baba62c94a35f4f467 (diff) | |
download | scummvm-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.cpp | 32 |
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 |