aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-11-11 10:00:55 +0100
committerShauren <shauren.trinity@gmail.com>2025-11-11 10:00:55 +0100
commit70f1278c96b463ed6a01e74a4c5373718beab6dd (patch)
tree0acb3134e1842b190f3ebac7a340ce06c7757752
parent0f8a33ca4cabe923c4611e7d0221c8819979edaa (diff)
Core/Movement: Reduce differences between branches (move movement timestamp adjustment into separate function)
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp18
-rw-r--r--src/server/game/Server/WorldSession.cpp12
-rw-r--r--src/server/game/Server/WorldSession.h1
3 files changed, 17 insertions, 14 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index b816d638e3c..99d7c49e78b 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -363,24 +363,14 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvPacket)
mover->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LANDING); // Parachutes
/* process position-change */
- WorldPacket data(opcode, recvPacket.size());
- int64 movementTime = (int64) movementInfo.time + _timeSyncClockDelta;
- if (_timeSyncClockDelta == 0 || movementTime < 0 || movementTime > 0xFFFFFFFF)
- {
- TC_LOG_WARN("misc", "The computed movement time using clockDelta is erronous. Using fallback instead");
- movementInfo.time = GameTime::GetGameTimeMS();
- }
- else
- {
- movementInfo.time = (uint32)movementTime;
- }
-
movementInfo.guid = mover->GetGUID();
+ movementInfo.time = AdjustClientMovementTime(movementInfo.time);
+ mover->m_movementInfo = movementInfo;
+
+ WorldPacket data(opcode, recvPacket.size());
WriteMovementInfo(&data, &movementInfo);
mover->SendMessageToSet(&data, _player);
- mover->m_movementInfo = movementInfo;
-
// Some vehicles allow the passenger to turn by himself
if (Vehicle* vehicle = mover->GetVehicle())
{
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 7adf4ccbacb..85ed0e3f131 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -1749,6 +1749,18 @@ void WorldSession::SendTimeSync()
_timeSyncNextCounter++;
}
+uint32 WorldSession::AdjustClientMovementTime(uint32 time) const
+{
+ int64 movementTime = int64(time) + _timeSyncClockDelta;
+ if (_timeSyncClockDelta == 0 || movementTime < 0 || movementTime > 0xFFFFFFFF)
+ {
+ TC_LOG_WARN("misc", "The computed movement time using clockDelta is erronous. Using fallback instead");
+ return GameTime::GetGameTimeMS();
+ }
+ else
+ return uint32(movementTime);
+}
+
bool WorldSession::IsRightUnitBeingMoved(ObjectGuid guid)
{
GameClient* client = GetGameClient();
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 165217e939c..38e1be959e5 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -662,6 +662,7 @@ class TC_GAME_API WorldSession
// Time Synchronisation
void ResetTimeSync();
void SendTimeSync();
+ uint32 AdjustClientMovementTime(uint32 time) const;
// Packets cooldown
time_t GetCalendarEventCreationCooldown() const { return _calendarEventCreationCooldown; }