aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorChaouki Dhib <chaodhib@gmail.com>2021-05-16 13:16:08 +0200
committerGitHub <noreply@github.com>2021-05-16 13:16:08 +0200
commit2d114ea560cd8716af2b0d12990fc3480ecaf2b7 (patch)
treeaaa711aa4d63e9b33d8e804d481425368ddcee18 /src/server/game/Entities/Player
parentedcaac6c959e944dc6d6dc224666b832521412b4 (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.cpp18
-rw-r--r--src/server/game/Entities/Player/Player.h4
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);