From 344efb2009b8c6d329a6d19dd45ed49076252710 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 8 Aug 2017 00:38:31 +0300 Subject: Add into skill context menu for add shortcut. Also add chat command for add skill shortcut by skill id into free slot. --- src/gui/popups/popupmenu.cpp | 5 +++++ src/gui/shortcut/itemshortcut.cpp | 10 ++++++++++ src/gui/shortcut/itemshortcut.h | 2 ++ src/gui/widgets/skilllistbox.h | 5 +---- src/gui/widgets/skillrectanglelistbox.h | 5 +---- src/gui/windows/skilldialog.cpp | 6 ++---- 6 files changed, 21 insertions(+), 12 deletions(-) (limited to 'src/gui') diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index 27ef1887c..ba71e8d04 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2249,6 +2249,11 @@ void PopupMenu::showSkillPopup(const SkillInfo *const info) // TRANSLATORS: popup menu header mBrowserBox->addRow(_("Skill")); + mBrowserBox->addRow("/addskillshortcut 'ITEMID'", + // TRANSLATORS: popup menu item + // TRANSLATORS: add skill to shortcurs tab + _("Add skill shortcut")); + mBrowserBox->addSeparator("##3---"); mBrowserBox->addRow("/showskilllevels 'ITEMID'", // TRANSLATORS: popup menu item // TRANSLATORS: set skill level diff --git a/src/gui/shortcut/itemshortcut.cpp b/src/gui/shortcut/itemshortcut.cpp index 7b9bab6e6..2f80f6759 100644 --- a/src/gui/shortcut/itemshortcut.cpp +++ b/src/gui/shortcut/itemshortcut.cpp @@ -277,3 +277,13 @@ void ItemShortcut::swap(const int index1, const int index2) mItemData[index2] = tmpData; save(); } + +size_t ItemShortcut::getFreeIndex() const +{ + for (size_t i = 0; i < SHORTCUT_ITEMS; i++) + { + if (mItems[i] < 0) + return i; + } + return -1; +} diff --git a/src/gui/shortcut/itemshortcut.h b/src/gui/shortcut/itemshortcut.h index b7ea160a7..15324d30c 100644 --- a/src/gui/shortcut/itemshortcut.h +++ b/src/gui/shortcut/itemshortcut.h @@ -168,6 +168,8 @@ class ItemShortcut final void clear(); + size_t getFreeIndex() const A_WARN_UNUSED; + private: int mItems[SHORTCUT_ITEMS]; /**< The items. */ ItemColor mItemColors[SHORTCUT_ITEMS]; /**< The item colors. */ diff --git a/src/gui/widgets/skilllistbox.h b/src/gui/widgets/skilllistbox.h index 93c702381..46f116d4c 100644 --- a/src/gui/widgets/skilllistbox.h +++ b/src/gui/widgets/skilllistbox.h @@ -224,10 +224,7 @@ class SkillListBox final : public ListBox return; dragDrop.dragSkill(skill, DragDropSource::Skills); dragDrop.setItem(skill->id + SKILL_MIN_ID); - dragDrop.setItemData(strprintf("%d %d %d", - CAST_S32(skill->customCastType), - skill->customOffsetX, - skill->customOffsetY)); + dragDrop.setItemData(skill->toDataStr()); } ListBox::mouseDragged(event); } diff --git a/src/gui/widgets/skillrectanglelistbox.h b/src/gui/widgets/skillrectanglelistbox.h index 88698de1c..a0775db3c 100644 --- a/src/gui/widgets/skillrectanglelistbox.h +++ b/src/gui/widgets/skillrectanglelistbox.h @@ -306,10 +306,7 @@ class SkillRectangleListBox final : public Widget, return; dragDrop.dragSkill(skill, DragDropSource::Skills); dragDrop.setItem(skill->id + SKILL_MIN_ID); - dragDrop.setItemData(strprintf("%d %d %d", - CAST_S32(skill->customCastType), - skill->customOffsetX, - skill->customOffsetY)); + dragDrop.setItemData(skill->toDataStr()); } } } diff --git a/src/gui/windows/skilldialog.cpp b/src/gui/windows/skilldialog.cpp index f48baaf83..b4e277b98 100644 --- a/src/gui/windows/skilldialog.cpp +++ b/src/gui/windows/skilldialog.cpp @@ -268,10 +268,8 @@ void SkillDialog::update() info->id + SKILL_MIN_ID, fromInt(info->customSelectedLevel, ItemColor)); - shortcuts->setItemData(idx, strprintf("%d %d %d", - CAST_S32(info->customCastType), - info->customOffsetX, - info->customOffsetY)); + shortcuts->setItemData(idx, + info->toDataStr()); idx ++; } } -- cgit v1.2.3-60-g2f50