18#ifndef TRINITYCORE_RACE_MASK_H
19#define TRINITYCORE_RACE_MASK_H
92 static_assert(std::is_integral_v<T>,
"RaceMask<T> must be integral");
156 return { .RawValue = raceBit >= 0 &&
uint32(raceBit) <
sizeof(T) * 8 ? (T(1) << raceBit) : T(0) };
168template<
typename T,
size_t N>
171 static_assert(std::is_integral_v<T>,
"RaceMask<T> must be integral");
178 return raceBit >= 0 &&
uint32(raceBit) <
sizeof(T) * 8 * N
179 && (
RawValue[raceBit / (
sizeof(T) * 8)] & (T(1) << (raceBit % (
sizeof(T) * 8)))) != T(0);
186 if (raceBit >= 0 &&
uint32(raceBit) <
sizeof(T) * 8 * N)
187 result.
RawValue[raceBit / (
sizeof(T) * 8)] = T(1) << (raceBit % (
sizeof(T) * 8));
196 if (rawValue != T(0))
204 for (std::size_t i = 0; i < N; ++i)
212 for (std::size_t i = 0; i < N; ++i)
220 for (std::size_t i = 0; i < N; ++i)
constexpr Trinity::RaceMask< uint64 > RACEMASK_ALL_PLAYABLE
constexpr Trinity::RaceMask< T > RACEMASK_NEUTRAL_v
constexpr Trinity::RaceMask< uint64 > RACEMASK_ALLIANCE
constexpr Trinity::RaceMask< T > RACEMASK_ALL_PLAYABLE_v
constexpr Trinity::RaceMask< T > RACEMASK_HORDE_v
constexpr Trinity::RaceMask< uint64 > RACEMASK_NEUTRAL
constexpr Trinity::RaceMask< uint64 > RACEMASK_HORDE
constexpr Trinity::RaceMask< T > RACEMASK_ALL_v
@ RACE_LIGHTFORGED_DRAENEI
@ RACE_EARTHEN_DWARF_HORDE
@ RACE_HIGHMOUNTAIN_TAUREN
@ RACE_EARTHEN_DWARF_ALLIANCE
constexpr Trinity::RaceMask< uint64 > RACEMASK_ALL
constexpr Trinity::RaceMask< T > RACEMASK_ALLIANCE_v
constexpr bool IsEmpty() const
constexpr RaceMask operator&(RaceMask right) const
std::array< T, N > RawValue
constexpr bool HasRace(uint32 raceId) const
constexpr RaceMask operator~() const
constexpr bool operator==(RaceMask const &) const =default
static constexpr RaceMask GetMaskForRace(uint32 raceId)
constexpr RaceMask operator|(RaceMask right) const
static constexpr int32 GetRaceBit(uint32 raceId)
constexpr bool operator==(RaceMask const &) const =default
constexpr bool IsEmpty() const
constexpr RaceMask operator|(RaceMask right) const
static constexpr RaceMask GetMaskForRace(uint32 raceId)
constexpr bool HasRace(uint32 raceId) const
constexpr RaceMask operator&(RaceMask right) const
constexpr RaceMask operator~() const