aboutsummaryrefslogtreecommitdiff
path: root/engines/m4/mads_scene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/m4/mads_scene.cpp')
-rw-r--r--engines/m4/mads_scene.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/engines/m4/mads_scene.cpp b/engines/m4/mads_scene.cpp
index 194aaa1317..df5e6ba220 100644
--- a/engines/m4/mads_scene.cpp
+++ b/engines/m4/mads_scene.cpp
@@ -49,6 +49,11 @@ MadsScene::MadsScene(MadsEngine *vm): _sceneResources(), Scene(vm, &_sceneResour
actionNouns[i] = 0;
}
+MadsScene::~MadsScene() {
+ leaveScene();
+ _vm->_viewManager->deleteView(_interfaceSurface);
+}
+
/**
* Secondary scene loading code
*/
@@ -76,10 +81,6 @@ void MadsScene::loadSceneTemporary() {
_backgroundSurface->translate(_palData);
if (_currentScene < 900) {
- /*_backgroundSurface->fillRect(Common::Rect(0, MADS_SURFACE_HEIGHT,
- _backgroundSurface->width(), _backgroundSurface->height()),
- _vm->_palette->BLACK);*/
- // TODO: interface palette
_interfaceSurface->madsloadInterface(0, &_interfacePal);
_vm->_palette->addRange(_interfacePal);
_interfaceSurface->translate(_interfacePal);
@@ -107,6 +108,12 @@ void MadsScene::loadScene(int sceneNumber) {
// Handle common scene setting
Scene::loadScene(sceneNumber);
+ _madsVm->globals()->previousScene = _madsVm->globals()->sceneNumber;
+ _madsVm->globals()->sceneNumber = sceneNumber;
+
+ // Existing ScummVM code that needs to be eventually replaced with MADS code
+ loadSceneTemporary();
+
// Signal the script engine what scene is to be active
_sceneLogic.selectScene(sceneNumber);
_sceneLogic.setupScene();
@@ -120,9 +127,6 @@ void MadsScene::loadScene(int sceneNumber) {
// Do any scene specific setup
_sceneLogic.enterScene();
- // Existing ScummVM code that needs to be eventually replaced with MADS code
- loadSceneTemporary();
-
// Purge resources
_vm->res()->purge();
}
@@ -159,7 +163,6 @@ void MadsScene::leaveScene() {
for (uint i = 0; i <_sceneSprites.size(); ++i) delete _sceneSprites[i];
_sceneSprites.clear();
- delete _backgroundSurface;
delete _walkSurface;
Scene::leaveScene();