From 05d71675f69e13d8ab590a33b38ee6d0f8a77b6f Mon Sep 17 00:00:00 2001 From: "luksor111@gmail.com" Date: Wed, 19 Dec 2012 21:19:36 +0000 Subject: Added dispensers (they can't dispense items yet) Fixed crash when digging snow Moved BlockPlace hook check, so Core plugin will no longer block item usage Player chat messages are now visible in the console git-svn-id: http://mc-server.googlecode.com/svn/trunk@1081 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/UI/SlotArea.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ source/UI/SlotArea.h | 21 +++++++++++++++++++++ source/UI/Window.cpp | 15 +++++++++++++++ source/UI/Window.h | 12 ++++++++++++ 4 files changed, 96 insertions(+) (limited to 'source/UI') diff --git a/source/UI/SlotArea.cpp b/source/UI/SlotArea.cpp index 4b6d237ba..01f77d74a 100644 --- a/source/UI/SlotArea.cpp +++ b/source/UI/SlotArea.cpp @@ -7,6 +7,7 @@ #include "SlotArea.h" #include "../Player.h" #include "../ChestEntity.h" +#include "../DispenserEntity.h" #include "../FurnaceEntity.h" #include "../Items/ItemHandler.h" #include "Window.h" @@ -414,6 +415,53 @@ cCraftingRecipe & cSlotAreaCrafting::GetRecipeForPlayer(cPlayer & a_Player) +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cSlotAreaFurnace: + +cSlotAreaDispenser::cSlotAreaDispenser(cDispenserEntity * a_Dispenser, cWindow & a_ParentWindow) : + cSlotArea(9, a_ParentWindow), + m_Dispenser(a_Dispenser) +{ +} + + + + + +void cSlotAreaDispenser::Clicked(cPlayer & a_Player, int a_SlotNum, bool a_IsRightClick, bool a_IsShiftPressed, const cItem & a_ClickedItem) +{ + super::Clicked(a_Player, a_SlotNum, a_IsRightClick, a_IsShiftPressed, a_ClickedItem); + + if (m_Dispenser == NULL) + { + LOGERROR("cSlotAreaDispenser::Clicked(): m_Dispenser == NULL"); + ASSERT(!"cSlotAreaDispenser::Clicked(): m_Dispenser == NULL"); + return; + } +} + + + + + +const cItem * cSlotAreaDispenser::GetSlot(int a_SlotNum, cPlayer & a_Player) +{ + return m_Dispenser->GetSlot(a_SlotNum); +} + + + + + +void cSlotAreaDispenser::SetSlot(int a_SlotNum, cPlayer & a_Player, const cItem & a_Item) +{ + m_Dispenser->SetSlot(a_SlotNum, a_Item); +} + + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cSlotAreaFurnace: diff --git a/source/UI/SlotArea.h b/source/UI/SlotArea.h index ffb8ed553..50c7e0c28 100644 --- a/source/UI/SlotArea.h +++ b/source/UI/SlotArea.h @@ -15,6 +15,7 @@ class cWindow; class cPlayer; class cChestEntity; +class cDispenserEntity; class cFurnaceEntity; class cCraftingRecipe; @@ -231,6 +232,26 @@ protected: +class cSlotAreaDispenser : + public cSlotArea +{ + typedef cSlotArea super; + +public: + cSlotAreaDispenser(cDispenserEntity * a_Dispenser, cWindow & a_ParentWindow); + + virtual void Clicked(cPlayer & a_Player, int a_SlotNum, bool a_IsRightClick, bool a_IsShiftPressed, const cItem & a_ClickedItem) override; + virtual const cItem * GetSlot(int a_SlotNum, cPlayer & a_Player) override; + virtual void SetSlot(int a_SlotNum, cPlayer & a_Player, const cItem & a_Item) override; + +protected: + cDispenserEntity * m_Dispenser; +} ; + + + + + class cSlotAreaFurnace : public cSlotArea { diff --git a/source/UI/Window.cpp b/source/UI/Window.cpp index dc5587390..7ad7b1a58 100644 --- a/source/UI/Window.cpp +++ b/source/UI/Window.cpp @@ -460,6 +460,21 @@ cChestWindow::~cChestWindow() +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cDispenserWindow: + +cDispenserWindow::cDispenserWindow(int a_BlockX, int a_BlockY, int a_BlockZ, cDispenserEntity * a_Dispenser) : + cWindow(cWindow::Dispenser, "MCS-Dispenser") +{ + m_SlotAreas.push_back(new cSlotAreaDispenser(a_Dispenser, *this)); + m_SlotAreas.push_back(new cSlotAreaInventory(*this)); + m_SlotAreas.push_back(new cSlotAreaHotBar(*this)); +} + + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // cFurnaceWindow: diff --git a/source/UI/Window.h b/source/UI/Window.h index a570ed480..f939727c9 100644 --- a/source/UI/Window.h +++ b/source/UI/Window.h @@ -19,6 +19,7 @@ class cPlayer; class cWindowOwner; class cClientHandle; class cChestEntity; +class cDispenserEntity; class cFurnaceEntity; class cSlotArea; class cWorld; @@ -148,6 +149,17 @@ public: +class cDispenserWindow : + public cWindow +{ +public: + cDispenserWindow(int a_BlockX, int a_BlockY, int a_BlockZ, cDispenserEntity * a_Dispenser); +} ; + + + + + class cChestWindow : public cWindow { -- cgit v1.2.3