diff options
author | peterbell10 <peterbell10@live.co.uk> | 2017-09-11 23:20:49 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2017-09-11 23:20:49 +0200 |
commit | e225b7f8262df48ad4d7094bc295add3007b0649 (patch) | |
tree | a42e9afcc88cfe6e9d1258458e3ad42764083d0e /src/ClientHandle.cpp | |
parent | cBlockArea: change MakeIndex to return size_t (diff) | |
download | cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.tar cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.tar.gz cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.tar.bz2 cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.tar.lz cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.tar.xz cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.tar.zst cuberite-e225b7f8262df48ad4d7094bc295add3007b0649.zip |
Diffstat (limited to 'src/ClientHandle.cpp')
-rw-r--r-- | src/ClientHandle.cpp | 73 |
1 files changed, 22 insertions, 51 deletions
diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp index f42f52cb1..6a3e47d94 100644 --- a/src/ClientHandle.cpp +++ b/src/ClientHandle.cpp @@ -1660,9 +1660,9 @@ void cClientHandle::HandleSlotSelected(Int16 a_SlotNum) void cClientHandle::HandleSpectate(const cUUID & a_PlayerUUID) { - m_Player->GetWorld()->DoWithPlayerByUUID(a_PlayerUUID, [=](cPlayer * a_ToSpectate) + m_Player->GetWorld()->DoWithPlayerByUUID(a_PlayerUUID, [=](cPlayer & a_ToSpectate) { - m_Player->TeleportToEntity(*a_ToSpectate); + m_Player->TeleportToEntity(a_ToSpectate); return true; }); } @@ -1734,9 +1734,9 @@ void cClientHandle::HandleUseEntity(UInt32 a_TargetEntityID, bool a_IsLeftClick) // If the player is a spectator, let him spectate if (m_Player->IsGameModeSpectator() && a_IsLeftClick) { - m_Player->GetWorld()->DoWithEntityByID(a_TargetEntityID, [=](cEntity * a_Entity) + m_Player->GetWorld()->DoWithEntityByID(a_TargetEntityID, [=](cEntity & a_Entity) { - m_Player->AttachTo(a_Entity); + m_Player->AttachTo(&a_Entity); return true; }); return; @@ -1745,20 +1745,18 @@ void cClientHandle::HandleUseEntity(UInt32 a_TargetEntityID, bool a_IsLeftClick) // If it is a right click, call the entity's OnRightClicked() handler: if (!a_IsLeftClick) { - class cRclkEntity : public cEntityCallback - { - cPlayer & m_Player; - virtual bool Item(cEntity * a_Entity) override + cWorld * World = m_Player->GetWorld(); + World->DoWithEntityByID(a_TargetEntityID, [=](cEntity & a_Entity) { if ( - cPluginManager::Get()->CallHookPlayerRightClickingEntity(m_Player, *a_Entity) || + cPluginManager::Get()->CallHookPlayerRightClickingEntity(*m_Player, a_Entity) || ( - m_Player.IsGameModeSpectator() && // Spectators cannot interact with every entity + m_Player->IsGameModeSpectator() && // Spectators cannot interact with every entity ( - !a_Entity->IsMinecart() || // They can only interact with minecarts + !a_Entity.IsMinecart() || // They can only interact with minecarts ( - (reinterpret_cast<cMinecart *>(a_Entity)->GetPayload() != cMinecart::mpChest) && // And only if the type matches a minecart with a chest or - (reinterpret_cast<cMinecart *>(a_Entity)->GetPayload() != cMinecart::mpHopper) // a minecart with a hopper + (static_cast<cMinecart &>(a_Entity).GetPayload() != cMinecart::mpChest) && // And only if the type matches a minecart with a chest or + (static_cast<cMinecart &>(a_Entity).GetPayload() != cMinecart::mpHopper) // a minecart with a hopper ) ) ) @@ -1766,52 +1764,34 @@ void cClientHandle::HandleUseEntity(UInt32 a_TargetEntityID, bool a_IsLeftClick) { return false; } - a_Entity->OnRightClicked(m_Player); + a_Entity.OnRightClicked(*m_Player); return false; } - public: - cRclkEntity(cPlayer & a_Player) : m_Player(a_Player) {} - } Callback (*m_Player); - - cWorld * World = m_Player->GetWorld(); - World->DoWithEntityByID(a_TargetEntityID, Callback); + ); return; } // If it is a left click, attack the entity: - class cDamageEntity : public cEntityCallback - { - public: - cPlayer * m_Me; - - cDamageEntity(cPlayer * a_Player) : - m_Me(a_Player) - { - } - - virtual bool Item(cEntity * a_Entity) override + m_Player->GetWorld()->DoWithEntityByID(a_TargetEntityID, [=](cEntity & a_Entity) { - if (!a_Entity->GetWorld()->IsPVPEnabled()) + if (!a_Entity.GetWorld()->IsPVPEnabled()) { // PVP is disabled, disallow players hurting other players: - if (a_Entity->IsPlayer()) + if (a_Entity.IsPlayer()) { // Player is hurting another player which is not allowed when PVP is disabled so ignore it return true; } } - a_Entity->TakeDamage(*m_Me); - m_Me->AddFoodExhaustion(0.3); - if (a_Entity->IsPawn()) + a_Entity.TakeDamage(*m_Player); + m_Player->AddFoodExhaustion(0.3); + if (a_Entity.IsPawn()) { - m_Me->NotifyNearbyWolves(static_cast<cPawn*>(a_Entity), true); + m_Player->NotifyNearbyWolves(static_cast<cPawn*>(&a_Entity), true); } return true; } - } Callback(m_Player); - - cWorld * World = m_Player->GetWorld(); - World->DoWithEntityByID(a_TargetEntityID, Callback); + ); } @@ -1860,17 +1840,8 @@ bool cClientHandle::CheckMultiLogin(const AString & a_Username) return false; } - class cCallback : - public cPlayerListCallback - { - virtual bool Item(cPlayer * a_Player) override - { - return true; - } - } Callback; - // Check if the player is in any World. - if (cRoot::Get()->DoWithPlayer(a_Username, Callback)) + if (cRoot::Get()->DoWithPlayer(a_Username, [](cPlayer &) { return true; })) { Kick("A player of the username is already logged in"); return false; |