Core/Movement: converted SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY and SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY to new ack handling

This commit is contained in:
Ovahlord committed 2021-11-12 19:29:00 +01:00
1 parent 2c70d98449
commit 4b56a7b9a3
8 files changed
+108 -21

No files matched your search

+16 -6
View File
@@ -13898,6 +13898,8 @@ void Unit::PurgeAndApplyPendingMovementChanges(bool informObservers /* = true */
case MovementChangeType::SET_CAN_FLY:
Unit::SetCanFly(pendingChange.second.apply);
break;
case MovementChangeType::SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY:
Unit::SetCanTransitionBetweenSwimAndFly(pendingChange.second.apply);
default:
ASSERT(false);
return;
@@ -13917,6 +13919,7 @@ void Unit::PurgeAndApplyPendingMovementChanges(bool informObservers /* = true */
{
case MovementChangeType::GRAVITY_DISABLE:
case MovementChangeType::SET_CAN_FLY:
case MovementChangeType::SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY:
MovementPacketSender::SendMovementFlagChangeToObservers(this);
break;
default:
@@ -14263,9 +14266,6 @@ bool Unit::SetCanFly(bool enable, bool packetOnly)
{
AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY);
RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_SPLINE_ELEVATION);
if (GetTypeId() == TYPEID_PLAYER)
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
SetFall(false);
}
else
@@ -14273,15 +14273,25 @@ bool Unit::SetCanFly(bool enable, bool packetOnly)
if (IsFlying() && !IsGravityDisabled())
SetFall(true);
RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_MASK_MOVING_FLY);
if (GetTypeId() == TYPEID_PLAYER)
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
}
}
return true;
}
bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable)
{
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS))
return false;
if (enable)
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
else
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS);
return true;
}
bool Unit::SetWaterWalking(bool enable, bool packetOnly /*= false */)
{
if (!packetOnly)