summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@hotmail.co.uk>2014-01-16 19:44:11 +0100
committerTiger Wang <ziwei.tiger@hotmail.co.uk>2014-01-16 19:44:11 +0100
commit5d03e49c138ad45486452a5ecaebf162a4882c71 (patch)
tree11e9067d0af146b6c907779fb0e5e0d37f9558fd
parentMerge remote-tracking branch 'origin/master' into customnames (diff)
downloadcuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.tar
cuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.tar.gz
cuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.tar.bz2
cuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.tar.lz
cuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.tar.xz
cuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.tar.zst
cuberite-5d03e49c138ad45486452a5ecaebf162a4882c71.zip
-rw-r--r--src/Item.cpp19
-rw-r--r--src/Item.h3
-rw-r--r--src/UI/SlotArea.cpp13
3 files changed, 25 insertions, 10 deletions
diff --git a/src/Item.cpp b/src/Item.cpp
index 9170006b6..58b3d41c9 100644
--- a/src/Item.cpp
+++ b/src/Item.cpp
@@ -99,6 +99,25 @@ bool cItem::IsFullStack(void) const
+void cItem::CustomCopy(cItem & a_OtherItem, bool a_CopyType, bool a_CopyCount, bool a_CopyDamage, bool a_CopyEnchantments, bool a_CopyCustomName, bool a_CopyLore)
+{
+ if (a_CopyType)
+ m_ItemType = a_OtherItem.m_ItemType;
+ if (a_CopyCount)
+ m_ItemCount = a_OtherItem.m_ItemCount;
+ if (a_CopyDamage)
+ m_ItemDamage = a_OtherItem.m_ItemDamage;
+ if (a_CopyEnchantments)
+ m_Enchantments = a_OtherItem.m_Enchantments;
+ if (a_CopyCustomName)
+ m_CustomName = a_OtherItem.m_CustomName;
+ if (a_CopyLore)
+ m_Lore = a_OtherItem.m_Lore;
+}
+
+
+
+
char cItem::GetMaxStackSize(void) const
{
diff --git a/src/Item.h b/src/Item.h
index a59ab0348..97c4c2ba2 100644
--- a/src/Item.h
+++ b/src/Item.h
@@ -134,6 +134,9 @@ public:
bool IsCustomNameEmpty(void) const { return (m_CustomName.empty()); }
bool IsLoreEmpty(void) const { return (m_Lore.empty()); }
+
+ /** Copies specified internal variables from another item to this item */
+ void CustomCopy(cItem & a_OtherItem, bool a_CopyType, bool a_CopyCount, bool a_CopyDamage, bool a_CopyEnchantments, bool a_CopyCustomName, bool a_CopyLore);
/// Returns a copy of this item with m_ItemCount set to 1. Useful to preserve enchantments etc. on stacked items
diff --git a/src/UI/SlotArea.cpp b/src/UI/SlotArea.cpp
index df3687fda..318c099e9 100644
--- a/src/UI/SlotArea.cpp
+++ b/src/UI/SlotArea.cpp
@@ -87,11 +87,8 @@ void cSlotArea::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_ClickA
{
DraggingItem.m_ItemCount = (char)(((float)Slot.m_ItemCount) / 2.f + 0.5f);
Slot.m_ItemCount -= DraggingItem.m_ItemCount;
- DraggingItem.m_ItemType = Slot.m_ItemType;
- DraggingItem.m_ItemDamage = Slot.m_ItemDamage;
- DraggingItem.m_Enchantments = Slot.m_Enchantments;
- DraggingItem.m_CustomName = Slot.m_CustomName;
- DraggingItem.m_Lore = Slot.m_Lore;
+
+ DraggingItem.CustomCopy(Slot, true, false, true, true, true, true);
if (Slot.m_ItemCount <= 0)
{
@@ -104,14 +101,10 @@ void cSlotArea::Clicked(cPlayer & a_Player, int a_SlotNum, eClickAction a_ClickA
cItemHandler * Handler = ItemHandler(Slot.m_ItemType);
if ((DraggingItem.m_ItemCount > 0) && (Slot.m_ItemCount < Handler->GetMaxStackSize()))
{
- Slot.m_ItemType = DraggingItem.m_ItemType;
Slot.m_ItemCount++;
- Slot.m_ItemDamage = DraggingItem.m_ItemDamage;
DraggingItem.m_ItemCount--;
- Slot.m_Enchantments = DraggingItem.m_Enchantments;
- Slot.m_CustomName = DraggingItem.m_CustomName;
- Slot.m_Lore = DraggingItem.m_Lore;
+ Slot.CustomCopy(DraggingItem, true, false, true, true, true, true);
}
if (DraggingItem.m_ItemCount <= 0)
{