diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-10-08 20:20:49 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-10-08 20:20:49 +0200 |
commit | 5db6213f34318031ece7e2a6765f69564b671891 (patch) | |
tree | 074213cf13247c4e6370528eaa000bbd4b3a625d /source/Mobs/Pig.cpp | |
parent | Merge pull request #2 from tigerw/bugfixes (diff) | |
download | cuberite-5db6213f34318031ece7e2a6765f69564b671891.tar cuberite-5db6213f34318031ece7e2a6765f69564b671891.tar.gz cuberite-5db6213f34318031ece7e2a6765f69564b671891.tar.bz2 cuberite-5db6213f34318031ece7e2a6765f69564b671891.tar.lz cuberite-5db6213f34318031ece7e2a6765f69564b671891.tar.xz cuberite-5db6213f34318031ece7e2a6765f69564b671891.tar.zst cuberite-5db6213f34318031ece7e2a6765f69564b671891.zip |
Diffstat (limited to 'source/Mobs/Pig.cpp')
-rw-r--r-- | source/Mobs/Pig.cpp | 49 |
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); + } +} + + + + + |