Skip to content

Commit

Permalink
DIRECTOR: Renew shared resources when loading new folder
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitry Iskrich authored and sev- committed Aug 3, 2016
1 parent 038a3ca commit 4b871b6
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
16 changes: 16 additions & 0 deletions engines/director/director.cpp
Expand Up @@ -56,6 +56,8 @@ DirectorEngine::DirectorEngine(OSystem *syst, const DirectorGameDescription *gam
_mainArchive = 0;
_macBinary = 0;
_currentPalette = 0;
//FIXME
_sharedMMM = "SHARDCST.MMM";

_movies = new Common::HashMap<Common::String, Score *>();
const Common::FSNode gameDataDir(ConfMan.get("path"));
Expand Down Expand Up @@ -210,6 +212,11 @@ Common::HashMap<Common::String, Score *> DirectorEngine::loadMMMNames(Common::St

if (!movies.empty()) {
for (Common::FSList::const_iterator i = movies.begin(); i != movies.end(); ++i) {
if (i->getName() == _sharedMMM) {
loadSharedCastsFrom(i->getPath());
continue;
}

RIFFArchive *arc = new RIFFArchive();
arc->openFile(i->getPath());
Score *sc = new Score(this);
Expand Down Expand Up @@ -402,6 +409,15 @@ void DirectorEngine::loadSharedCastsFrom(Common::String filename) {
_sharedSTXT[*iterator] = shardcst->getResource(MKTAG('S','T','X','T'), *iterator);
}
}

Common::Array<uint16> sound = shardcst->getResourceIDList(MKTAG('S','N','D',' '));

if (stxt.size() != 0) {
Common::Array<uint16>::iterator iterator;
for (iterator = sound.begin(); iterator != sound.end(); ++iterator) {
_sharedSTXT[*iterator] = shardcst->getResource(MKTAG('S','N','D',' '), *iterator);
}
}
}

} // End of namespace Director
4 changes: 4 additions & 0 deletions engines/director/director.h
Expand Up @@ -91,9 +91,13 @@ class DirectorEngine : public ::Engine {
void loadMac();

Common::String readPascalString(Common::SeekableReadStream &stream);

Common::String _sharedMMM;
Common::HashMap<int, Cast *> _sharedCasts;
Common::HashMap<int, Common::SeekableReadStream *> _sharedDIB;
Common::HashMap<int, Common::SeekableReadStream *> _sharedSTXT;
Common::HashMap<int, Common::SeekableReadStream *> _sharedSound;

Archive *_mainArchive;
Common::MacResManager *_macBinary;
DirectorSound *_soundManager;
Expand Down
2 changes: 1 addition & 1 deletion engines/director/score.cpp
Expand Up @@ -676,7 +676,7 @@ void Score::update() {

Common::SortedArray<Label *>::iterator i;
for (i = _labels->begin(); i != _labels->end(); ++i) {
if ((*i)->number = _currentFrame) {
if ((*i)->number == _currentFrame) {
_currentLabel = (*i)->name;
}
}
Expand Down

0 comments on commit 4b871b6

Please sign in to comment.