Core/Misc: waypoint movement

- Creature: update current waypoint to store nodeId and pathId
- MotionMaster: change variable type on GetMotionSlotType and GetMotionSlot to keep consistency and prevent errors (ASSERT is now no longer needed)
- UnitAI: add new waypoint hooks WaypointPathStarted and WaypointPathEnded
- SAI: handle WAYPOINT related events if creature is no escorting
* SMART_EVENT_WAYPOINT_RESUMED still not implemented for no escorting

TODO: the new hooks can save, now duplicated, logic on EscortAI and SAI

closes #20777
updates #20310
updates 21bd52cb99
This commit is contained in:
ccrs
2017-11-06 22:19:23 +01:00
parent d7de84b027
commit e10d7dd45c
14 changed files with 142 additions and 65 deletions

View File

@@ -2135,9 +2135,9 @@ public:
float x, y, z;
motionMaster->GetDestination(x, y, z);
for (uint8 i = 0; i < MAX_MOTION_SLOT; ++i)
for (uint8 itr = 0; itr < MAX_MOTION_SLOT; ++itr)
{
MovementGenerator* movementGenerator = motionMaster->GetMotionSlot(i);
MovementGenerator* movementGenerator = motionMaster->GetMotionSlot(MovementSlot(itr));
if (!movementGenerator)
{
handler->SendSysMessage("Empty");

View File

@@ -260,7 +260,7 @@ public:
stmt->setUInt32(0, guildLow);
WorldDatabase.Execute(stmt);
target->UpdateWaypointID(0);
target->UpdateCurrentWaypointInfo(0, 0);
stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_MOVEMENT_TYPE);
stmt->setUInt8(0, uint8(IDLE_MOTION_TYPE));