aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorEugene Sandulenko2010-05-09 18:27:56 +0000
committerEugene Sandulenko2010-05-09 18:27:56 +0000
commit57f2425b28575a06ae483b57afe316dd80c46323 (patch)
treebadbfa1b805e37ad2f27ef6a2475d45581706756 /engines/scumm
parent99be18906835207af566264efac4b0242b2763d2 (diff)
downloadscummvm-rg350-57f2425b28575a06ae483b57afe316dd80c46323.tar.gz
scummvm-rg350-57f2425b28575a06ae483b57afe316dd80c46323.tar.bz2
scummvm-rg350-57f2425b28575a06ae483b57afe316dd80c46323.zip
Patch #2901515: HE: Resource Forks on Mac OS X
svn-id: r48984
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/he/resource_he.cpp57
1 files changed, 16 insertions, 41 deletions
diff --git a/engines/scumm/he/resource_he.cpp b/engines/scumm/he/resource_he.cpp
index 967acebc1e..886ee99e57 100644
--- a/engines/scumm/he/resource_he.cpp
+++ b/engines/scumm/he/resource_he.cpp
@@ -1144,59 +1144,34 @@ MacResExtractor::MacResExtractor(ScummEngine_v70he *scumm) : ResExtractor(scumm)
}
int MacResExtractor::extractResource(int id, byte **buf) {
- Common::File in;
- int size;
-
- if (_fileName.empty()) { // We are running for the first time
- _fileName = _vm->generateFilename(-3);
-
- // Some programs write it as .bin. Try that too
- if (!in.open(_fileName)) {
- Common::String tmp(_fileName);
-
- _fileName += ".bin";
-
- if (!in.open(_fileName)) {
- // And finally check if we have dumped resource fork
- _fileName = tmp;
- _fileName += ".bin";
- if (!in.open(_fileName)) {
- error("Cannot open file any of files '%s', '%s.bin', '%s.rsrc",
- tmp.c_str(), tmp.c_str(), tmp.c_str());
- }
- }
- }
- } else
- in.open(_fileName);
-
- if (!in.isOpen()) {
- error("Cannot open file %s", _fileName.c_str());
+ // Create the MacResManager if not created already
+ if (_resMgr == NULL) {
+ _resMgr = new Common::MacResManager();
+ if (!_resMgr->open(_vm->generateFilename(-3)))
+ error("Cannot open file %s", _fileName.c_str());
}
- in.close();
-
- if (_resMgr == NULL)
- _resMgr = new Common::MacResManager(_fileName);
-
- *buf = _resMgr->getResource("crsr", 1000 + id, &size);
-
- if (*buf == NULL)
+ Common::SeekableReadStream *dataStream = _resMgr->getResource('crsr', 1000 + id);
+
+ if (!dataStream)
error("There is no cursor ID #%d", 1000 + id);
+
+ uint32 size = dataStream->size();
+ *buf = (byte *)malloc(size);
+ dataStream->read(*buf, size);
+ delete dataStream;
return size;
}
int MacResExtractor::convertIcons(byte *data, int datasize, byte **cursor, int *w, int *h,
int *hotspot_x, int *hotspot_y, int *keycolor, byte **palette, int *palSize) {
-
- _resMgr->convertCursor(data, datasize, cursor, w, h, hotspot_x, hotspot_y, keycolor,
- _vm->_system->hasFeature(OSystem::kFeatureCursorHasPalette), palette, palSize);
-
+
+ _resMgr->convertCrsrCursor(data, datasize, cursor, w, h, hotspot_x, hotspot_y, keycolor,
+ _vm->_system->hasFeature(OSystem::kFeatureCursorHasPalette), palette, palSize);
return 1;
}
-
-
void ScummEngine_v70he::readRoomsOffsets() {
int num, i;
byte *ptr;