![]() |
AzerothCore 3.3.5a
OpenSource WoW Emulator
|
#include "CreatureGroups.h"
Public Types | |
typedef std::map< Creature *, FormationInfo > | CreatureGroupMemberType |
Public Member Functions | |
CreatureGroup (uint32 id) | |
~CreatureGroup () | |
Creature * | GetLeader () const |
uint32 | GetId () const |
bool | IsEmpty () const |
bool | IsFormed () const |
const CreatureGroupMemberType & | GetMembers () const |
void | AddMember (Creature *member) |
void | RemoveMember (Creature *member) |
void | FormationReset (bool dismiss, bool initMotionMaster) |
void | LeaderMoveTo (float x, float y, float z, uint32 move_type) |
void | MemberEngagingTarget (Creature *member, Unit *target) |
Unit * | GetNewTargetForMember (Creature *member) |
void | MemberEvaded (Creature *member) |
void | RespawnFormation (bool force=false) |
bool | IsFormationInCombat () |
bool | IsAnyMemberAlive (bool ignoreLeader=false) |
Private Attributes | |
Creature * | m_leader |
CreatureGroupMemberType | m_members |
uint32 | m_groupID |
bool | m_Formed |
typedef std::map<Creature*, FormationInfo> CreatureGroup::CreatureGroupMemberType |
|
inlineexplicit |
|
inline |
void CreatureGroup::AddMember | ( | Creature * | member | ) |
References Object::GetGUID(), Creature::GetSpawnId(), LOG_DEBUG, m_groupID, m_leader, m_members, Creature::SetFormation(), sFormationMgr, and ObjectGuid::ToString().
Referenced by FormationMgr::AddCreatureToGroup().
void CreatureGroup::FormationReset | ( | bool | dismiss, |
bool | initMotionMaster | ||
) |
References Object::GetGUID(), Unit::GetMotionMaster(), GROUP_AI_FLAG_FOLLOW_LEADER, MotionMaster::Initialize(), Unit::IsAlive(), LOG_DEBUG, m_Formed, m_leader, m_members, MotionMaster::MoveIdle(), and ObjectGuid::ToString().
Referenced by Creature::Motion_Initialize(), and Creature::setDeathState().
|
inline |
References m_groupID.
Referenced by npc_commandscript::HandleNpcAddFormationCommand(), and FormationMgr::RemoveCreatureFromGroup().
|
inline |
|
inline |
References Creature::GetSpawnId(), Unit::GetVictim(), GROUP_AI_FLAG_ACQUIRE_NEW_TARGET_ON_EVADE, GROUP_AI_FLAG_LEADER_ASSIST_MEMBER, GROUP_AI_FLAG_MEMBER_ASSIST_LEADER, Unit::IsAlive(), Unit::IsValidAttackTarget(), m_leader, m_members, and sFormationMgr.
bool CreatureGroup::IsAnyMemberAlive | ( | bool | ignoreLeader = false | ) |
|
inline |
bool CreatureGroup::IsFormationInCombat | ( | ) |
|
inline |
void CreatureGroup::LeaderMoveTo | ( | float | x, |
float | y, | ||
float | z, | ||
uint32 | move_type | ||
) |
To do: This should probably get its own movement generator or use WaypointMovementGenerator. If the leader's path is known, member's path can be plotted as well using formation offsets.
References Unit::AddUnitMovementFlag(), FormationInfo::follow_angle, FormationInfo::follow_dist, Position::GetExactDist(), Unit::GetMotionMaster(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Unit::GetSpeedRate(), Unit::GetUnitMovementFlags(), Unit::GetVictim(), GROUP_AI_FLAG_FOLLOW_LEADER, FormationInfo::HasGroupFlag(), Unit::HasUnitState(), Unit::IsAlive(), m_leader, m_members, MOVEMENTFLAG_DISABLE_GRAVITY, MOVEMENTFLAG_WALKING, MotionMaster::MovePoint(), Acore::NormalizeMapCoord(), Position::NormalizeOrientation(), Unit::RemoveUnitMovementFlag(), Movement::SelectSpeedType(), Creature::SetHomePosition(), Unit::SetSpeedRate(), Unit::SetUnitMovementFlags(), UNIT_STATE_NOT_MOVE, WorldObject::UpdateGroundPositionZ(), WAYPOINT_MOVE_TYPE_LAND, WAYPOINT_MOVE_TYPE_RUN, and WAYPOINT_MOVE_TYPE_WALK.
Referenced by RandomMovementGenerator< T >::_setRandomLocation(), and WaypointMovementGenerator< Creature >::StartMove().
References Creature::AI(), UnitAI::AttackStart(), Creature::GetSpawnId(), Unit::GetVictim(), GROUP_AI_FLAG_LEADER_ASSIST_MEMBER, GROUP_AI_FLAG_MEMBER_ASSIST_LEADER, Unit::IsAlive(), Unit::IsValidAttackTarget(), m_leader, m_members, and sFormationMgr.
void CreatureGroup::MemberEvaded | ( | Creature * | member | ) |
References Creature::AI(), Creature::GetSpawnId(), GROUP_AI_FLAG_DONT_RESPAWN_LEADER_ON_EVADE, GROUP_AI_FLAG_EVADE_MASK, GROUP_AI_FLAG_EVADE_TOGETHER, Unit::IsAIEnabled, Unit::IsAlive(), Unit::IsInCombat(), Creature::IsInEvadeMode(), m_leader, m_members, Creature::Respawn(), and sFormationMgr.
void CreatureGroup::RemoveMember | ( | Creature * | member | ) |
References m_leader, m_members, and Creature::SetFormation().
Referenced by FormationMgr::RemoveCreatureFromGroup().
void CreatureGroup::RespawnFormation | ( | bool | force = false | ) |
|
private |
Referenced by FormationReset(), and IsFormed().
|
private |
Referenced by AddMember(), and GetId().
|
private |
|
private |