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::addClickTextItem(ItemID id, int x, int y, int w, uint fontNum, const char *caption, byte defaultColor, byte activeColor) { Item item; item.id = id; item.defaultColor = defaultColor; item.activeColor = activeColor; item.x = x; item.y = y; item.w = w; item.fontNum = fontNum; setItemCaption(&item, caption); _items.push_back(item); }
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::setSavegameCaptions(bool scrollToBottom) { int size = _savegames.size(); if (scrollToBottom && size > 0) { while (_savegameListTopIndex + 7 <= size) _savegameListTopIndex += 6; } int index = _savegameListTopIndex; for (int i = 1; i <= 7; i++) setItemCaption(getItem((ItemID)(kItemIdSavegame1 + i - 1)), index < size ? _savegames[index++]._description.c_str() : ""); if (_savegameListTopIndex == 0) { disableItem(kItemIdSavegameUp); } else { enableItem(kItemIdSavegameUp); } if (_savegameListTopIndex + 7 > size) { disableItem(kItemIdSavegameDown); } else { enableItem(kItemIdSavegameDown); } }
void MenuSystem::setSavegameCaptions() { uint index = _savegameListTopIndex; for (int i = 1; i <= 7; i++) setItemCaption(getItem((ItemID)(kItemIdSavegame1 + i - 1)), index < _savegames.size() ? _savegames[index++]._description.c_str() : ""); }