summaryrefslogtreecommitdiffstats
path: root/src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h')
-rw-r--r--src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h37
1 files changed, 30 insertions, 7 deletions
diff --git a/src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h b/src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h
index d280f73e3..8b7b82d49 100644
--- a/src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h
+++ b/src/Simulator/IncrementalRedstoneSimulator/TrappedChestHandler.h
@@ -1,4 +1,4 @@
-
+
#pragma once
#include "RedstoneHandler.h"
@@ -28,15 +28,38 @@ public:
UNUSED(a_BlockType);
UNUSED(a_Meta);
- int NumberOfPlayers = 0;
- VERIFY(!a_World.DoWithChestAt(a_Position.x, a_Position.y, a_Position.z, [&](cChestEntity & a_Chest)
+ class cGetTrappedChestPlayers :
+ public cItemCallback<cChestEntity>
+ {
+ public:
+ cGetTrappedChestPlayers(void) :
+ m_NumberOfPlayers(0)
+ {
+ }
+
+ virtual ~cGetTrappedChestPlayers() override
+ {
+ }
+
+ virtual bool Item(cChestEntity * a_Chest) override
{
- ASSERT(a_Chest.GetBlockType() == E_BLOCK_TRAPPED_CHEST);
- NumberOfPlayers = a_Chest.GetNumberOfPlayers();
+ ASSERT(a_Chest->GetBlockType() == E_BLOCK_TRAPPED_CHEST);
+ m_NumberOfPlayers = a_Chest->GetNumberOfPlayers();
return true;
}
- ));
- return static_cast<unsigned char>(std::min(NumberOfPlayers, 15));
+
+ unsigned char GetPowerLevel(void) const
+ {
+ return static_cast<unsigned char>(std::min(m_NumberOfPlayers, 15));
+ }
+
+ private:
+ int m_NumberOfPlayers;
+
+ } GTCP;
+
+ VERIFY(!a_World.DoWithChestAt(a_Position.x, a_Position.y, a_Position.z, GTCP));
+ return GTCP.GetPowerLevel();
}
virtual cVector3iArray Update(cWorld & a_World, const Vector3i & a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, PoweringData a_PoweringData) const override