diff options
Diffstat (limited to 'src/gui/popups')
-rw-r--r-- | src/gui/popups/popupmenu.cpp | 57 | ||||
-rw-r--r-- | src/gui/popups/popupmenu.h | 2 | ||||
-rw-r--r-- | src/gui/popups/skillpopup.cpp | 39 | ||||
-rw-r--r-- | src/gui/popups/skillpopup.h | 1 |
4 files changed, 93 insertions, 6 deletions
diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index d0896efaa..e7e866491 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2361,7 +2361,7 @@ void PopupMenu::showNpcDialogPopup(const BeingId npcId, void PopupMenu::showSkillPopup(const SkillInfo *const info) { - if (!info || info->level <= 1) + if (!info) return; setMousePos(); @@ -2373,10 +2373,17 @@ void PopupMenu::showSkillPopup(const SkillInfo *const info) // TRANSLATORS: popup menu header mBrowserBox->addRow(_("Skill")); - mBrowserBox->addRow("/showskilllevels 'ITEMID'", + if (info->level > 1) + { + mBrowserBox->addRow("/showskilllevels 'ITEMID'", + // TRANSLATORS: popup menu item + // TRANSLATORS: set skill level + _("Skill level...")); + } + mBrowserBox->addRow("/showskilltypes 'ITEMID'", // TRANSLATORS: popup menu item - // TRANSLATORS: set skill level - _("Set skill level")); + // TRANSLATORS: set skill cast type + _("Skill cast type...")); // TRANSLATORS: popup menu item // TRANSLATORS: close menu mBrowserBox->addRow("cancel", _("Cancel")); @@ -2422,6 +2429,48 @@ void PopupMenu::showSkillLevelMenu() showPopup(mX, mY); } +void PopupMenu::showSkillTypePopup(const SkillInfo *const info) +{ + if (!info) + return; + setMousePos(); + + // using mItemId as skill id + mItemId = info->id; + // using mItemIndex as skill level + mItemIndex = info->level; + + for (int f = 0; f < maxCards; f ++) + mItemCards[f] = 0; + mBrowserBox->clearRows(); + + // TRANSLATORS: popup menu item + // TRANSLATORS: skill cast type header + mBrowserBox->addRow(_("Select skill cast type")); + mBrowserBox->addRow(strprintf("/selectskilltype %d 0", mItemId), + // TRANSLATORS: popup menu item + // TRANSLATORS: skill cast type + _("Default")); + mBrowserBox->addRow(strprintf("/selectskilltype %d 1", mItemId), + // TRANSLATORS: popup menu item + // TRANSLATORS: skill cast type + _("Target")); + mBrowserBox->addRow(strprintf("/selectskilltype %d 2", mItemId), + // TRANSLATORS: popup menu item + // TRANSLATORS: skill cast type + _("Mouse position")); + mBrowserBox->addRow(strprintf("/selectskilltype %d 3", mItemId), + // TRANSLATORS: popup menu item + // TRANSLATORS: skill cast type + _("Self")); + mBrowserBox->addRow("##3---"); + // TRANSLATORS: popup menu item + // TRANSLATORS: close menu + mBrowserBox->addRow("cancel", _("Cancel")); + + showPopup(mX, mY); +} + void PopupMenu::showPopup(int x, int y) { const int pad2 = 2 * mPadding; diff --git a/src/gui/popups/popupmenu.h b/src/gui/popups/popupmenu.h index a7a745873..ba88e93f1 100644 --- a/src/gui/popups/popupmenu.h +++ b/src/gui/popups/popupmenu.h @@ -165,6 +165,8 @@ class PopupMenu final : public Popup, public LinkHandler void showSkillLevelPopup(const SkillInfo *const info); + void showSkillTypePopup(const SkillInfo *const info); + void showCraftPopup(); void showEmoteType(); diff --git a/src/gui/popups/skillpopup.cpp b/src/gui/popups/skillpopup.cpp index f6e1f19a7..4c9af3d0f 100644 --- a/src/gui/popups/skillpopup.cpp +++ b/src/gui/popups/skillpopup.cpp @@ -46,6 +46,7 @@ SkillPopup::SkillPopup() : mSkillDesc(new TextBox(this)), mSkillEffect(new TextBox(this)), mSkillLevel(new TextBox(this)), + mSkillCastType(new TextBox(this)), mLastId(0U), mLastLevel(-1) { @@ -68,6 +69,11 @@ SkillPopup::SkillPopup() : mSkillLevel->setPosition(0, 3 * fontHeight); mSkillLevel->setForegroundColorAll(getThemeColor(ThemeColorId::POPUP), getThemeColor(ThemeColorId::POPUP_OUTLINE)); + + mSkillCastType->setEditable(false); + mSkillCastType->setPosition(0, 4 * fontHeight); + mSkillCastType->setForegroundColorAll(getThemeColor(ThemeColorId::POPUP), + getThemeColor(ThemeColorId::POPUP_OUTLINE)); } void SkillPopup::postInit() @@ -77,6 +83,7 @@ void SkillPopup::postInit() add(mSkillDesc); add(mSkillEffect); add(mSkillLevel); + add(mSkillCastType); addMouseListener(this); } @@ -136,6 +143,27 @@ void SkillPopup::show(const SkillInfo *const skill, 196); } } + std::string castStr; + switch (skill->customCastType) + { + case CastType::Default: + default: + castStr = _("Default"); + break; + case CastType::Target: + castStr = _("Target"); + break; + case CastType::Position: + castStr = _("Mouse position"); + break; + case CastType::Self: + castStr = _("Self position"); + break; + } + mSkillCastType->setTextWrapped(strprintf( + // TRANSLATORS: skill cast type + _("Cast type: %s"), + castStr.c_str()), 196); int minWidth = mSkillName->getWidth(); @@ -147,25 +175,32 @@ void SkillPopup::show(const SkillInfo *const skill, minWidth = mSkillEffect->getMinWidth(); if (mSkillLevel->getMinWidth() > minWidth) minWidth = mSkillLevel->getMinWidth(); + if (mSkillCastType->getMinWidth() > minWidth) + minWidth = mSkillCastType->getMinWidth(); const int numRowsDesc = mSkillDesc->getNumberOfRows(); const int numRowsEffect = mSkillEffect->getNumberOfRows(); const int numRowsLevel = mSkillLevel->getNumberOfRows(); + const int numRowsCast = mSkillCastType->getNumberOfRows(); const int height = getFont()->getHeight(); if (skill->skillEffect.empty()) { setContentSize(minWidth, - (numRowsDesc + numRowsLevel + 1) * height); + (numRowsDesc + numRowsLevel + numRowsCast + 1) * height); mSkillLevel->setPosition(0, (numRowsDesc + 1) * height); + mSkillCastType->setPosition(0, (numRowsDesc + 2) * height); } else { setContentSize(minWidth, - (numRowsDesc + numRowsLevel + numRowsEffect + 1) * height); + (numRowsDesc + numRowsLevel + numRowsEffect + numRowsCast + 1) * + height); mSkillEffect->setPosition(0, (numRowsDesc + 1) * height); mSkillLevel->setPosition(0, (numRowsDesc + numRowsEffect + 1) * height); + mSkillCastType->setPosition(0, + (numRowsDesc + numRowsEffect + 2) * height); } mSkillDesc->setPosition(0, 1 * height); diff --git a/src/gui/popups/skillpopup.h b/src/gui/popups/skillpopup.h index 33d6d50cc..be416330a 100644 --- a/src/gui/popups/skillpopup.h +++ b/src/gui/popups/skillpopup.h @@ -66,6 +66,7 @@ class SkillPopup final : public Popup TextBox *mSkillDesc A_NONNULLPOINTER; TextBox *mSkillEffect A_NONNULLPOINTER; TextBox *mSkillLevel A_NONNULLPOINTER; + TextBox *mSkillCastType A_NONNULLPOINTER; unsigned int mLastId; int mLastLevel; }; |