diff options
author | madmaxoft <github@xoft.cz> | 2013-10-13 18:26:45 +0200 |
---|---|---|
committer | madmaxoft <github@xoft.cz> | 2013-10-13 18:26:45 +0200 |
commit | e62cac07c0d74ded6109b9221045d65223b05c23 (patch) | |
tree | a1011589b593aa387a434501b40fb99de0d0a502 /source/Mobs/Pig.cpp | |
parent | Merge pull request #226 from SamJBarney/master (diff) | |
parent | Eight round of fixes (diff) | |
download | cuberite-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.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); + } +} + + + + + |