From bc54fde8e1f58b910026644d606ba140aa3032c4 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Thu, 29 Jul 2010 19:08:07 +0000 Subject: SCI: Ignore setAttribute() on any non-existent menu items This fixes two fan games: Al Pond 2 and Aquarius. The original interpreter did this as well. svn-id: r51477 --- engines/sci/graphics/menu.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'engines/sci/graphics') diff --git a/engines/sci/graphics/menu.cpp b/engines/sci/graphics/menu.cpp index 120c43f379..630626c128 100644 --- a/engines/sci/graphics/menu.cpp +++ b/engines/sci/graphics/menu.cpp @@ -271,14 +271,15 @@ GuiMenuItemEntry *GfxMenu::findItem(uint16 menuId, uint16 itemId) { void GfxMenu::kernelSetAttribute(uint16 menuId, uint16 itemId, uint16 attributeId, reg_t value) { GuiMenuItemEntry *itemEntry = findItem(menuId, itemId); + if (!itemEntry) { - // Check if the game actually has a menu. PQ2 demo calls this, for example, but has no menus. - // (bug report #3034507) - if (_itemList.size() == 0) - return; - else - error("Tried to setAttribute() on non-existant menu-item %d:%d", menuId, itemId); + // PQ2 demo calls this, for example, but has no menus (bug report #3034507). Some SCI + // fan games (Al Pond 2, Aquarius) call this too on non-existent menu items. The + // original interpreter ignored these as well. + debugC(2, kDebugLevelGraphics, "Tried to setAttribute() on non-existent menu-item %d:%d", menuId, itemId); + return; } + switch (attributeId) { case SCI_MENU_ATTRIBUTE_ENABLED: itemEntry->enabled = value.isNull() ? false : true; -- cgit v1.2.3