From c926184bca6d0b45faebc44a14161bd767e23b83 Mon Sep 17 00:00:00 2001 From: ccrs Date: Sun, 19 May 2019 11:38:10 +0200 Subject: Core/Movement: move DelayedAction into MotionMaster and add a couple defines (cherry picked from commit 2b78c70810cba22492b2586c6d79a90849d74ff9) --- src/server/game/Movement/MotionMaster.cpp | 16 ++++++++-------- src/server/game/Movement/MotionMaster.h | 29 ++++++++++++++++------------- 2 files changed, 24 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index f76c79696fe..4c508a38b59 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -97,7 +97,7 @@ void MotionMaster::Initialize() { if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this]() + DelayedActionDefine action = [this]() { Initialize(); }; @@ -324,7 +324,7 @@ void MotionMaster::Add(MovementGenerator* movement, MovementSlot slot/* = MOTION if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this, movement, slot]() + DelayedActionDefine action = [this, movement, slot]() { Add(movement, slot); }; @@ -341,7 +341,7 @@ void MotionMaster::Remove(MovementGenerator* movement, MovementSlot slot/* = MOT if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this, movement, slot]() + DelayedActionDefine action = [this, movement, slot]() { Remove(movement, slot); }; @@ -379,7 +379,7 @@ void MotionMaster::Remove(MovementGeneratorType type, MovementSlot slot/* = MOTI if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this, type, slot]() + DelayedActionDefine action = [this, type, slot]() { Remove(type, slot); }; @@ -417,7 +417,7 @@ void MotionMaster::Clear() { if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this]() + DelayedActionDefine action = [this]() { Clear(); }; @@ -436,7 +436,7 @@ void MotionMaster::Clear(MovementSlot slot) if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this, slot]() + DelayedActionDefine action = [this, slot]() { Clear(slot); }; @@ -464,7 +464,7 @@ void MotionMaster::Clear(MovementGeneratorMode mode) { if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this, mode]() + DelayedActionDefine action = [this, mode]() { Clear(mode); }; @@ -486,7 +486,7 @@ void MotionMaster::Clear(MovementGeneratorPriority priority) { if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function action = [this, priority]() + DelayedActionDefine action = [this, priority]() { Clear(priority); }; diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h index 5d2b6164095..65f4dcbc540 100644 --- a/src/server/game/Movement/MotionMaster.h +++ b/src/server/game/Movement/MotionMaster.h @@ -87,23 +87,26 @@ static bool EmptyValidator() return true; } -class MotionMasterDelayedAction +class TC_GAME_API MotionMaster { public: - explicit MotionMasterDelayedAction(std::function&& action, std::function&& validator, MotionMasterDelayedActionType type) : Action(std::move(action)), Validator(std::move(validator)), Type(type) { } - explicit MotionMasterDelayedAction(std::function&& action, MotionMasterDelayedActionType type) : Action(std::move(action)), Validator(EmptyValidator), Type(type) { } - ~MotionMasterDelayedAction() { } + typedef std::function DelayedActionDefine; + typedef std::function DelayedActionValidator; - void Resolve() { if (Validator()) Action(); } + class DelayedAction + { + public: + explicit DelayedAction(DelayedActionDefine&& action, DelayedActionValidator&& validator, MotionMasterDelayedActionType type) : Action(std::move(action)), Validator(std::move(validator)), Type(type) { } + explicit DelayedAction(DelayedActionDefine&& action, MotionMasterDelayedActionType type) : Action(std::move(action)), Validator(EmptyValidator), Type(type) { } + ~DelayedAction() { } - std::function Action; - std::function Validator; - uint8 Type; -}; + void Resolve() { if (Validator()) Action(); } + + DelayedActionDefine Action; + DelayedActionValidator Validator; + uint8 Type; + }; -class TC_GAME_API MotionMaster -{ - public: explicit MotionMaster(Unit* unit); ~MotionMaster(); @@ -214,7 +217,7 @@ class TC_GAME_API MotionMaster MovementGeneratorPointer _defaultGenerator; MotionMasterContainer _generators; MotionMasterUnitStatesContainer _baseUnitStatesMap; - std::deque _delayedActions; + std::deque _delayedActions; uint8 _flags; }; -- cgit v1.2.3