void MenuSystem::scrollSavegames(int delta) { int newPos = CLIP<int>(_savegameListTopIndex + delta, 0, _savegames.size() - 1); _savegameListTopIndex = newPos; restoreRect(80, 92, 440, 140); setSavegameCaptions(); for (int i = 1; i <= 7; i++) drawItem((ItemID)(kItemIdSavegame1 + i - 1), false); }
void MenuSystem::setCfgVoices(bool value, bool active) { if (_cfgVoices != value) { Item *item = getItem(kItemIdToggleVoices); _cfgVoices = value; restoreRect(item->rect.left, item->rect.top, item->rect.width() + 1, item->rect.height() - 2); setItemCaption(item, _vm->getSysString(_cfgVoices ? kStrVoicesOn : kStrVoicesOff)); drawItem(kItemIdToggleVoices, true); } }
void MenuSystem::setCfgText(bool value, bool active) { if (_cfgText != value) { Item *item = getItem(kItemIdToggleText); _cfgText = value; restoreRect(item->rect.left, item->rect.top, item->rect.width() + 1, item->rect.height() - 2); setItemCaption(item, _vm->getSysString(_cfgText ? kStrTextOn : kStrTextOff)); drawItem(kItemIdToggleText, true); } }
void MenuSystem::disableItem(ItemID id) { Item *item = getItem(id); if (item) { item->enabled = false; restoreRect(item->rect.left, item->rect.top, item->rect.width(), item->rect.height()); if (_currItemID == id) { _currItemID = kItemIdNone; } } }
void MenuSystem::handleKeyDown(const Common::KeyState& kbd) { if (_editingDescription) { if (kbd.keycode >= Common::KEYCODE_SPACE && kbd.keycode <= Common::KEYCODE_z) { _editingDescriptionItem->caption += kbd.ascii; restoreRect(_editingDescriptionItem->rect.left, _editingDescriptionItem->rect.top, _editingDescriptionItem->rect.width() + 1, _editingDescriptionItem->rect.height() - 2); setItemCaption(_editingDescriptionItem, _editingDescriptionItem->caption.c_str()); drawItem(_editingDescriptionID, true); } else if (kbd.keycode == Common::KEYCODE_BACKSPACE) { _editingDescriptionItem->caption.deleteLastChar(); restoreRect(_editingDescriptionItem->rect.left, _editingDescriptionItem->rect.top, _editingDescriptionItem->rect.width() + 1, _editingDescriptionItem->rect.height() - 2); setItemCaption(_editingDescriptionItem, _editingDescriptionItem->caption.c_str()); drawItem(_editingDescriptionID, true); } else if (kbd.keycode == Common::KEYCODE_RETURN) { SavegameItem *savegameItem = getSavegameItemByID(_editingDescriptionID); _editingDescription = false; _vm->requestSavegame(savegameItem->_slotNum, _editingDescriptionItem->caption); _running = false; } else if (kbd.keycode == Common::KEYCODE_ESCAPE) { _editingDescription = false; } } }
void MenuSystem::drawVolumeBar(ItemID itemID) { int w = 440, y, volume; char text[21]; switch (itemID) { case kItemIdMaster: y = 130 + 25 * 0; volume = _cfgMasterVolume; break; case kItemIdVoices: y = 130 + 25 * 1; volume = _cfgVoicesVolume; break; case kItemIdMusic: y = 130 + 25 * 2; volume = _cfgMusicVolume; break; case kItemIdSoundFX: y = 130 + 25 * 3; volume = _cfgSoundFXVolume; break; case kItemIdBackground: y = 130 + 25 * 4; volume = _cfgBackgroundVolume; break; default: return; } Font font(_vm->_res->load(_vm->_screen->getFontResIndex(1))->data); restoreRect(390, y - font.getHeight(), 100, 25); for (int i = 0; i < volume; i++) text[i] = '|'; text[volume] = 0; drawString(0, y, w, 0, 246, text); }