aboutsummaryrefslogtreecommitdiff
path: root/engines/mads
diff options
context:
space:
mode:
authorPaul Gilbert2014-09-06 17:55:01 -0400
committerPaul Gilbert2014-09-06 17:55:01 -0400
commit94068dddf7af94e3d9d784056b310f16f000db92 (patch)
tree4db1cb7005a6fe4d9265bd2fafb1a9e7c7ffa88b /engines/mads
parent5e099e90bcdfb87c289b919ddac60e60fbf6bdd7 (diff)
downloadscummvm-rg350-94068dddf7af94e3d9d784056b310f16f000db92.tar.gz
scummvm-rg350-94068dddf7af94e3d9d784056b310f16f000db92.tar.bz2
scummvm-rg350-94068dddf7af94e3d9d784056b310f16f000db92.zip
MADS: Properly free menu items when main menu is freed
Diffstat (limited to 'engines/mads')
-rw-r--r--engines/mads/nebular/dialogs_nebular.cpp4
-rw-r--r--engines/mads/nebular/menu_nebular.cpp7
-rw-r--r--engines/mads/scene_data.cpp8
3 files changed, 15 insertions, 4 deletions
diff --git a/engines/mads/nebular/dialogs_nebular.cpp b/engines/mads/nebular/dialogs_nebular.cpp
index f5702ccb31..1792dabb15 100644
--- a/engines/mads/nebular/dialogs_nebular.cpp
+++ b/engines/mads/nebular/dialogs_nebular.cpp
@@ -607,6 +607,9 @@ void FullScreenDialog::display() {
_vm->_screen.setClipBounds(Common::Rect(0, DIALOG_TOP, MADS_SCREEN_WIDTH,
DIALOG_TOP + MADS_SCENE_HEIGHT));
_vm->_game->_scene.restrictScene();
+
+ if (_screenId > 0)
+ scene._spriteSlots.fullRefresh();
}
/*------------------------------------------------------------------------*/
@@ -966,6 +969,7 @@ void GameDialog::refreshText() {
DifficultyDialog::DifficultyDialog(MADSEngine *vm) : GameDialog(vm) {
setLines();
+ _vm->_palette->resetGamePalette(4, 8);
}
void DifficultyDialog::setLines() {
diff --git a/engines/mads/nebular/menu_nebular.cpp b/engines/mads/nebular/menu_nebular.cpp
index 6e55b9c18f..85d9adf974 100644
--- a/engines/mads/nebular/menu_nebular.cpp
+++ b/engines/mads/nebular/menu_nebular.cpp
@@ -102,6 +102,13 @@ MainMenu::MainMenu(MADSEngine *vm): MenuView(vm) {
}
MainMenu::~MainMenu() {
+ Scene &scene = _vm->_game->_scene;
+ for (int i = 0; i < 7; ++i) {
+ if (_menuItemIndexes[i] != -1)
+ scene._sprites.remove(_menuItemIndexes[i]);
+ }
+
+ scene._spriteSlots.reset();
}
void MainMenu::display() {
diff --git a/engines/mads/scene_data.cpp b/engines/mads/scene_data.cpp
index 66848ca939..174579a624 100644
--- a/engines/mads/scene_data.cpp
+++ b/engines/mads/scene_data.cpp
@@ -232,11 +232,11 @@ void SceneInfo::load(int sceneId, int variant, const Common::String &resName,
infoFile.close();
if (_vm->getGameID() == GType_RexNebular) {
- loadMadsV1Background(sceneId, resName, flags, bgSurface);
- loadPalette(sceneId, _artFileNum, resName, flags, bgSurface);
+ loadMadsV1Background(_sceneId, resName, flags, bgSurface);
+ loadPalette(_sceneId, _artFileNum, resName, flags, bgSurface);
} else {
- loadMadsV2Background(sceneId, resName, flags, bgSurface);
- loadPalette(sceneId, sceneId, resName, flags, bgSurface);
+ loadMadsV2Background(_sceneId, resName, flags, bgSurface);
+ loadPalette(_sceneId, _sceneId, resName, flags, bgSurface);
}
Common::Array<SpriteAsset *> spriteSets;