SCUMM: cleanup (moved small header specific code from ScummEngine::readResTypeList to ScummEngine_v4::readResTypeList)

svn-id: r25827
This commit is contained in:
Max Horn 2007-02-24 19:20:15 +00:00
parent dcc6e2c0bb
commit 04a18dd7c4
3 changed files with 32 additions and 18 deletions

View file

@ -214,6 +214,7 @@ public:
virtual void resetScumm(); virtual void resetScumm();
protected: protected:
virtual void readResTypeList(int id, const char *name);
virtual void readIndexFile(); virtual void readIndexFile();
virtual void loadCharset(int no); virtual void loadCharset(int no);
virtual void resetRoomObjects(); virtual void resetRoomObjects();

View file

@ -512,26 +512,19 @@ void ScummEngine::readResTypeList(int id, const char *name) {
error("Invalid number of %ss (%d) in directory", name, num); error("Invalid number of %ss (%d) in directory", name, num);
} }
if (_game.features & GF_SMALL_HEADER) { for (i = 0; i < num; i++) {
for (i = 0; i < num; i++) { _res->roomno[id][i] = _fileHandle->readByte();
_res->roomno[id][i] = _fileHandle->readByte(); }
_res->roomoffs[id][i] = _fileHandle->readUint32LE(); for (i = 0; i < num; i++) {
} _res->roomoffs[id][i] = _fileHandle->readUint32LE();
} else {
for (i = 0; i < num; i++) {
_res->roomno[id][i] = _fileHandle->readByte();
}
for (i = 0; i < num; i++) {
_res->roomoffs[id][i] = _fileHandle->readUint32LE();
if (id == rtRoom && _game.heversion >= 70) if (id == rtRoom && _game.heversion >= 70)
_heV7RoomIntOffsets[i] = _res->roomoffs[id][i]; _heV7RoomIntOffsets[i] = _res->roomoffs[id][i];
} }
if (_game.heversion >= 70) { if (_game.heversion >= 70) {
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
_res->globsize[id][i] = _fileHandle->readUint32LE(); _res->globsize[id][i] = _fileHandle->readUint32LE();
}
} }
} }
} }

View file

@ -30,6 +30,26 @@
namespace Scumm { namespace Scumm {
extern const char *resTypeFromId(int id);
void ScummEngine_v4::readResTypeList(int id, const char *name) {
int num;
int i;
debug(9, "readResTypeList(%s,%s)", resTypeFromId(id), name);
num = _fileHandle->readUint16LE();
if (num != _res->num[id]) {
error("Invalid number of %ss (%d) in directory", name, num);
}
for (i = 0; i < num; i++) {
_res->roomno[id][i] = _fileHandle->readByte();
_res->roomoffs[id][i] = _fileHandle->readUint32LE();
}
}
void ScummEngine_v4::readIndexFile() { void ScummEngine_v4::readIndexFile() {
uint16 blocktype; uint16 blocktype;
uint32 itemsize; uint32 itemsize;