diff options
author | Mattes D <github@xoft.cz> | 2015-03-11 14:26:04 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2015-03-11 14:26:04 +0100 |
commit | 1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0 (patch) | |
tree | 961b0a521e31ba4f0a1b3516b49173c723ae24bd /src/UI/MinecartWithChestWindow.h | |
parent | Merge pull request #1805 from mc-server/chunkDataFix (diff) | |
parent | Moved window code into cpp files (diff) | |
download | cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.tar cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.tar.gz cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.tar.bz2 cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.tar.lz cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.tar.xz cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.tar.zst cuberite-1b60fe12a859287d1fc9f923fb2c85e30e7f9ad0.zip |
Diffstat (limited to 'src/UI/MinecartWithChestWindow.h')
-rw-r--r-- | src/UI/MinecartWithChestWindow.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/UI/MinecartWithChestWindow.h b/src/UI/MinecartWithChestWindow.h new file mode 100644 index 000000000..a2b5283a6 --- /dev/null +++ b/src/UI/MinecartWithChestWindow.h @@ -0,0 +1,67 @@ + +// MinecartWithChestWindow.h + +// Representing the UI window for the minecart chest entity + + + + + +#pragma once + +#include "Window.h" +#include "../Entities/Minecart.h" + + + + + +class cMinecartWithChestWindow : + public cWindow +{ + typedef cWindow super; + +public: + cMinecartWithChestWindow(cMinecartWithChest * a_ChestCart) : + cWindow(wtChest, "Minecart with Chest"), + m_ChestCart(a_ChestCart) + { + m_SlotAreas.push_back(new cSlotAreaMinecartWithChest(a_ChestCart, *this)); + m_SlotAreas.push_back(new cSlotAreaInventory(*this)); + m_SlotAreas.push_back(new cSlotAreaHotBar(*this)); + + a_ChestCart->GetWorld()->BroadcastSoundEffect("random.chestopen", a_ChestCart->GetPosX(), a_ChestCart->GetPosY(), a_ChestCart->GetPosZ(), 1, 1); + } + + virtual void DistributeStack(cItem & a_ItemStack, int a_Slot, cPlayer & a_Player, cSlotArea* a_ClickedArea, bool a_ShouldApply) override + { + cSlotAreas AreasInOrder; + + if (a_ClickedArea == m_SlotAreas[0]) + { + // Chest Area + AreasInOrder.push_back(m_SlotAreas[2]); /* Hotbar */ + AreasInOrder.push_back(m_SlotAreas[1]); /* Inventory */ + super::DistributeStackToAreas(a_ItemStack, a_Player, AreasInOrder, a_ShouldApply, true); + } + else + { + // Hotbar or Inventory + AreasInOrder.push_back(m_SlotAreas[0]); /* Chest */ + super::DistributeStackToAreas(a_ItemStack, a_Player, AreasInOrder, a_ShouldApply, false); + } + } + + + ~cMinecartWithChestWindow() + { + m_ChestCart->GetWorld()->BroadcastSoundEffect("random.chestclosed", m_ChestCart->GetPosX(), m_ChestCart->GetPosY(), m_ChestCart->GetPosZ(), 1, 1); + } + +private: + cMinecartWithChest * m_ChestCart; +}; + + + + |