diff options
author | ccrs <ccrs@users.noreply.github.com> | 2019-05-19 11:38:10 +0200 |
---|---|---|
committer | ccrs <ccrs@users.noreply.github.com> | 2019-05-19 11:38:10 +0200 |
commit | 2b78c70810cba22492b2586c6d79a90849d74ff9 (patch) | |
tree | fc4892da8d1bf90cb5dd15248e143e953764da10 /src | |
parent | 2c90fe56dc097ab8e7f73aac8d5fa059766cff42 (diff) |
Core/Movement: move DelayedAction into MotionMaster and add a couple defines
Diffstat (limited to 'src')
-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 0ac2cfaa613..a0e1c310fd7 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 a0057ffb036..4db648d7d1f 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(); @@ -213,7 +216,7 @@ class TC_GAME_API MotionMaster MovementGeneratorPointer _defaultGenerator; MotionMasterContainer _generators; MotionMasterUnitStatesContainer _baseUnitStatesMap; - std::deque<MotionMasterDelayedAction> _delayedActions; + std::deque<DelayedAction> _delayedActions; uint8 _flags; }; |