diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-05-11 18:39:15 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-06-01 12:52:16 +0300 |
commit | f45b10598c4a128510d7c469a6fe669587c01a3e (patch) | |
tree | 6a35598bcf52ee3e380890dbac3c2d013b83a2d2 /src/gui/outfitwindow.cpp | |
parent | 9f85b059aff7c54043d85c3422f02be3570d5050 (diff) | |
download | mv-f45b10598c4a128510d7c469a6fe669587c01a3e.tar.gz mv-f45b10598c4a128510d7c469a6fe669587c01a3e.tar.bz2 mv-f45b10598c4a128510d7c469a6fe669587c01a3e.tar.xz mv-f45b10598c4a128510d7c469a6fe669587c01a3e.zip |
add dragdrop between inventory and outfits window.
Diffstat (limited to 'src/gui/outfitwindow.cpp')
-rw-r--r-- | src/gui/outfitwindow.cpp | 60 |
1 files changed, 17 insertions, 43 deletions
diff --git a/src/gui/outfitwindow.cpp b/src/gui/outfitwindow.cpp index 2b9f57825..04320049c 100644 --- a/src/gui/outfitwindow.cpp +++ b/src/gui/outfitwindow.cpp @@ -23,6 +23,7 @@ #include "gui/outfitwindow.h" #include "configuration.h" +#include "dragdrop.h" #include "emoteshortcut.h" #include "equipment.h" #include "game.h" @@ -78,13 +79,9 @@ OutfitWindow::OutfitWindow(): keyName(mCurrentOutfit).c_str()))), mBoxWidth(33), mBoxHeight(33), - mCursorPosX(0), - mCursorPosY(0), mGridWidth(4), mGridHeight(4), - mItemMoved(nullptr), mItems(), - mItemSelected(-1), mAwayOutfit(0), mBorderColor(getThemeColor(Theme::BORDER, 64)), mBackgroundColor(getThemeColor(Theme::BACKGROUND, 32)), @@ -374,6 +371,7 @@ void OutfitWindow::draw(gcn::Graphics *graphics) } } } +/* if (mItemMoved) { // Draw the item image being dragged by the cursor. @@ -386,6 +384,7 @@ void OutfitWindow::draw(gcn::Graphics *graphics) g->drawImage(image, tPosX, tPosY); } } +*/ BLOCK_END("OutfitWindow::draw") } @@ -394,7 +393,7 @@ void OutfitWindow::mouseDragged(gcn::MouseEvent &event) { if (event.getButton() == gcn::MouseEvent::LEFT) { - if (!mItemMoved && mItemClicked) + if (dragDrop.isEmpty() && mItemClicked) { if (mCurrentOutfit < 0 || mCurrentOutfit >= static_cast<signed int>(OUTFITS_COUNT)) @@ -423,17 +422,12 @@ void OutfitWindow::mouseDragged(gcn::MouseEvent &event) { Item *const item = inv->findItem(itemId, itemColor); if (item) - mItemMoved = item; + dragDrop.dragItem(item, DragDropSource::DRAGDROP_SOURCE_OUTFIT); else - mItemMoved = nullptr; + dragDrop.clear(); mItems[mCurrentOutfit][index] = -1; } } - if (mItemMoved) - { - mCursorPosX = event.getX(); - mCursorPosY = event.getY(); - } } Window::mouseDragged(event); } @@ -457,19 +451,9 @@ void OutfitWindow::mousePressed(gcn::MouseEvent &event) mMoved = false; event.consume(); - // Stores the selected item if there is one. - if (isItemSelected()) - { - mItems[mCurrentOutfit][index] = mItemSelected; - mItemColors[mCurrentOutfit][index] = mItemColorSelected; - - if (inventoryWindow) - inventoryWindow->unselectItem(); - } - else if (mItems[mCurrentOutfit][index]) - { + if (mItems[mCurrentOutfit][index]) mItemClicked = true; - } + Window::mousePressed(event); } @@ -485,17 +469,21 @@ void OutfitWindow::mouseReleased(gcn::MouseEvent &event) const int index = getIndexFromGrid(event.getX(), event.getY()); if (index == -1) { - mItemMoved = nullptr; + dragDrop.clear(); Window::mouseReleased(event); return; } mMoved = false; event.consume(); - if (mItemMoved) + if (!dragDrop.isEmpty()) { - mItems[mCurrentOutfit][index] = mItemMoved->getId(); - mItemColors[mCurrentOutfit][index] = mItemMoved->getColor(); - mItemMoved = nullptr; + Item *const item = dragDrop.getItem(); + if (item) + { + mItems[mCurrentOutfit][index] = item->getId(); + mItemColors[mCurrentOutfit][index] = item->getColor(); + dragDrop.clear(); + } } if (mItemClicked) mItemClicked = false; @@ -665,20 +653,6 @@ void OutfitWindow::unwearAwayOutfit() wearOutfit(OUTFITS_COUNT); } -void OutfitWindow::setItemSelected(const Item *const item) -{ - if (item) - { - mItemSelected = item->getId(); - mItemColorSelected = item->getColor(); - } - else - { - mItemSelected = -1; - mItemColorSelected = 1; - } -} - void OutfitWindow::clearCurrentOutfit() { if (mCurrentOutfit < 0 || mCurrentOutfit |