summaryrefslogtreecommitdiffstats
path: root/src/Entities/Minecart.h
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@hotmail.co.uk>2014-09-13 00:18:02 +0200
committerTiger Wang <ziwei.tiger@hotmail.co.uk>2014-09-13 00:18:02 +0200
commit3e741134279e02d204a8d4638f2d46dfbf814d0c (patch)
treea6781315a66a2fb6f8c16ab21f9f36ea7741fb6d /src/Entities/Minecart.h
parentFixed friction being applied whilst airborne (diff)
downloadcuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.tar
cuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.tar.gz
cuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.tar.bz2
cuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.tar.lz
cuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.tar.xz
cuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.tar.zst
cuberite-3e741134279e02d204a8d4638f2d46dfbf814d0c.zip
Diffstat (limited to '')
-rw-r--r--src/Entities/Minecart.h40
1 files changed, 30 insertions, 10 deletions
diff --git a/src/Entities/Minecart.h b/src/Entities/Minecart.h
index 410d3c77d..f77a171ba 100644
--- a/src/Entities/Minecart.h
+++ b/src/Entities/Minecart.h
@@ -10,6 +10,7 @@
#pragma once
#include "Entity.h"
+#include "../UI/WindowOwner.h"
@@ -108,27 +109,46 @@ protected:
class cMinecartWithChest :
- public cMinecart
+ public cMinecart,
+ public cItemGrid::cListener,
+ public cWindowOwner
{
typedef cMinecart super;
public:
CLASS_PROTODEF(cMinecartWithChest)
- /// Number of item slots in the chest
- static const int NumSlots = 9 * 3;
-
cMinecartWithChest(double a_X, double a_Y, double a_Z);
+
+ enum
+ {
+ ContentsHeight = 3,
+ ContentsWidth = 9,
+ };
- const cItem & GetSlot(int a_Idx) const { return m_Items[a_Idx]; }
- cItem & GetSlot(int a_Idx) { return m_Items[a_Idx]; }
-
- void SetSlot(size_t a_Idx, const cItem & a_Item);
+ const cItem & GetSlot(int a_Idx) const { return m_Contents.GetSlot(a_Idx); }
+ void SetSlot(size_t a_Idx, const cItem & a_Item) { m_Contents.SetSlot(a_Idx, a_Item); }
protected:
+ cItemGrid m_Contents;
+ void OpenNewWindow(void);
+ virtual void Destroyed() override;
- /// The chest contents:
- cItem m_Items[NumSlots];
+ // cItemGrid::cListener overrides:
+ virtual void OnSlotChanged(cItemGrid * a_Grid, int a_SlotNum)
+ {
+ UNUSED(a_SlotNum);
+ ASSERT(a_Grid == &m_Contents);
+ if (m_World != NULL)
+ {
+ if (GetWindow() != NULL)
+ {
+ GetWindow()->BroadcastWholeWindow();
+ }
+
+ m_World->MarkChunkDirty(GetChunkX(), GetChunkZ());
+ }
+ }
// cEntity overrides:
virtual void OnRightClicked(cPlayer & a_Player) override;