summaryrefslogtreecommitdiffstats
path: root/source/Mobs/Pig.cpp
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2013-10-13 18:26:45 +0200
committermadmaxoft <github@xoft.cz>2013-10-13 18:26:45 +0200
commite62cac07c0d74ded6109b9221045d65223b05c23 (patch)
treea1011589b593aa387a434501b40fb99de0d0a502 /source/Mobs/Pig.cpp
parentMerge pull request #226 from SamJBarney/master (diff)
parentEight round of fixes (diff)
downloadcuberite-e62cac07c0d74ded6109b9221045d65223b05c23.tar
cuberite-e62cac07c0d74ded6109b9221045d65223b05c23.tar.gz
cuberite-e62cac07c0d74ded6109b9221045d65223b05c23.tar.bz2
cuberite-e62cac07c0d74ded6109b9221045d65223b05c23.tar.lz
cuberite-e62cac07c0d74ded6109b9221045d65223b05c23.tar.xz
cuberite-e62cac07c0d74ded6109b9221045d65223b05c23.tar.zst
cuberite-e62cac07c0d74ded6109b9221045d65223b05c23.zip
Diffstat (limited to 'source/Mobs/Pig.cpp')
-rw-r--r--source/Mobs/Pig.cpp49
1 files changed, 48 insertions, 1 deletions
diff --git a/source/Mobs/Pig.cpp b/source/Mobs/Pig.cpp
index 9df2c2571..cd18c087f 100644
--- a/source/Mobs/Pig.cpp
+++ b/source/Mobs/Pig.cpp
@@ -2,13 +2,16 @@
#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
#include "Pig.h"
+#include "../Entities/Player.h"
+#include "../World.h"
cPig::cPig(void) :
- super("Pig", 90, "mob.pig.say", "mob.pig.death", 0.9, 0.9)
+ super("Pig", 90, "mob.pig.say", "mob.pig.death", 0.9, 0.9),
+ m_bIsSaddled(false)
{
}
@@ -24,3 +27,47 @@ void cPig::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+
+void cPig::OnRightClicked(cPlayer & a_Player)
+{
+ if (m_bIsSaddled)
+ {
+ if (m_Attachee != NULL)
+ {
+ if (m_Attachee->GetUniqueID() == a_Player.GetUniqueID())
+ {
+ // This player is already sitting in, they want out.
+ a_Player.Detach();
+ return;
+ }
+
+ if (m_Attachee->IsPlayer())
+ {
+ // Another player is already sitting in here, cannot attach
+ return;
+ }
+
+ // Detach whatever is sitting in this pig now:
+ m_Attachee->Detach();
+ }
+
+ // Attach the player to this pig
+ a_Player.AttachTo(this);
+ }
+ else if (a_Player.GetEquippedItem().m_ItemType == E_ITEM_SADDLE)
+ {
+ if (!a_Player.IsGameModeCreative())
+ {
+ a_Player.GetInventory().RemoveOneEquippedItem();
+ }
+
+ // Set saddle state & broadcast metadata
+ m_bIsSaddled = true;
+ m_World->BroadcastEntityMetadata(*this);
+ }
+}
+
+
+
+
+