aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/Movement/MotionMaster.cpp16
-rw-r--r--src/server/game/Movement/MotionMaster.h29
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;
};