diff options
author | Filippos Karapetis | 2011-01-31 11:40:40 +0000 |
---|---|---|
committer | Filippos Karapetis | 2011-01-31 11:40:40 +0000 |
commit | 8bd7ace4d277e68ee0cdf7d6ab275d08d432ddde (patch) | |
tree | 41811a073ccb92f5d0837cc283640a76daa59918 /engines/saga/resource_rsc.cpp | |
parent | e0314f9ecd22504290ca3fb1d6e6b6db30dd6719 (diff) | |
download | scummvm-rg350-8bd7ace4d277e68ee0cdf7d6ab275d08d432ddde.tar.gz scummvm-rg350-8bd7ace4d277e68ee0cdf7d6ab275d08d432ddde.tar.bz2 scummvm-rg350-8bd7ace4d277e68ee0cdf7d6ab275d08d432ddde.zip |
SAGA: Split the resource patching code into appropriate game-specific resource methods
svn-id: r55678
Diffstat (limited to 'engines/saga/resource_rsc.cpp')
-rw-r--r-- | engines/saga/resource_rsc.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/saga/resource_rsc.cpp b/engines/saga/resource_rsc.cpp index 6d9ef70bfe..42c4dc05e8 100644 --- a/engines/saga/resource_rsc.cpp +++ b/engines/saga/resource_rsc.cpp @@ -84,4 +84,31 @@ bool ResourceContext_RSC::loadMacMIDI() { return true; } +void ResourceContext_RSC::processPatches(Resource *resource, const GamePatchDescription *patchFiles) { + const GamePatchDescription *patchDescription; + ResourceData *resourceData; + + // Process external patch files + for (patchDescription = patchFiles; patchDescription && patchDescription->fileName; ++patchDescription) { + if ((patchDescription->fileType & _fileType) != 0) { + if (patchDescription->resourceId < _table.size()) { + resourceData = &_table[patchDescription->resourceId]; + // Check if we've already found a patch for this resource. One is enough. + if (!resourceData->patchData) { + resourceData->patchData = new PatchData(patchDescription->fileName); + if (resourceData->patchData->_patchFile->open(patchDescription->fileName)) { + resourceData->offset = 0; + resourceData->size = resourceData->patchData->_patchFile->size(); + // The patched ITE file is in memory, so close the patch file + resourceData->patchData->_patchFile->close(); + } else { + delete resourceData->patchData; + resourceData->patchData = NULL; + } + } + } + } + } +} + } // End of namespace Saga |