![]() |
TrinityCore
|
#include <CombatManager.h>
Public Types | |
| using | UnitFilter = bool(Unit const *otherUnit) |
Public Member Functions | |
| CombatManager (Unit *owner) | |
| ~CombatManager () | |
| void | Update (uint32 tdiff) |
| Unit * | GetOwner () const |
| bool | HasCombat () const |
| bool | HasPvECombat () const |
| bool | HasPvECombatWithPlayers () const |
| std::unordered_map< ObjectGuid, CombatReference * > const & | GetPvECombatRefs () const |
| bool | HasPvPCombat () const |
| std::unordered_map< ObjectGuid, PvPCombatReference * > const & | GetPvPCombatRefs () const |
| Unit * | GetAnyTarget () const |
| bool | SetInCombatWith (Unit *who, bool addSecondUnitSuppressed=false) |
| bool | IsInCombatWith (ObjectGuid const &who) const |
| bool | IsInCombatWith (Unit const *who) const |
| void | InheritCombatStatesFrom (Unit const *who) |
| void | EndCombatBeyondRange (float range, bool includingPvP=false) |
| void | SuppressPvPCombat (UnitFilter *unitFilter=nullptr) |
| void | EndAllPvECombat (UnitFilter *unitFilter=nullptr) |
| void | RevalidateCombat () |
| void | EndAllPvPCombat (UnitFilter *unitFilter=nullptr) |
| void | EndAllCombat (UnitFilter *unitFilter=nullptr) |
| CombatManager (CombatManager const &)=delete | |
| CombatManager & | operator= (CombatManager const &)=delete |
Static Public Member Functions | |
| static bool | CanBeginCombat (Unit const *a, Unit const *b) |
Private Member Functions | |
| void | PutReference (ObjectGuid const &guid, CombatReference *ref) |
| void | PurgeReference (ObjectGuid const &guid, bool pvp) |
| bool | UpdateOwnerCombatState () const |
Static Private Member Functions | |
| static void | NotifyAICombat (Unit *me, Unit *other) |
Private Attributes | |
| Unit *const | _owner |
| std::unordered_map< ObjectGuid, CombatReference * > | _pveRefs |
| std::unordered_map< ObjectGuid, PvPCombatReference * > | _pvpRefs |
Friends | |
| struct | CombatReference |
| struct | PvPCombatReference |
Definition at line 98 of file CombatManager.h.
| using CombatManager::UnitFilter = bool(Unit const* otherUnit) |
Definition at line 124 of file CombatManager.h.
| CombatManager::CombatManager | ( | Unit * | owner | ) |
Definition at line 129 of file CombatManager.cpp.
| CombatManager::~CombatManager | ( | ) |
Definition at line 133 of file CombatManager.cpp.
References _owner, _pveRefs, _pvpRefs, ASSERT, BaseEntity::GetGUID(), and ObjectGuid::ToString().
|
delete |
Definition at line 24 of file CombatManager.cpp.
References WorldObject::GetCharmerOrOwnerPlayerOrPlayerItself(), WorldObject::GetMap(), Unit::HasUnitState(), WorldObject::InSamePhase(), Unit::IsAlive(), Unit::IsCombatDisallowed(), WorldObject::IsFriendlyTo(), Player::IsGameMaster(), BaseEntity::IsInWorld(), UNIT_STATE_EVADE, and UNIT_STATE_IN_FLIGHT.
Referenced by CreatureAI::DoZoneInCombat(), RevalidateCombat(), and SetInCombatWith().
|
inline |
Definition at line 131 of file CombatManager.h.
Referenced by Unit::SetImmuneToAll().
| void CombatManager::EndAllPvECombat | ( | UnitFilter * | unitFilter = nullptr | ) |
Definition at line 313 of file CombatManager.cpp.
References _owner, _pveRefs, ThreatManager::ClearAllThreat(), Unit::GetThreatManager(), and ThreatManager::RemoveMeFromThreatLists().
Referenced by Unit::CombatStop().
| void CombatManager::EndAllPvPCombat | ( | UnitFilter * | unitFilter = nullptr | ) |
Definition at line 358 of file CombatManager.cpp.
References _owner, and _pvpRefs.
Referenced by Unit::CombatStop().
| void CombatManager::EndCombatBeyondRange | ( | float | range, |
| bool | includingPvP = false |
||
| ) |
Definition at line 270 of file CombatManager.cpp.
References _pveRefs, _pvpRefs, CombatReference::EndCombat(), CombatReference::first, WorldObject::IsWithinDistInMap(), and CombatReference::second.
Referenced by Player::Update().
| Unit * CombatManager::GetAnyTarget | ( | ) | const |
Definition at line 180 of file CombatManager.cpp.
References _owner, _pveRefs, and _pvpRefs.
Referenced by Creature::CallForHelp(), npc_the_lich_king_controller::JustSummoned(), and UpdateOwnerCombatState().
|
inline |
Definition at line 107 of file CombatManager.h.
|
inline |
Definition at line 111 of file CombatManager.h.
Referenced by Creature::ForcePartyMembersIntoCombat(), Unit::getAttackerForHelper(), debug_commandscript::HandleDebugCombatListCommand(), boss_hadronox::IsInCombatWithPlayer(), boss_faction_championsAI::SelectEnemyCaster(), npc_the_lich_king_escape_hor::npc_the_lich_king_escape_horAI::SelectVictim(), Unit::SetImmuneToNPC(), Unit::SetImmuneToPC(), Unit::StopAttackFaction(), BossAI::TeleportCheaters(), Map::Update(), boss_yazzai::UpdateAI(), boss_warlord_salaris::UpdateAI(), npc_pet_hunter_snake_trap::UpdateAI(), and npc_pet_mage_mirror_image::UpdateVictim().
|
inline |
Definition at line 113 of file CombatManager.h.
Referenced by Unit::getAttackerForHelper(), debug_commandscript::HandleDebugCombatListCommand(), Unit::SetImmuneToNPC(), Unit::SetImmuneToPC(), npc_pet_hunter_snake_trap::UpdateAI(), and npc_pet_mage_mirror_image::UpdateVictim().
|
inline |
Definition at line 108 of file CombatManager.h.
Referenced by debug_commandscript::HandleDebugCombatListCommand(), and UpdateOwnerCombatState().
| bool CombatManager::HasPvECombat | ( | ) | const |
Definition at line 155 of file CombatManager.cpp.
References _owner, and _pveRefs.
Referenced by Unit::getAttackerForHelper().
| bool CombatManager::HasPvECombatWithPlayers | ( | ) | const |
Definition at line 163 of file CombatManager.cpp.
References _owner, _pveRefs, and TYPEID_PLAYER.
Referenced by boss_voice_of_yogg_saron::boss_voice_of_yogg_saronAI::UpdateAI().
| bool CombatManager::HasPvPCombat | ( | ) | const |
Definition at line 172 of file CombatManager.cpp.
References _owner, and _pvpRefs.
Referenced by Unit::getAttackerForHelper(), and npc_pet_mage_mirror_image::UpdateVictim().
| void CombatManager::InheritCombatStatesFrom | ( | Unit const * | who | ) |
Definition at line 246 of file CombatManager.cpp.
References _owner, _pveRefs, _pvpRefs, Unit::GetCombatManager(), Unit::HasUnitFlag(), Unit::IsImmuneToNPC(), Unit::IsImmuneToPC(), IsInCombatWith(), SetInCombatWith(), and UNIT_FLAG_PLAYER_CONTROLLED.
Referenced by Spell::PreprocessSpellHit().
| bool CombatManager::IsInCombatWith | ( | ObjectGuid const & | who | ) | const |
Definition at line 236 of file CombatManager.cpp.
References _pveRefs, and _pvpRefs.
Referenced by ThreatManager::AddThreat(), InheritCombatStatesFrom(), IsInCombatWith(), and SetInCombatWith().
| bool CombatManager::IsInCombatWith | ( | Unit const * | who | ) | const |
Definition at line 241 of file CombatManager.cpp.
References BaseEntity::GetGUID(), and IsInCombatWith().
Definition at line 370 of file CombatManager.cpp.
References Unit::GetAI().
Referenced by CombatReference::Refresh(), and SetInCombatWith().
|
delete |
|
private |
Definition at line 392 of file CombatManager.cpp.
References _pveRefs, and _pvpRefs.
Referenced by CombatReference::EndCombat().
|
private |
Definition at line 376 of file CombatManager.cpp.
References CombatReference::_isPvP, _owner, _pveRefs, _pvpRefs, ASSERT, BaseEntity::GetGUID(), and ObjectGuid::ToString().
Referenced by SetInCombatWith().
| void CombatManager::RevalidateCombat | ( | ) |
Definition at line 329 of file CombatManager.cpp.
References _owner, _pveRefs, _pvpRefs, CanBeginCombat(), CombatReference::EndCombat(), CombatReference::GetOther(), and CombatReference::second.
Referenced by Unit::RemoveCharmedBy(), and Unit::SetCharmedBy().
| bool CombatManager::SetInCombatWith | ( | Unit * | who, |
| bool | addSecondUnitSuppressed = false |
||
| ) |
Definition at line 191 of file CombatManager.cpp.
References _owner, _pveRefs, _pvpRefs, CanBeginCombat(), CombatReference, Unit::GetCombatManager(), BaseEntity::GetGUID(), Unit::IsControlledByPlayer(), IsInCombatWith(), Trinity::Containers::MapGetValuePtr(), NotifyAICombat(), PutReference(), PvPCombatReference, CombatReference::Suppress(), and UpdateOwnerCombatState().
Referenced by ThreatManager::AddThreat(), and InheritCombatStatesFrom().
| void CombatManager::SuppressPvPCombat | ( | UnitFilter * | unitFilter = nullptr | ) |
Definition at line 302 of file CombatManager.cpp.
References _owner, _pvpRefs, Unit::GetAI(), and UpdateOwnerCombatState().
Referenced by Unit::CombatStop().
| void CombatManager::Update | ( | uint32 | tdiff | ) |
Definition at line 139 of file CombatManager.cpp.
References _owner, _pvpRefs, CombatReference::EndCombat(), CombatReference::first, CombatReference::second, and PvPCombatReference::Update().
Referenced by Unit::Update().
|
private |
Definition at line 400 of file CombatManager.cpp.
References _owner, Unit::AtDisengage(), Unit::AtEngage(), Unit::AtEnterCombat(), Unit::AtExitCombat(), GetAnyTarget(), Unit::GetCharmerOrOwner(), BaseEntity::GetTypeId(), HasCombat(), Unit::IsInCombat(), Unit::RemoveUnitFlag(), Unit::SetUnitFlag(), TYPEID_UNIT, UNIT_FLAG_IN_COMBAT, and UNIT_FLAG_PET_IN_COMBAT.
Referenced by CombatReference::EndCombat(), CombatReference::Refresh(), SetInCombatWith(), CombatReference::SuppressFor(), and SuppressPvPCombat().
|
friend |
Definition at line 145 of file CombatManager.h.
Referenced by SetInCombatWith().
|
friend |
Definition at line 146 of file CombatManager.h.
Referenced by SetInCombatWith().
|
private |
Definition at line 141 of file CombatManager.h.
Referenced by EndAllPvECombat(), EndAllPvPCombat(), GetAnyTarget(), HasPvECombat(), HasPvECombatWithPlayers(), HasPvPCombat(), InheritCombatStatesFrom(), PutReference(), RevalidateCombat(), SetInCombatWith(), SuppressPvPCombat(), Update(), UpdateOwnerCombatState(), and ~CombatManager().
|
private |
Definition at line 142 of file CombatManager.h.
Referenced by EndAllPvECombat(), EndCombatBeyondRange(), GetAnyTarget(), HasPvECombat(), HasPvECombatWithPlayers(), InheritCombatStatesFrom(), IsInCombatWith(), PurgeReference(), PutReference(), RevalidateCombat(), SetInCombatWith(), and ~CombatManager().
|
private |
Definition at line 143 of file CombatManager.h.
Referenced by EndAllPvPCombat(), EndCombatBeyondRange(), GetAnyTarget(), HasPvPCombat(), InheritCombatStatesFrom(), IsInCombatWith(), PurgeReference(), PutReference(), RevalidateCombat(), SetInCombatWith(), SuppressPvPCombat(), Update(), and ~CombatManager().