diff options
author | Max Horn | 2011-05-11 16:23:26 +0200 |
---|---|---|
committer | Max Horn | 2011-05-13 11:47:08 +0200 |
commit | 45e65d7ea04b10cf7bb5282bd66b8df609700a63 (patch) | |
tree | 9600fbf0670d552e5b68b7f55c446c0fb5c9596d /engines/scumm/script.cpp | |
parent | b37463fe5921420a9081aa6c5cf7588d52b41e78 (diff) | |
download | scummvm-rg350-45e65d7ea04b10cf7bb5282bd66b8df609700a63.tar.gz scummvm-rg350-45e65d7ea04b10cf7bb5282bd66b8df609700a63.tar.bz2 scummvm-rg350-45e65d7ea04b10cf7bb5282bd66b8df609700a63.zip |
SCUMM: Refactor how resource (types) are srepresented
Previously, we had a couple of arrays of size N (where N = number of
resource types), one for each attribute of a resource type (such as as
the number of resources of that type.
Now, we have one array of size N, whose elements are a record
aggregating all the attributes of each resource type.
Diffstat (limited to 'engines/scumm/script.cpp')
-rw-r--r-- | engines/scumm/script.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp index ae481393a9..4630ec1a5c 100644 --- a/engines/scumm/script.cpp +++ b/engines/scumm/script.cpp @@ -390,26 +390,26 @@ void ScummEngine::getScriptBaseAddress() { break; _scriptOrgPointer = getResourceAddress(rtInventory, idx); assert(idx < _numInventory); - _lastCodePtr = &_res->address[rtInventory][idx]; + _lastCodePtr = &_res->_types[rtInventory].address[idx]; break; case WIO_LOCAL: case WIO_ROOM: /* room script */ if (_game.version == 8) { _scriptOrgPointer = getResourceAddress(rtRoomScripts, _roomResource); - assert(_roomResource < _res->num[rtRoomScripts]); - _lastCodePtr = &_res->address[rtRoomScripts][_roomResource]; + assert(_roomResource < _res->_types[rtRoomScripts].num); + _lastCodePtr = &_res->_types[rtRoomScripts].address[_roomResource]; } else { _scriptOrgPointer = getResourceAddress(rtRoom, _roomResource); assert(_roomResource < _numRooms); - _lastCodePtr = &_res->address[rtRoom][_roomResource]; + _lastCodePtr = &_res->_types[rtRoom].address[_roomResource]; } break; case WIO_GLOBAL: /* global script */ _scriptOrgPointer = getResourceAddress(rtScript, ss->number); assert(ss->number < _numScripts); - _lastCodePtr = &_res->address[rtScript][ss->number]; + _lastCodePtr = &_res->_types[rtScript].address[ss->number]; break; case WIO_FLOBJECT: /* flobject script */ @@ -418,7 +418,7 @@ void ScummEngine::getScriptBaseAddress() { idx = _objs[idx].fl_object_index; _scriptOrgPointer = getResourceAddress(rtFlObject, idx); assert(idx < _numFlObject); - _lastCodePtr = &_res->address[rtFlObject][idx]; + _lastCodePtr = &_res->_types[rtFlObject].address[idx]; break; default: error("Bad type while getting base address"); @@ -1099,7 +1099,7 @@ void ScummEngine::checkAndRunSentenceScript() { // For now we assume that if there are more than 460 scripts, then // the pair 29/104 is used, else the pair 28/103. - if (_res->num[rtScript] > 460) { + if (_res->_types[rtScript].num > 460) { if (sentenceScript == 104) sentenceScript = 29; } else { |