AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SpellImplicitTargetInfo Class Reference

#include "SpellInfo.h"

Classes

struct  StaticData
 

Public Member Functions

 SpellImplicitTargetInfo ()
 
 SpellImplicitTargetInfo (uint32 target)
 
bool IsArea () const
 
SpellTargetSelectionCategories GetSelectionCategory () const
 
SpellTargetReferenceTypes GetReferenceType () const
 
SpellTargetObjectTypes GetObjectType () const
 
SpellTargetCheckTypes GetCheckType () const
 
SpellTargetDirectionTypes GetDirectionType () const
 
float CalcDirectionAngle () const
 
Targets GetTarget () const
 
uint32 GetExplicitTargetMask (bool &srcSet, bool &dstSet) const
 

Private Attributes

Targets _target
 

Static Private Attributes

static std::array< StaticData, TOTAL_SPELL_TARGETS_data
 

Detailed Description

Constructor & Destructor Documentation

◆ SpellImplicitTargetInfo() [1/2]

SpellImplicitTargetInfo::SpellImplicitTargetInfo ( )
inline
219: _target(Targets(0)) {}
Targets
Definition: SharedDefines.h:1409
Targets _target
Definition: SpellInfo.h:217

◆ SpellImplicitTargetInfo() [2/2]

SpellImplicitTargetInfo::SpellImplicitTargetInfo ( uint32  target)
60{
61 _target = Targets(target);
62}

References _target.

Member Function Documentation

◆ CalcDirectionAngle()

float SpellImplicitTargetInfo::CalcDirectionAngle ( ) const
95{
96 switch (GetDirectionType())
97 {
99 return 0.0f;
100 case TARGET_DIR_BACK:
101 return static_cast<float>(M_PI);
102 case TARGET_DIR_RIGHT:
103 return static_cast<float>(-M_PI / 2);
104 case TARGET_DIR_LEFT:
105 return static_cast<float>(M_PI / 2);
107 return static_cast<float>(-M_PI / 4);
109 return static_cast<float>(-3 * M_PI / 4);
111 return static_cast<float>(3 * M_PI / 4);
113 return static_cast<float>(M_PI / 4);
115 return float(rand_norm()) * static_cast<float>(2 * M_PI);
116 default:
117 return 0.0f;
118 }
119}
double rand_norm()
Definition: Random.cpp:77
@ TARGET_DIR_FRONT_RIGHT
Definition: SpellInfo.h:132
@ TARGET_DIR_BACK
Definition: SpellInfo.h:129
@ TARGET_DIR_BACK_RIGHT
Definition: SpellInfo.h:133
@ TARGET_DIR_RIGHT
Definition: SpellInfo.h:130
@ TARGET_DIR_FRONT_LEFT
Definition: SpellInfo.h:135
@ TARGET_DIR_FRONT
Definition: SpellInfo.h:128
@ TARGET_DIR_LEFT
Definition: SpellInfo.h:131
@ TARGET_DIR_BACK_LEFT
Definition: SpellInfo.h:134
@ TARGET_DIR_RANDOM
Definition: SpellInfo.h:136
SpellTargetDirectionTypes GetDirectionType() const
Definition: SpellInfo.cpp:89

References GetDirectionType(), rand_norm(), TARGET_DIR_BACK, TARGET_DIR_BACK_LEFT, TARGET_DIR_BACK_RIGHT, TARGET_DIR_FRONT, TARGET_DIR_FRONT_LEFT, TARGET_DIR_FRONT_RIGHT, TARGET_DIR_LEFT, TARGET_DIR_RANDOM, and TARGET_DIR_RIGHT.

Referenced by Spell::SelectImplicitCasterDestTargets(), Spell::SelectImplicitDestDestTargets(), and Spell::SelectImplicitTargetDestTargets().

◆ GetCheckType()

SpellTargetCheckTypes SpellImplicitTargetInfo::GetCheckType ( ) const
85{
86 return _data[_target].SelectionCheckType;
87}
static std::array< StaticData, TOTAL_SPELL_TARGETS > _data
Definition: SpellInfo.h:243

References _data, and _target.

Referenced by GetExplicitTargetMask(), Spell::SelectImplicitAreaTargets(), Spell::SelectImplicitChainTargets(), Spell::SelectImplicitConeTargets(), and Spell::SelectImplicitNearbyTargets().

◆ GetDirectionType()

SpellTargetDirectionTypes SpellImplicitTargetInfo::GetDirectionType ( ) const
90{
91 return _data[_target].DirectionType;
92}

References _data, and _target.

Referenced by CalcDirectionAngle().

◆ GetExplicitTargetMask()

uint32 SpellImplicitTargetInfo::GetExplicitTargetMask ( bool &  srcSet,
bool &  dstSet 
) const
127{
128 uint32 targetMask = 0;
130 {
131 if (!srcSet)
132 targetMask = TARGET_FLAG_SOURCE_LOCATION;
133 if (!dstSet)
134 targetMask |= TARGET_FLAG_DEST_LOCATION;
135 }
136 else
137 {
138 switch (GetReferenceType())
139 {
141 if (srcSet)
142 break;
143 targetMask = TARGET_FLAG_SOURCE_LOCATION;
144 break;
146 if (dstSet)
147 break;
148 targetMask = TARGET_FLAG_DEST_LOCATION;
149 break;
151 switch (GetObjectType())
152 {
154 targetMask = TARGET_FLAG_GAMEOBJECT;
155 break;
157 targetMask = TARGET_FLAG_GAMEOBJECT_ITEM;
158 break;
162 switch (GetCheckType())
163 {
165 targetMask = TARGET_FLAG_UNIT_ENEMY;
166 break;
168 targetMask = TARGET_FLAG_UNIT_ALLY;
169 break;
171 targetMask = TARGET_FLAG_UNIT_PARTY;
172 break;
174 targetMask = TARGET_FLAG_UNIT_RAID;
175 break;
177 targetMask = TARGET_FLAG_UNIT_PASSENGER;
178 break;
180 [[fallthrough]];
181 default:
182 targetMask = TARGET_FLAG_UNIT;
183 break;
184 }
185 break;
186 default:
187 break;
188 }
189 break;
190 default:
191 break;
192 }
193 }
194
195 switch (GetObjectType())
196 {
198 srcSet = true;
199 break;
202 dstSet = true;
203 break;
204 default:
205 break;
206 }
207 return targetMask;
208}
std::uint32_t uint32
Definition: Define.h:108
@ TARGET_CHECK_PASSENGER
Definition: SpellInfo.h:121
@ TARGET_CHECK_PARTY
Definition: SpellInfo.h:118
@ TARGET_CHECK_ENEMY
Definition: SpellInfo.h:116
@ TARGET_CHECK_RAID_CLASS
Definition: SpellInfo.h:120
@ TARGET_CHECK_ALLY
Definition: SpellInfo.h:117
@ TARGET_CHECK_RAID
Definition: SpellInfo.h:119
@ TARGET_FLAG_GAMEOBJECT
Definition: SpellInfo.h:57
@ TARGET_FLAG_UNIT_RAID
Definition: SpellInfo.h:48
@ TARGET_FLAG_UNIT_ENEMY
Definition: SpellInfo.h:53
@ TARGET_FLAG_UNIT_PASSENGER
Definition: SpellInfo.h:66
@ TARGET_FLAG_GAMEOBJECT_ITEM
Definition: SpellInfo.h:60
@ TARGET_FLAG_DEST_LOCATION
Definition: SpellInfo.h:52
@ TARGET_FLAG_UNIT_ALLY
Definition: SpellInfo.h:54
@ TARGET_FLAG_SOURCE_LOCATION
Definition: SpellInfo.h:51
@ TARGET_FLAG_UNIT
Definition: SpellInfo.h:47
@ TARGET_FLAG_UNIT_PARTY
Definition: SpellInfo.h:49
@ TARGET_OBJECT_TYPE_UNIT
Definition: SpellInfo.h:101
@ TARGET_OBJECT_TYPE_UNIT_AND_DEST
Definition: SpellInfo.h:102
@ TARGET_OBJECT_TYPE_DEST
Definition: SpellInfo.h:100
@ TARGET_OBJECT_TYPE_GOBJ
Definition: SpellInfo.h:103
@ TARGET_OBJECT_TYPE_GOBJ_ITEM
Definition: SpellInfo.h:104
@ TARGET_OBJECT_TYPE_SRC
Definition: SpellInfo.h:99
@ TARGET_REFERENCE_TYPE_SRC
Definition: SpellInfo.h:92
@ TARGET_REFERENCE_TYPE_TARGET
Definition: SpellInfo.h:90
@ TARGET_REFERENCE_TYPE_DEST
Definition: SpellInfo.h:93
@ TARGET_DEST_TRAJ
Definition: SharedDefines.h:1493
SpellTargetCheckTypes GetCheckType() const
Definition: SpellInfo.cpp:84
SpellTargetReferenceTypes GetReferenceType() const
Definition: SpellInfo.cpp:74
SpellTargetObjectTypes GetObjectType() const
Definition: SpellInfo.cpp:79
Targets GetTarget() const
Definition: SpellInfo.cpp:121

References GetCheckType(), GetObjectType(), GetReferenceType(), GetTarget(), TARGET_CHECK_ALLY, TARGET_CHECK_ENEMY, TARGET_CHECK_PARTY, TARGET_CHECK_PASSENGER, TARGET_CHECK_RAID, TARGET_CHECK_RAID_CLASS, TARGET_DEST_TRAJ, TARGET_FLAG_DEST_LOCATION, TARGET_FLAG_GAMEOBJECT, TARGET_FLAG_GAMEOBJECT_ITEM, TARGET_FLAG_SOURCE_LOCATION, TARGET_FLAG_UNIT, TARGET_FLAG_UNIT_ALLY, TARGET_FLAG_UNIT_ENEMY, TARGET_FLAG_UNIT_PARTY, TARGET_FLAG_UNIT_PASSENGER, TARGET_FLAG_UNIT_RAID, TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_GOBJ, TARGET_OBJECT_TYPE_GOBJ_ITEM, TARGET_OBJECT_TYPE_SRC, TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT_AND_DEST, TARGET_REFERENCE_TYPE_DEST, TARGET_REFERENCE_TYPE_SRC, and TARGET_REFERENCE_TYPE_TARGET.

◆ GetObjectType()

◆ GetReferenceType()

◆ GetSelectionCategory()

SpellTargetSelectionCategories SpellImplicitTargetInfo::GetSelectionCategory ( ) const

◆ GetTarget()

◆ IsArea()

bool SpellImplicitTargetInfo::IsArea ( ) const
65{
67}
@ TARGET_SELECT_CATEGORY_CONE
Definition: SpellInfo.h:81
@ TARGET_SELECT_CATEGORY_AREA
Definition: SpellInfo.h:82
SpellTargetSelectionCategories GetSelectionCategory() const
Definition: SpellInfo.cpp:69

References GetSelectionCategory(), TARGET_SELECT_CATEGORY_AREA, and TARGET_SELECT_CATEGORY_CONE.

Referenced by SpellEffectInfo::IsTargetingArea().

Member Data Documentation

◆ _data

◆ _target