diff options
author | Mattes D <github@xoft.cz> | 2014-04-25 08:11:49 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-04-25 08:11:49 +0200 |
commit | a40108da90f8d0e4fff4027e45176cbe637106ad (patch) | |
tree | eacd3dbb2f969e3cedfecaa16b0f23d6c59f5fb5 /src/Items/ItemArmor.h | |
parent | Merge pull request #929 from archshift/master (diff) | |
parent | Add commit what the code is doing. (diff) | |
download | cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.tar cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.tar.gz cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.tar.bz2 cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.tar.lz cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.tar.xz cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.tar.zst cuberite-a40108da90f8d0e4fff4027e45176cbe637106ad.zip |
Diffstat (limited to 'src/Items/ItemArmor.h')
-rw-r--r-- | src/Items/ItemArmor.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/Items/ItemArmor.h b/src/Items/ItemArmor.h new file mode 100644 index 000000000..08cddb1ad --- /dev/null +++ b/src/Items/ItemArmor.h @@ -0,0 +1,67 @@ + +#pragma once + +#include "ItemHandler.h" +#include "../World.h" + + + + + +class cItemArmorHandler : + public cItemHandler +{ +public: + cItemArmorHandler(int a_ItemType) : + cItemHandler(a_ItemType) + { + } + + /** Move the armor to the armor slot of the player's inventory */ + virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override + { + int SlotNum; + if (ItemCategory::IsHelmet(a_Item.m_ItemType)) + { + SlotNum = 0; + } + else if (ItemCategory::IsChestPlate(a_Item.m_ItemType)) + { + SlotNum = 1; + } + else if (ItemCategory::IsLeggings(a_Item.m_ItemType)) + { + SlotNum = 2; + } + else if (ItemCategory::IsBoots(a_Item.m_ItemType)) + { + SlotNum = 3; + } + else + { + LOGWARNING("Used unknown armor: %i", a_Item.m_ItemType); + return false; + } + + if (!a_Player->GetInventory().GetArmorSlot(SlotNum).IsEmpty()) + { + return false; + } + + a_Player->GetInventory().SetArmorSlot(SlotNum, a_Item.CopyOne()); + + cItem Item(a_Item); + Item.m_ItemCount--; + if (Item.m_ItemCount <= 0) + { + Item.Empty(); + } + a_Player->GetInventory().SetHotbarSlot(a_Player->GetInventory().GetEquippedSlotNum(), Item); + return true; + } + +} ; + + + + |