summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/popups/popupmenu.cpp55
-rw-r--r--src/gui/popups/popupmenu.h3
-rw-r--r--src/gui/windows/skilldialog.cpp20
-rw-r--r--src/gui/windows/skilldialog.h6
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,