diff options
Diffstat (limited to 'src')
7 files changed, 61 insertions, 0 deletions
diff --git a/src/server/game/Movement/MovementGenerator.cpp b/src/server/game/Movement/MovementGenerator.cpp index 35d689277dd..6c8cd01b475 100644 --- a/src/server/game/Movement/MovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerator.cpp @@ -25,6 +25,17 @@ MovementGenerator::~MovementGenerator() { } +std::string MovementGenerator::GetDebugInfo() const +{ + std::stringstream sstr; + sstr << std::boolalpha + << "Mode: " << std::to_string(Mode) + << " Priority: " << std::to_string(Priority) + << " Flags: " << Flags + << " BaseUniteState: " << BaseUnitState; + return sstr.str(); +} + IdleMovementFactory::IdleMovementFactory() : MovementGeneratorCreator(IDLE_MOTION_TYPE) { } MovementGenerator* IdleMovementFactory::Create(Unit* /*object*/) const diff --git a/src/server/game/Movement/MovementGenerator.h b/src/server/game/Movement/MovementGenerator.h index 235743dc429..24585c4e77f 100755 --- a/src/server/game/Movement/MovementGenerator.h +++ b/src/server/game/Movement/MovementGenerator.h @@ -73,6 +73,8 @@ class TC_GAME_API MovementGenerator bool HasFlag(uint16 const flag) const { return (Flags & flag) != 0; } void RemoveFlag(uint16 const flag) { Flags &= ~flag; } + virtual std::string GetDebugInfo() const; + uint8 Mode; uint8 Priority; uint16 Flags; diff --git a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp index 586d054d024..0db994b672e 100644 --- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp @@ -240,6 +240,8 @@ void FlightPathMovementGenerator::SetCurrentNodeAfterTeleport() void FlightPathMovementGenerator::DoEventIfAny(Player* owner, TaxiPathNodeEntry const* node, bool departure) { + ASSERT(node); + if (uint32 eventid = departure ? node->DepartureEventID : node->ArrivalEventID) { TC_LOG_DEBUG("maps.script", "FlightPathMovementGenerator::DoEventIfAny: taxi %s event %u of node %u of path %u for player %s", departure ? "departure" : "arrival", eventid, node->NodeIndex, node->PathID, owner->GetName().c_str()); @@ -278,3 +280,27 @@ void FlightPathMovementGenerator::PreloadEndGrid() else TC_LOG_DEBUG("movement.flightpath", "FlightPathMovementGenerator::PreloadEndGrid: unable to determine map to preload flightmaster grid"); } + +uint32 FlightPathMovementGenerator::GetPathId(size_t index) const +{ + if (index >= _path.size()) + return 0; + + return _path[index]->PathID; +} + +std::string FlightPathMovementGenerator::GetDebugInfo() const +{ + std::stringstream sstr; + sstr << std::boolalpha + << PathMovementBase::GetDebugInfo() << "\n" + << MovementGeneratorMedium::GetDebugInfo() << "\n" + << "Start Path Id: " << GetPathId(0) + << " Path Size: " << _path.size() + << " HasArrived: " << HasArrived() + << " End Grid X: " << _endGridX + << " End Grid Y: " << _endGridY + << " End Map Id: " << _endMapId + << " Preloaded Target Node: " << _preloadTargetNode; + return sstr.str(); +} diff --git a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.h b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.h index 5ae722964b6..e946cce1ec4 100644 --- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.h @@ -46,6 +46,7 @@ class FlightPathMovementGenerator : public MovementGeneratorMedium<Player, Fligh std::vector<TaxiPathNodeEntry const*> const& GetPath() { return _path; } uint32 GetPathAtMapEnd() const; bool HasArrived() const { return _currentNode >= _path.size(); } + uint32 GetPathId(size_t index) const; void LoadPath(Player* owner, uint32 startNode = 0); // called from MotionMaster void SetCurrentNodeAfterTeleport(); @@ -54,6 +55,8 @@ class FlightPathMovementGenerator : public MovementGeneratorMedium<Player, Fligh void InitEndGridInfo(); void PreloadEndGrid(); + std::string GetDebugInfo() const override; + private: float _endGridX; //! X coord of last node location float _endGridY; //! Y coord of last node location diff --git a/src/server/game/Movement/MovementGenerators/PathMovementBase.h b/src/server/game/Movement/MovementGenerators/PathMovementBase.h index a11f06a20c3..903b9cae50a 100644 --- a/src/server/game/Movement/MovementGenerators/PathMovementBase.h +++ b/src/server/game/Movement/MovementGenerators/PathMovementBase.h @@ -19,6 +19,7 @@ #define PathMovementBase_h__ #include "Define.h" +#include <sstream> template<class Entity, class BasePath> class PathMovementBase @@ -29,6 +30,14 @@ class PathMovementBase uint32 GetCurrentNode() const { return _currentNode; } + virtual std::string GetDebugInfo() const + { + std::stringstream sstr; + sstr << std::boolalpha + << "Current Node: " << GetCurrentNode(); + return sstr.str(); + }; + protected: BasePath _path; uint32 _currentNode; diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index 863b7656da4..fa5f27b7dba 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -389,3 +389,11 @@ bool WaypointMovementGenerator<Creature>::ComputeNextNode() _currentNode = (_currentNode + 1) % _path->nodes.size(); return true; } + +std::string WaypointMovementGenerator<Creature>::GetDebugInfo() const +{ + std::stringstream sstr; + sstr << PathMovementBase::GetDebugInfo() << "\n" + << MovementGeneratorMedium::GetDebugInfo(); + return sstr.str(); +} diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h index 1bdb02eaa94..9efeded9fee 100755 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h @@ -50,6 +50,8 @@ class WaypointMovementGenerator<Creature> : public MovementGeneratorMedium<Creat void DoDeactivate(Creature*); void DoFinalize(Creature*, bool, bool); + std::string GetDebugInfo() const override; + private: void MovementInform(Creature*); void OnArrived(Creature*); |