diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/popups/popupmenu.cpp | 55 | ||||
-rw-r--r-- | src/gui/popups/popupmenu.h | 3 | ||||
-rw-r--r-- | src/gui/windows/skilldialog.cpp | 20 | ||||
-rw-r--r-- | src/gui/windows/skilldialog.h | 6 |
4 files changed, 84 insertions, 0 deletions
diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index b7a7a282e..8257033b4 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2397,6 +2397,14 @@ void PopupMenu::showSkillPopup(const SkillInfo *const info) // TRANSLATORS: popup menu item // TRANSLATORS: set skill cast type _("Skill cast type...")); + mBrowserBox->addRow("/showskilloffsetx 'ITEMID'", + // TRANSLATORS: popup menu item + // TRANSLATORS: set skill cast offset by x + _("Skill offset by x...")); + mBrowserBox->addRow("/showskilloffsety 'ITEMID'", + // TRANSLATORS: popup menu item + // TRANSLATORS: set skill cast offset by y + _("Skill offset by y...")); // TRANSLATORS: popup menu item // TRANSLATORS: close menu mBrowserBox->addRow("cancel", _("Cancel")); @@ -2404,6 +2412,53 @@ void PopupMenu::showSkillPopup(const SkillInfo *const info) showPopup(mX, mY); } +void PopupMenu::showSkillOffsetPopup(const SkillInfo *const info, + const bool isOffsetX) +{ + if (!info) + return; + setMousePos2(); + + // using mItemId as skill id + mItemId = info->id; + // using mItemIndex as skill level + mItemIndex = info->level; + mBrowserBox->clearRows(); + char letter = ' '; + + if (isOffsetX) + { + // TRANSLATORS: popup menu header + mBrowserBox->addRow(_("Skill cast offset by x")); + letter = 'x'; + } + else + { + // TRANSLATORS: popup menu header + mBrowserBox->addRow(_("Skill cast offset by y")); + letter = 'y'; + } + for (int f = -9; f <= 9; f ++) + { + const std::string command = strprintf( + "/setskilloffset%c 'ITEMID' %d", letter, f); + if (f == 0) + { + mBrowserBox->addRow(command, + strprintf("%d", f).c_str()); + } + else + { + mBrowserBox->addRow(command, + strprintf("%+d", f).c_str()); + } + } + // TRANSLATORS: popup menu item + // TRANSLATORS: close menu + mBrowserBox->addRow("cancel", _("Cancel")); + showPopup(mX, mY); +} + void PopupMenu::showSkillLevelPopup(const SkillInfo *const info) { if (!info) diff --git a/src/gui/popups/popupmenu.h b/src/gui/popups/popupmenu.h index 45c9bdda7..7bd4c085e 100644 --- a/src/gui/popups/popupmenu.h +++ b/src/gui/popups/popupmenu.h @@ -167,6 +167,9 @@ class PopupMenu final : public Popup, public LinkHandler void showSkillTypePopup(const SkillInfo *const info); + void showSkillOffsetPopup(const SkillInfo *const info, + const bool isOffsetX); + void showCraftPopup(); void showEmoteType(); diff --git a/src/gui/windows/skilldialog.cpp b/src/gui/windows/skilldialog.cpp index d002f93aa..41f63899e 100644 --- a/src/gui/windows/skilldialog.cpp +++ b/src/gui/windows/skilldialog.cpp @@ -1161,3 +1161,23 @@ void SkillDialog::selectSkillCastType(const int skillId, info->customCastType = type; info->update(); } + +void SkillDialog::setSkillOffsetX(const int skillId, + const int offset) +{ + SkillInfo *const info = getSkill(skillId); + if (!info) + return; + info->customOffsetX = offset; + info->update(); +} + +void SkillDialog::setSkillOffsetY(const int skillId, + const int offset) +{ + SkillInfo *const info = getSkill(skillId); + if (!info) + return; + info->customOffsetY = offset; + info->update(); +} diff --git a/src/gui/windows/skilldialog.h b/src/gui/windows/skilldialog.h index aa3f479c1..4adf813af 100644 --- a/src/gui/windows/skilldialog.h +++ b/src/gui/windows/skilldialog.h @@ -165,6 +165,12 @@ class SkillDialog final : public Window, void selectSkillCastType(const int skillId, const CastTypeT type); + void setSkillOffsetX(const int skillId, + const int offset); + + void setSkillOffsetY(const int skillId, + const int offset); + private: static void useSkillDefault(const SkillInfo *const info, const AutoTarget autoTarget, |