diff options
author | madmaxoft <github@xoft.cz> | 2013-09-09 10:49:52 +0200 |
---|---|---|
committer | madmaxoft <github@xoft.cz> | 2013-09-09 10:49:52 +0200 |
commit | b8d2d94d90f2021423e4cc9fdaa793e3c43b9130 (patch) | |
tree | 18a8b60e1d66c75df97d5e8c28d1519e90ac2203 /source/Blocks/BlockFenceGate.h | |
parent | Removed the "charging bow" debug message. (diff) | |
download | cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.tar cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.tar.gz cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.tar.bz2 cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.tar.lz cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.tar.xz cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.tar.zst cuberite-b8d2d94d90f2021423e4cc9fdaa793e3c43b9130.zip |
Diffstat (limited to 'source/Blocks/BlockFenceGate.h')
-rw-r--r-- | source/Blocks/BlockFenceGate.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/source/Blocks/BlockFenceGate.h b/source/Blocks/BlockFenceGate.h index d6f8aa85f..6423a7cb0 100644 --- a/source/Blocks/BlockFenceGate.h +++ b/source/Blocks/BlockFenceGate.h @@ -2,7 +2,6 @@ #pragma once #include "BlockHandler.h" -#include "../Doors.h" @@ -26,7 +25,7 @@ public: ) override { a_BlockType = m_BlockType; - a_BlockMeta = cDoors::RotationToMetaData(a_Player->GetRotation() + 270); + a_BlockMeta = PlayerYawToMetaData(a_Player->GetRotation()); return true; } @@ -34,7 +33,7 @@ public: virtual void OnUse(cWorld * a_World, cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ) override { NIBBLETYPE OldMetaData = a_World->GetBlockMeta(a_BlockX, a_BlockY, a_BlockZ); - NIBBLETYPE NewMetaData = cDoors::RotationToMetaData(a_Player->GetRotation() + 270); + NIBBLETYPE NewMetaData = PlayerYawToMetaData(a_Player->GetRotation()); OldMetaData ^= 4; // Toggle the gate if ((OldMetaData & 1) == (NewMetaData & 1)) { @@ -53,6 +52,35 @@ public: { return true; } + + + /// Converts the player's yaw to placed gate's blockmeta + inline static NIBBLETYPE PlayerYawToMetaData(double a_Yaw) + { + ASSERT((a_Yaw >= -180) && (a_Yaw < 180)); + + a_Yaw += 360 + 45; + if (a_Yaw > 360) + { + a_Yaw -= 360; + } + if ((a_Yaw >= 0) && (a_Yaw < 90)) + { + return 0x0; + } + else if ((a_Yaw >= 180) && (a_Yaw < 270)) + { + return 0x2; + } + else if ((a_Yaw >= 90) && (a_Yaw < 180)) + { + return 0x1; + } + else + { + return 0x3; + } + } } ; |