diff options
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Movement/MotionMaster.h | 29 |
2 files changed, 24 insertions, 21 deletions
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<void()> 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<void()> 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<void()> 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<void()> 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<void()> action = [this]() + DelayedActionDefine action = [this]() { Clear(); }; @@ -436,7 +436,7 @@ void MotionMaster::Clear(MovementSlot slot) if (HasFlag(MOTIONMASTER_FLAG_UPDATE)) { - std::function<void()> 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<void()> 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<void()> 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<void()>&& action, std::function<bool()>&& validator, MotionMasterDelayedActionType type) : Action(std::move(action)), Validator(std::move(validator)), Type(type) { } - explicit MotionMasterDelayedAction(std::function<void()>&& action, MotionMasterDelayedActionType type) : Action(std::move(action)), Validator(EmptyValidator), Type(type) { } - ~MotionMasterDelayedAction() { } + typedef std::function<void()> DelayedActionDefine; + typedef std::function<bool()> 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<void()> Action; - std::function<bool()> 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<MotionMasterDelayedAction> _delayedActions; + std::deque<DelayedAction> _delayedActions; uint8 _flags; }; |