Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
SpellValidation.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SF_SPELLVALIDATION_H
7
#define SF_SPELLVALIDATION_H
8
9
#include "
SharedDefines.h
"
10
11
#include <initializer_list>
12
13
namespace
Skyfire
14
{
15
namespace
Spells
16
{
17
uint32
const
SpellMaskBitCount
= 32;
18
19
enum
SpellDispatchHandlerKind
20
{
21
SPELL_DISPATCH_HANDLER_REAL
,
22
SPELL_DISPATCH_HANDLER_NULL
,
23
SPELL_DISPATCH_HANDLER_UNUSED
,
24
SPELL_DISPATCH_HANDLER_NO_IMMEDIATE_EFFECT
25
};
26
27
enum
SpellDispatchValidationStatus
28
{
29
SPELL_DISPATCH_SUPPORTED
,
30
SPELL_DISPATCH_INTENTIONALLY_UNUSED
,
31
SPELL_DISPATCH_NO_IMMEDIATE_EFFECT
,
32
SPELL_DISPATCH_MISSING_OR_UNSUPPORTED
33
};
34
35
inline
bool
IsMaskBitRepresentable
(
uint32
bitIndex)
36
{
37
return
bitIndex <
SpellMaskBitCount
;
38
}
39
40
inline
uint32
GetMaskBit
(
uint32
bitIndex)
41
{
42
return
IsMaskBitRepresentable
(bitIndex) ? (1u << bitIndex) : 0;
43
}
44
45
inline
bool
IsMechanicRepresentable
(
uint32
mechanic)
46
{
47
return
mechanic !=
MECHANIC_NONE
&&
IsMaskBitRepresentable
(mechanic);
48
}
49
50
inline
uint32
GetMechanicMask
(
uint32
mechanic)
51
{
52
return
IsMechanicRepresentable
(mechanic) ?
GetMaskBit
(mechanic) : 0;
53
}
54
55
inline
uint32
BuildMechanicMask
(std::initializer_list<uint32> mechanics)
56
{
57
uint32
mask = 0;
58
for
(
uint32
mechanic : mechanics)
59
mask |=
GetMechanicMask
(mechanic);
60
61
return
mask;
62
}
63
64
inline
bool
HasMechanic
(
uint32
mask,
uint32
mechanic)
65
{
66
uint32
mechanicMask =
GetMechanicMask
(mechanic);
67
return
mechanicMask != 0 && (mask & mechanicMask) != 0;
68
}
69
70
inline
bool
HasAnyMechanic
(
uint32
mask, std::initializer_list<uint32> mechanics)
71
{
72
return
(mask &
BuildMechanicMask
(mechanics)) != 0;
73
}
74
75
inline
uint32
GetEffectIndexMask
(
uint32
effIndex)
76
{
77
return
GetMaskBit
(effIndex);
78
}
79
80
inline
uint32
GetDispelMask
(
DispelType
type)
81
{
82
if
(type ==
DISPEL_ALL
)
83
return
DISPEL_ALL_MASK
;
84
85
return
GetMaskBit
(
uint32
(type));
86
}
87
88
inline
SpellDispatchValidationStatus
ClassifySpellDispatchHandler
(
SpellDispatchHandlerKind
kind)
89
{
90
switch
(kind)
91
{
92
case
SPELL_DISPATCH_HANDLER_REAL
:
93
return
SPELL_DISPATCH_SUPPORTED
;
94
case
SPELL_DISPATCH_HANDLER_UNUSED
:
95
return
SPELL_DISPATCH_INTENTIONALLY_UNUSED
;
96
case
SPELL_DISPATCH_HANDLER_NO_IMMEDIATE_EFFECT
:
97
return
SPELL_DISPATCH_NO_IMMEDIATE_EFFECT
;
98
case
SPELL_DISPATCH_HANDLER_NULL
:
99
default
:
100
return
SPELL_DISPATCH_MISSING_OR_UNSUPPORTED
;
101
}
102
}
103
104
inline
char
const
*
GetSpellDispatchValidationStatusName
(
SpellDispatchValidationStatus
status)
105
{
106
switch
(status)
107
{
108
case
SPELL_DISPATCH_SUPPORTED
:
109
return
"supported"
;
110
case
SPELL_DISPATCH_INTENTIONALLY_UNUSED
:
111
return
"intentionally unused"
;
112
case
SPELL_DISPATCH_NO_IMMEDIATE_EFFECT
:
113
return
"no immediate effect"
;
114
case
SPELL_DISPATCH_MISSING_OR_UNSUPPORTED
:
115
default
:
116
return
"missing or unsupported"
;
117
}
118
}
119
}
120
}
121
122
#endif
uint32
std::uint32_t uint32
Definition
Define.h:77
SharedDefines.h
DISPEL_ALL_MASK
#define DISPEL_ALL_MASK
Definition
SharedDefines.h:1588
MECHANIC_NONE
@ MECHANIC_NONE
Definition
SharedDefines.h:1526
DispelType
DispelType
Definition
SharedDefines.h:1573
DISPEL_ALL
@ DISPEL_ALL
Definition
SharedDefines.h:1581
Skyfire::Spells
Definition
SpellAuraMetadata.cpp:13
Skyfire::Spells::HasAnyMechanic
bool HasAnyMechanic(uint32 mask, std::initializer_list< uint32 > mechanics)
Definition
SpellValidation.h:70
Skyfire::Spells::BuildMechanicMask
uint32 BuildMechanicMask(std::initializer_list< uint32 > mechanics)
Definition
SpellValidation.h:55
Skyfire::Spells::SpellDispatchValidationStatus
SpellDispatchValidationStatus
Definition
SpellValidation.h:28
Skyfire::Spells::SPELL_DISPATCH_SUPPORTED
@ SPELL_DISPATCH_SUPPORTED
Definition
SpellValidation.h:29
Skyfire::Spells::SPELL_DISPATCH_INTENTIONALLY_UNUSED
@ SPELL_DISPATCH_INTENTIONALLY_UNUSED
Definition
SpellValidation.h:30
Skyfire::Spells::SPELL_DISPATCH_MISSING_OR_UNSUPPORTED
@ SPELL_DISPATCH_MISSING_OR_UNSUPPORTED
Definition
SpellValidation.h:32
Skyfire::Spells::SPELL_DISPATCH_NO_IMMEDIATE_EFFECT
@ SPELL_DISPATCH_NO_IMMEDIATE_EFFECT
Definition
SpellValidation.h:31
Skyfire::Spells::GetEffectIndexMask
uint32 GetEffectIndexMask(uint32 effIndex)
Definition
SpellValidation.h:75
Skyfire::Spells::GetDispelMask
uint32 GetDispelMask(DispelType type)
Definition
SpellValidation.h:80
Skyfire::Spells::GetSpellDispatchValidationStatusName
char const * GetSpellDispatchValidationStatusName(SpellDispatchValidationStatus status)
Definition
SpellValidation.h:104
Skyfire::Spells::SpellDispatchHandlerKind
SpellDispatchHandlerKind
Definition
SpellValidation.h:20
Skyfire::Spells::SPELL_DISPATCH_HANDLER_REAL
@ SPELL_DISPATCH_HANDLER_REAL
Definition
SpellValidation.h:21
Skyfire::Spells::SPELL_DISPATCH_HANDLER_UNUSED
@ SPELL_DISPATCH_HANDLER_UNUSED
Definition
SpellValidation.h:23
Skyfire::Spells::SPELL_DISPATCH_HANDLER_NULL
@ SPELL_DISPATCH_HANDLER_NULL
Definition
SpellValidation.h:22
Skyfire::Spells::SPELL_DISPATCH_HANDLER_NO_IMMEDIATE_EFFECT
@ SPELL_DISPATCH_HANDLER_NO_IMMEDIATE_EFFECT
Definition
SpellValidation.h:24
Skyfire::Spells::IsMechanicRepresentable
bool IsMechanicRepresentable(uint32 mechanic)
Definition
SpellValidation.h:45
Skyfire::Spells::GetMaskBit
uint32 GetMaskBit(uint32 bitIndex)
Definition
SpellValidation.h:40
Skyfire::Spells::GetMechanicMask
uint32 GetMechanicMask(uint32 mechanic)
Definition
SpellValidation.h:50
Skyfire::Spells::IsMaskBitRepresentable
bool IsMaskBitRepresentable(uint32 bitIndex)
Definition
SpellValidation.h:35
Skyfire::Spells::SpellMaskBitCount
uint32 const SpellMaskBitCount
Definition
SpellValidation.h:17
Skyfire::Spells::ClassifySpellDispatchHandler
SpellDispatchValidationStatus ClassifySpellDispatchHandler(SpellDispatchHandlerKind kind)
Definition
SpellValidation.h:88
Skyfire::Spells::HasMechanic
bool HasMechanic(uint32 mask, uint32 mechanic)
Definition
SpellValidation.h:64
Skyfire
Definition
AuthPatchTransfer.h:12
src
server
game
Spells
SpellValidation.h
Generated on
for Project SkyFire Core by
1.17.0