aboutsummaryrefslogtreecommitdiff
path: root/engines/composer/composer.cpp
diff options
context:
space:
mode:
authorAlyssa Milburn2011-11-03 22:44:04 +0100
committerAlyssa Milburn2011-11-03 22:44:04 +0100
commitcfdb22b95c5f48565267cc975d50a08c51a4474d (patch)
tree0daf053867f89764064a202d52c278973a0c7276 /engines/composer/composer.cpp
parent07f578b8aa8df60ab27f6ac3b9d0c1933d5e8796 (diff)
downloadscummvm-rg350-cfdb22b95c5f48565267cc975d50a08c51a4474d.tar.gz
scummvm-rg350-cfdb22b95c5f48565267cc975d50a08c51a4474d.tar.bz2
scummvm-rg350-cfdb22b95c5f48565267cc975d50a08c51a4474d.zip
COMPOSER: Add some incomplete V1 scripting support.
Diffstat (limited to 'engines/composer/composer.cpp')
-rw-r--r--engines/composer/composer.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp
index 9f4936b8c8..eb7df95ec3 100644
--- a/engines/composer/composer.cpp
+++ b/engines/composer/composer.cpp
@@ -53,6 +53,8 @@ ComposerEngine::ComposerEngine(OSystem *syst, const ComposerGameDescription *gam
ComposerEngine::~ComposerEngine() {
DebugMan.clearAllDebugChannels();
+ for (Common::List<OldScript *>::iterator i = _oldScripts.begin(); i != _oldScripts.end(); i++)
+ delete *i;
for (Common::List<Library>::iterator i = _libraries.begin(); i != _libraries.end(); i++)
delete i->_archive;
for (Common::List<Sprite>::iterator i = _sprites.begin(); i != _sprites.end(); i++)
@@ -156,6 +158,7 @@ Common::Error ComposerEngine::run() {
redraw();
+ tickOldScripts();
processAnimFrame();
} else if (_needsUpdate) {
redraw();
@@ -326,6 +329,17 @@ Common::String ComposerEngine::mangleFilename(Common::String filename) {
}
void ComposerEngine::loadLibrary(uint id) {
+ if (getGameType() == GType_ComposerV1 && !_libraries.empty()) {
+ // kill the previous page, starting with any scripts running on it
+
+ for (Common::List<OldScript *>::iterator i = _oldScripts.begin(); i != _oldScripts.end(); i++)
+ delete *i;
+ _oldScripts.clear();
+
+ Library *library = &_libraries.front();
+ unloadLibrary(library->_id);
+ }
+
Common::String filename;
if (getGameType() == GType_ComposerV1) {