aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/MovementGenerator.cpp11
-rwxr-xr-xsrc/server/game/Movement/MovementGenerator.h2
-rw-r--r--src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp26
-rw-r--r--src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.h3
-rw-r--r--src/server/game/Movement/MovementGenerators/PathMovementBase.h9
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h2
7 files changed, 61 insertions, 0 deletions
diff --git a/src/server/game/Movement/MovementGenerator.cpp b/src/server/game/Movement/MovementGenerator.cpp
index 85f2b04be27..45c88245fba 100644
--- a/src/server/game/Movement/MovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerator.cpp
@@ -26,6 +26,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 51e7122f42d..865bdeb65f1 100755
--- a/src/server/game/Movement/MovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerator.h
@@ -74,6 +74,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 d8c6d71a81c..3ad30ecce90 100644
--- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp
@@ -235,6 +235,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());
@@ -273,3 +275,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 f53e7e944a8..1a102de90c0 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
TaxiPathNodeList const& GetPath() { return _path; }
uint32 GetPathAtMapEnd() const;
bool HasArrived() const { return _currentNode >= _path.size(); }
+ uint32 GetPathId(size_t index) const;
void LoadPath(Player* owner); // 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 faa197224c1..9429f019237 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 ff314fdc88b..2e48d4cb64d 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -390,3 +390,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 bcd3e7d5557..4f6f09e8ce6 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
@@ -51,6 +51,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*);