diff options
author | stevenhoefel | 2017-04-03 11:33:02 +1000 |
---|---|---|
committer | stevenhoefel | 2017-04-03 11:33:02 +1000 |
commit | 7b9afc37ce87f05d72f42980fe8eff1ad57478dd (patch) | |
tree | 9e24607a151e73f9cc54c90ba866c35b53624f80 /engines/director/score.cpp | |
parent | 320cdbeac3da4ecad8464ed068921f0b9fce0844 (diff) | |
download | scummvm-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.cpp | 15 |
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: |