aboutsummaryrefslogtreecommitdiff
path: root/engines/director/score.cpp
diff options
context:
space:
mode:
authorstevenhoefel2017-04-03 11:33:02 +1000
committerstevenhoefel2017-04-03 11:33:02 +1000
commit7b9afc37ce87f05d72f42980fe8eff1ad57478dd (patch)
tree9e24607a151e73f9cc54c90ba866c35b53624f80 /engines/director/score.cpp
parent320cdbeac3da4ecad8464ed068921f0b9fce0844 (diff)
downloadscummvm-rg350-7b9afc37ce87f05d72f42980fe8eff1ad57478dd.tar.gz
scummvm-rg350-7b9afc37ce87f05d72f42980fe8eff1ad57478dd.tar.bz2
scummvm-rg350-7b9afc37ce87f05d72f42980fe8eff1ad57478dd.zip
DIRECTOR: Pre-load Button child text members.
Diffstat (limited to 'engines/director/score.cpp')
-rw-r--r--engines/director/score.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 3ab17fc835..e8210b59e0 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -430,8 +430,21 @@ void Score::setSpriteCasts() {
if (_vm->getSharedScore()->_loadedButtons->contains(castId)) {
_frames[i]->_sprites[j]->_buttonCast = _vm->getSharedScore()->_loadedButtons->getVal(castId);
+ if (_frames[i]->_sprites[j]->_buttonCast->children.size() == 1) {
+ _frames[i]->_sprites[j]->_textCast =
+ _vm->getSharedScore()->_loadedText->getVal(_frames[i]->_sprites[j]->_buttonCast->children[0].index);
+ } else if (_frames[i]->_sprites[j]->_buttonCast->children.size() > 0) {
+ warning("Cast %d has too many children!", j);
+ }
} else if (_loadedButtons->contains(castId)) {
_frames[i]->_sprites[j]->_buttonCast = _loadedButtons->getVal(castId);
+ if (_frames[i]->_sprites[j]->_buttonCast->children.size() == 1) {
+ Resource child = _frames[i]->_sprites[j]->_buttonCast->children[0];
+ _loadedText->setVal(child.index, new TextCast(*_movieArchive->getResource(child.tag, child.index), _vm->getVersion()));
+ _frames[i]->_sprites[j]->_textCast = _loadedText->getVal(child.index);
+ } else if (_frames[i]->_sprites[j]->_buttonCast->children.size() > 0) {
+ warning("Cast %d has too many children!", j);
+ }
}
//if (_loadedScripts->contains(castId))
@@ -521,6 +534,8 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id,
break;
case kCastButton:
_loadedButtons->setVal(id, new ButtonCast(castStream, _vm->getVersion()));
+ for (uint child = 0; child < res->children.size(); child++)
+ _loadedButtons->getVal(id)->children.push_back(res->children[child]);
_castTypes[id] = kCastButton;
break;
case kCastLingoScript: