diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-11-11 10:00:55 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-11-11 10:00:55 +0100 |
| commit | 70f1278c96b463ed6a01e74a4c5373718beab6dd (patch) | |
| tree | 0acb3134e1842b190f3ebac7a340ce06c7757752 | |
| parent | 0f8a33ca4cabe923c4611e7d0221c8819979edaa (diff) | |
Core/Movement: Reduce differences between branches (move movement timestamp adjustment into separate function)
| -rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 1 |
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; } |
