summaryrefslogtreecommitdiff
path: root/src/gui/widgets/itemshortcutcontainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets/itemshortcutcontainer.cpp')
-rw-r--r--src/gui/widgets/itemshortcutcontainer.cpp137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/gui/widgets/itemshortcutcontainer.cpp b/src/gui/widgets/itemshortcutcontainer.cpp
index cc835903d..a0c807963 100644
--- a/src/gui/widgets/itemshortcutcontainer.cpp
+++ b/src/gui/widgets/itemshortcutcontainer.cpp
@@ -216,6 +216,143 @@ void ItemShortcutContainer::draw(Graphics *graphics)
BLOCK_END("ItemShortcutContainer::draw")
}
+void ItemShortcutContainer::safeDraw(Graphics *graphics)
+{
+ BLOCK_START("ItemShortcutContainer::draw")
+ const ItemShortcut *const selShortcut = itemShortcut[mNumber];
+ if (!selShortcut)
+ {
+ BLOCK_END("ItemShortcutContainer::draw")
+ return;
+ }
+
+ if (settings.guiAlpha != mAlpha)
+ {
+ if (mBackgroundImg)
+ mBackgroundImg->setAlpha(mAlpha);
+ mAlpha = settings.guiAlpha;
+ }
+
+ Font *const font = getFont();
+ safeDrawBackground(graphics);
+
+ const Inventory *const inv = PlayerInfo::getInventory();
+ if (!inv)
+ {
+ BLOCK_END("ItemShortcutContainer::draw")
+ return;
+ }
+
+ // +++ for future usage need reorder drawing images before text or back
+ for (unsigned i = 0; i < mMaxItems; i++)
+ {
+ const int itemX = (i % mGridWidth) * mBoxWidth;
+ const int itemY = (i / mGridWidth) * mBoxHeight;
+
+ // Draw item keyboard shortcut.
+ const std::string key = inputManager.getKeyValueString(
+ InputAction::SHORTCUT_1 + i);
+ font->drawString(graphics,
+ mForegroundColor,
+ mForegroundColor,
+ key,
+ itemX + 2, itemY + 2);
+
+ const int itemId = selShortcut->getItem(i);
+ const unsigned char itemColor = selShortcut->getItemColor(i);
+
+ if (itemId < 0)
+ continue;
+
+ // this is item
+ if (itemId < SPELL_MIN_ID)
+ {
+ const Item *const item = inv->findItem(itemId, itemColor);
+ if (item)
+ {
+ // Draw item icon.
+ Image *const image = item->getImage();
+ if (image)
+ {
+ std::string caption;
+ if (item->getQuantity() > 1)
+ caption = toString(item->getQuantity());
+ else if (item->isEquipped() == Equipped_true)
+ caption = "Eq.";
+
+ image->setAlpha(1.0F);
+ graphics->drawImage(image, itemX, itemY);
+ if (item->isEquipped() == Equipped_true)
+ {
+ font->drawString(graphics,
+ mEquipedColor,
+ mEquipedColor2,
+ caption,
+ itemX + (mBoxWidth - font->getWidth(caption)) / 2,
+ itemY + mBoxHeight - 14);
+ }
+ else
+ {
+ font->drawString(graphics,
+ mUnEquipedColor,
+ mUnEquipedColor2,
+ caption,
+ itemX + (mBoxWidth - font->getWidth(caption)) / 2,
+ itemY + mBoxHeight - 14);
+ }
+ }
+ }
+ }
+ else if (itemId < SKILL_MIN_ID && spellManager)
+ { // this is magic shortcut
+ const TextCommand *const spell = spellManager
+ ->getSpellByItem(itemId);
+ if (spell)
+ {
+ if (!spell->isEmpty())
+ {
+ Image *const image = spell->getImage();
+
+ if (image)
+ {
+ image->setAlpha(1.0F);
+ graphics->drawImage(image, itemX, itemY);
+ }
+ }
+
+ font->drawString(graphics,
+ mForegroundColor,
+ mForegroundColor,
+ spell->getSymbol(),
+ itemX + 2, itemY + mBoxHeight / 2);
+ }
+ }
+ else if (skillDialog)
+ {
+ const SkillInfo *const skill = skillDialog->getSkill(
+ itemId - SKILL_MIN_ID);
+ if (skill)
+ {
+ Image *const image = skill->data->icon;
+
+ if (image)
+ {
+ image->setAlpha(1.0F);
+ graphics->drawImage(image, itemX, itemY);
+ }
+
+ font->drawString(graphics,
+ mForegroundColor,
+ mForegroundColor,
+ skill->data->shortName,
+ itemX + 2,
+ itemY + mBoxHeight / 2);
+ }
+ }
+ }
+ BLOCK_END("ItemShortcutContainer::draw")
+}
+
void ItemShortcutContainer::mouseDragged(MouseEvent &event)
{
ItemShortcut *const selShortcut = itemShortcut[mNumber];