diff options
author | Paul Gilbert | 2014-09-06 17:55:01 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-09-06 17:55:01 -0400 |
commit | 94068dddf7af94e3d9d784056b310f16f000db92 (patch) | |
tree | 4db1cb7005a6fe4d9265bd2fafb1a9e7c7ffa88b | |
parent | 5e099e90bcdfb87c289b919ddac60e60fbf6bdd7 (diff) | |
download | scummvm-rg350-94068dddf7af94e3d9d784056b310f16f000db92.tar.gz scummvm-rg350-94068dddf7af94e3d9d784056b310f16f000db92.tar.bz2 scummvm-rg350-94068dddf7af94e3d9d784056b310f16f000db92.zip |
MADS: Properly free menu items when main menu is freed
-rw-r--r-- | engines/mads/nebular/dialogs_nebular.cpp | 4 | ||||
-rw-r--r-- | engines/mads/nebular/menu_nebular.cpp | 7 | ||||
-rw-r--r-- | engines/mads/scene_data.cpp | 8 |
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; |