fix menu masking

This commit is contained in:
Jesús A. Álvarez
2019-11-05 21:50:02 +01:00
parent f32c6b66e0
commit 6f453b6184

View File

@@ -246,13 +246,14 @@ static void MaskMenus(uint32 expandMem, uint32 lowMemPtr, std::vector<SDL_Rect>
return;
}
inMenuSelect = true;
uint16 mbEntryOffset = ReadMacInt16(mbSaveLoc);
if (lastMenuEntry == menuEntries && *lastMenuEntry == 0) {
if (mbEntryOffset == 0) {
inMenuSelect = false;
return;
} else if (lastMenuEntry == menuEntries && *lastMenuEntry == 0) {
// first menu
*lastMenuEntry = mbEntryOffset;
} else if (mbEntryOffset > *lastMenuEntry) {
} else if (mbEntryOffset > *lastMenuEntry && lastMenuEntry < &menuEntries[16]) {
// added menu
*(++lastMenuEntry) = mbEntryOffset;
} else if (mbEntryOffset < *lastMenuEntry) {
@@ -260,6 +261,8 @@ static void MaskMenus(uint32 expandMem, uint32 lowMemPtr, std::vector<SDL_Rect>
lastMenuEntry--;
}
inMenuSelect = true;
// mask all menus
for (uint16 *entry = menuEntries; entry <= lastMenuEntry; entry++) {
rects.push_back(MaskMenu(mbSaveLoc + *entry));