aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/resource_rsc.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2011-01-31 11:40:40 +0000
committerFilippos Karapetis2011-01-31 11:40:40 +0000
commit8bd7ace4d277e68ee0cdf7d6ab275d08d432ddde (patch)
tree41811a073ccb92f5d0837cc283640a76daa59918 /engines/saga/resource_rsc.cpp
parente0314f9ecd22504290ca3fb1d6e6b6db30dd6719 (diff)
downloadscummvm-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.cpp27
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