aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/script.cpp
diff options
context:
space:
mode:
authorMax Horn2011-05-11 16:23:26 +0200
committerMax Horn2011-05-13 11:47:08 +0200
commit45e65d7ea04b10cf7bb5282bd66b8df609700a63 (patch)
tree9600fbf0670d552e5b68b7f55c446c0fb5c9596d /engines/scumm/script.cpp
parentb37463fe5921420a9081aa6c5cf7588d52b41e78 (diff)
downloadscummvm-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.cpp14
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 {