Core/Movement: implement and use new remove method in MotionMaster

Port From (https://github.com/TrinityCore/TrinityCore/commit/72301bf02f4b8d9569139e7bfcc23df9a46f2479)
This commit is contained in:
hondacrx
2021-12-01 11:35:31 -05:00
parent 0257f00aab
commit 11372c15e9
+14 -27
View File
@@ -347,11 +347,7 @@ namespace Game.Movement
if (!_generators.Empty()) if (!_generators.Empty())
{ {
if (_generators.Contains(movement)) if (_generators.Contains(movement))
{ Remove(movement, GetCurrentMovementGenerator() == movement, false);
bool top = GetCurrentMovementGenerator() == movement;
_generators.Remove(movement);
Delete(movement, top, false);
}
} }
break; break;
default: default:
@@ -384,12 +380,7 @@ namespace Game.Movement
{ {
var itr = _generators.FirstOrDefault(a => a.GetMovementGeneratorType() == type); var itr = _generators.FirstOrDefault(a => a.GetMovementGeneratorType() == type);
if (itr != null) if (itr != null)
{ Remove(itr, GetCurrentMovementGenerator() == itr, false);
MovementGenerator pointer = itr;
bool top = GetCurrentMovementGenerator() == pointer;
_generators.Remove(pointer);
Delete(pointer, top, false);
}
} }
break; break;
default: default:
@@ -982,11 +973,15 @@ namespace Game.Movement
Add(movement); Add(movement);
} }
void Remove(MovementGenerator movement, bool active, bool movementInform)
{
_generators.Remove(movement);
Delete(movement, active, movementInform);
}
void Pop(bool active, bool movementInform) void Pop(bool active, bool movementInform)
{ {
MovementGenerator pointer = _generators.FirstOrDefault(); Remove(_generators.FirstOrDefault(), active, movementInform);
_generators.Remove(pointer);
Delete(pointer, active, movementInform);
} }
void DirectInitialize() void DirectInitialize()
@@ -1064,8 +1059,6 @@ namespace Game.Movement
* NOTE: This mimics old behaviour: only one MOTION_SLOT_IDLE, MOTION_SLOT_ACTIVE, MOTION_SLOT_CONTROLLED * NOTE: This mimics old behaviour: only one MOTION_SLOT_IDLE, MOTION_SLOT_ACTIVE, MOTION_SLOT_CONTROLLED
* On future changes support for multiple will be added * On future changes support for multiple will be added
*/ */
switch (slot) switch (slot)
{ {
case MovementSlot.Default: case MovementSlot.Default:
@@ -1081,23 +1074,17 @@ namespace Game.Movement
{ {
if (movement.Priority >= _generators.FirstOrDefault().Priority) if (movement.Priority >= _generators.FirstOrDefault().Priority)
{ {
MovementGenerator pointer = _generators.FirstOrDefault(); var itr = _generators.FirstOrDefault();
if (movement.Priority == pointer.Priority) if (movement.Priority == itr.Priority)
{ Remove(itr, true, false);
_generators.Remove(pointer);
Delete(pointer, true, false);
}
else else
pointer.Deactivate(_owner); itr.Deactivate(_owner);
} }
else else
{ {
var pointer = _generators.FirstOrDefault(a => a.Priority == movement.Priority); var pointer = _generators.FirstOrDefault(a => a.Priority == movement.Priority);
if (pointer != null) if (pointer != null)
{ Remove(pointer, false, false);
_generators.Remove(pointer);
Delete(pointer, false, false);
}
} }
} }
else else