diff options
| author | Chaouki Dhib <chaodhib@gmail.com> | 2021-05-16 13:16:08 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-16 13:16:08 +0200 |
| commit | 2d114ea560cd8716af2b0d12990fc3480ecaf2b7 (patch) | |
| tree | aaa711aa4d63e9b33d8e804d481425368ddcee18 /src/server/game/Entities/Player | |
| parent | edcaac6c959e944dc6d6dc224666b832521412b4 (diff) | |
Core/Movement: Improve client control logic (#26348)
Diffstat (limited to 'src/server/game/Entities/Player')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 4 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 21410f84f12..bbf68c2a1f9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -41,6 +41,7 @@ #include "DatabaseEnv.h" #include "DisableMgr.h" #include "Formulas.h" +#include "GameClient.h" #include "GameEventMgr.h" #include "GameObjectAI.h" #include "GameTime.h" @@ -307,9 +308,6 @@ Player::Player(WorldSession* session): Unit(true) m_resetTalentsTime = 0; m_itemUpdateQueueBlocked = false; - for (uint8 i = 0; i < MAX_MOVE_TYPE; ++i) - m_forced_speed_changes[i] = 0; - /////////////////// Instance System ///////////////////// m_HomebindTimer = 0; @@ -354,8 +352,6 @@ Player::Player(WorldSession* session): Unit(true) // Player summoning m_summon_expire = 0; - m_unitMovedByMe = this; - m_playerMovingMe = this; m_seer = this; m_homebindMapId = 0; @@ -1351,7 +1347,6 @@ void Player::Update(uint32 p_time) //because we don't want player's ghost teleported from graveyard if (IsHasDelayedTeleport() && IsAlive()) TeleportTo(m_teleport_dest, m_teleport_options); - } void Player::setDeathState(DeathState s) @@ -22352,7 +22347,7 @@ bool Player::IsNeverVisible() const bool Player::CanAlwaysSee(WorldObject const* obj) const { // Always can see self - if (GetUnitBeingMoved() == obj) + if (GetCharmedOrSelf() == obj) return true; if (ObjectGuid guid = GetGuidValue(PLAYER_FARSIGHT)) @@ -22727,7 +22722,7 @@ void Player::SendInitialPacketsBeforeAddToMap() /// SMSG_RESYNC_RUNES ResyncRunes(); - SetMovedUnit(this); + GetSession()->GetGameClient()->AddAllowedMover(this); } void Player::SendInitialPacketsAfterAddToMap() @@ -24045,7 +24040,7 @@ void Player::SetClientControl(Unit* target, bool allowMove) SetViewpoint(target, true); } - SetMovedUnit(target); + GetGameClient()->SetMovedUnit(target, allowMove); } void Player::UpdateZoneDependentAuras(uint32 newZone) @@ -26969,3 +26964,8 @@ std::string Player::GetDebugInfo() const sstr << Unit::GetDebugInfo(); return sstr.str(); } + +GameClient* Player::GetGameClient() const +{ + return GetSession()->GetGameClient(); +} diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index d8ae36a54d2..7a0aef3c5c5 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -61,6 +61,7 @@ class Channel; class CharacterCreateInfo; class Creature; class DynamicObject; +class GameClient; class Group; class Guild; class Item; @@ -1653,6 +1654,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void RemovedInsignia(Player* looterPlr); WorldSession* GetSession() const { return m_session; } + GameClient* GetGameClient() const; void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override; void DestroyForPlayer(Player* target, bool onDeath = false) const override; @@ -2017,8 +2019,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> template<class T> void UpdateVisibilityOf(T* target, UpdateData& data, std::set<Unit*>& visibleNow); - uint8 m_forced_speed_changes[MAX_MOVE_TYPE]; - bool HasAtLoginFlag(AtLoginFlags f) const { return (m_atLoginFlags & f) != 0; } void SetAtLoginFlag(AtLoginFlags f) { m_atLoginFlags |= f; } void RemoveAtLoginFlag(AtLoginFlags flags, bool persist = false); |
