diff options
author | daniel0916 <theschokolps@gmail.com> | 2014-04-14 22:05:04 +0200 |
---|---|---|
committer | daniel0916 <theschokolps@gmail.com> | 2014-04-14 22:05:04 +0200 |
commit | b5401ec03ad74782129e6a68eac3e9c0ccb573e2 (patch) | |
tree | edc3028cdb2947559e3dcf069c80e9d5db2d315a /src/UI/SlotArea.cpp | |
parent | Removed Debug Message (diff) | |
download | cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.tar cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.tar.gz cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.tar.bz2 cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.tar.lz cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.tar.xz cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.tar.zst cuberite-b5401ec03ad74782129e6a68eac3e9c0ccb573e2.zip |
Diffstat (limited to 'src/UI/SlotArea.cpp')
-rw-r--r-- | src/UI/SlotArea.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/UI/SlotArea.cpp b/src/UI/SlotArea.cpp index eb528d7ca..9ea2e0021 100644 --- a/src/UI/SlotArea.cpp +++ b/src/UI/SlotArea.cpp @@ -135,6 +135,12 @@ void cSlotArea::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_ClickA cItem tmp(DraggingItem); DraggingItem = Slot; Slot = tmp; + int ItemPlaceCount = GetItemPlaceCount(Slot); + if (Slot.m_ItemCount > ItemPlaceCount) + { + DraggingItem.m_ItemCount += Slot.m_ItemCount - ItemPlaceCount; + Slot.m_ItemCount = ItemPlaceCount; + } } else { @@ -147,6 +153,13 @@ void cSlotArea::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_ClickA FreeSlots = 0; } int Filling = (FreeSlots > DraggingItem.m_ItemCount) ? DraggingItem.m_ItemCount : FreeSlots; + + int ItemPlaceCount = GetItemPlaceCount(DraggingItem); + if (Filling > ItemPlaceCount) + { + Filling = ItemPlaceCount; + } + Slot.m_ItemCount += (char)Filling; DraggingItem.m_ItemCount -= (char)Filling; if (DraggingItem.m_ItemCount <= 0) @@ -315,6 +328,16 @@ bool cSlotArea::CollectItemsToHand(cItem & a_Dragging, cPlayer & a_Player, bool +int cSlotArea::GetItemPlaceCount(cItem & a_Item) +{ + cItemHandler * Handler = ItemHandler(a_Item.m_ItemType); + return Handler->GetMaxStackSize(); +} + + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cSlotAreaChest: @@ -718,6 +741,15 @@ void cSlotAreaEnchanting::ShiftClickedSlot(cPlayer & a_Player) +int cSlotAreaEnchanting::GetItemPlaceCount(cItem & a_Item) +{ + return 1; +} + + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cSlotAreaEnderChest: |