summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp35
-rw-r--r--src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h2
2 files changed, 19 insertions, 18 deletions
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index d06f9bb3ee..be3c0d57f1 100644
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -240,21 +240,16 @@ bool WaypointMovementGenerator<Creature>::DoUpdate(Creature* creature, uint32 di
}
else
{
- if (creature->IsStopped())
- Stop(sWorld->getIntConfig(CONFIG_WAYPOINT_MOVEMENT_STOP_TIME_FOR_PLAYER) * IN_MILLISECONDS);
- else
- {
- bool finished = creature->movespline->Finalized();
- // xinef: code to detect pre-empetively if we should start movement to next waypoint
- // xinef: do not start pre-empetive movement if current node has delay or we are ending waypoint movement
- //if (!finished && !i_path->at(i_currentNode)->delay && ((i_currentNode != i_path->size() - 1) || repeating))
- // finished = (creature->movespline->_Spline().length(creature->movespline->_currentSplineIdx() + 1) - creature->movespline->timePassed()) < 200;
+ bool finished = creature->movespline->Finalized();
+ // xinef: code to detect pre-empetively if we should start movement to next waypoint
+ // xinef: do not start pre-empetive movement if current node has delay or we are ending waypoint movement
+ //if (!finished && !i_path->at(i_currentNode)->delay && ((i_currentNode != i_path->size() - 1) || repeating))
+ // finished = (creature->movespline->_Spline().length(creature->movespline->_currentSplineIdx() + 1) - creature->movespline->timePassed()) < 200;
- if (finished)
- {
- OnArrived(creature);
- return StartMove(creature);
- }
+ if (finished)
+ {
+ OnArrived(creature);
+ return StartMove(creature);
}
}
return true;
@@ -287,10 +282,16 @@ void WaypointMovementGenerator<Creature>::MovementInform(Creature* creature)
}
}
-void WaypointMovementGenerator<Creature>::Pause(uint32 /*timer*/)
+void WaypointMovementGenerator<Creature>::Pause(uint32 timer)
{
- stalled = true;
- i_nextMoveTime.Reset(1);
+ if (timer)
+ i_nextMoveTime.Reset(timer);
+ else
+ {
+ // No timer? Will be paused forever until ::Resume is called
+ stalled = true;
+ i_nextMoveTime.Reset(1);
+ }
}
void WaypointMovementGenerator<Creature>::Resume(uint32 /*overrideTimer/*/)
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
index 84d1279c22..3161894a2b 100644
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
@@ -61,7 +61,7 @@ public:
void DoFinalize(Creature*);
void DoReset(Creature*);
bool DoUpdate(Creature*, uint32 diff);
- void Pause(uint32 timer/* = 0*/);
+ void Pause(uint32 timer = 0);
void Resume(uint32 overrideTimer/* = 0*/);
void MovementInform(Creature*);