wowlab_engine_domain/dbc/semantics/
proc_types.rs1bitflags::bitflags! {
4 #[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
5 pub struct ProcTypeMask: u64 {
6 const HEARTBEAT = 1 << 0;
7 const KILL = 1 << 1;
8 const WHITE_MELEE = 1 << 2;
9 const TAKE_MELEE_SWING = 1 << 3;
10 const MELEE_ABILITY = 1 << 4;
11 const TAKE_MELEE_ABILITY = 1 << 5;
12 const WHITE_RANGED = 1 << 6;
13 const TAKE_RANGED_ATTACK = 1 << 7;
14 const RANGED_ABILITY = 1 << 8;
15 const TAKE_RANGED_ABILITY = 1 << 9;
16 const GENERIC_HELPFUL = 1 << 10;
17 const TAKE_HELPFUL_ABILITY = 1 << 11;
18 const GENERIC_HARMFUL = 1 << 12;
19 const TAKE_HARMFUL_ABILITY = 1 << 13;
20 const MAGIC_HELPFUL = 1 << 14;
21 const TAKE_HELPFUL_SPELL = 1 << 15;
22 const MAGIC_SPELL = 1 << 16;
23 const TAKE_HARMFUL_SPELL = 1 << 17;
24 const PERIODIC = 1 << 18;
25 const TAKE_HARMFUL_PERIODIC = 1 << 19;
26 const TAKE_ANY_DAMAGE = 1 << 20;
27 const HELPFUL_PERIODIC = 1 << 21;
28 const MAIN_HAND = 1 << 22;
29 const OFF_HAND = 1 << 23;
30 const DEATH = 1 << 24;
31 const JUMP = 1 << 25;
32 const PROC_CLONE_SPELL = 1 << 26;
33 const ENTER_COMBAT = 1 << 27;
34 const ENCOUNTER_START = 1 << 28;
35 const CAST_ENDED = 1 << 29;
36 const LOOTED = 1 << 30;
37 const TAKE_HELPFUL_PERIODIC = 1 << 31;
38
39 const TARGET_EVENTS = Self::TAKE_MELEE_SWING.bits()
40 | Self::TAKE_MELEE_ABILITY.bits()
41 | Self::TAKE_RANGED_ATTACK.bits()
42 | Self::TAKE_RANGED_ABILITY.bits()
43 | Self::TAKE_HELPFUL_ABILITY.bits()
44 | Self::TAKE_HARMFUL_ABILITY.bits()
45 | Self::TAKE_HELPFUL_SPELL.bits()
46 | Self::TAKE_HARMFUL_SPELL.bits()
47 | Self::TAKE_HARMFUL_PERIODIC.bits()
48 | Self::TAKE_ANY_DAMAGE.bits()
49 | Self::TAKE_HELPFUL_PERIODIC.bits();
50 const CASTER_EVENTS = Self::HEARTBEAT.bits()
51 | Self::KILL.bits()
52 | Self::WHITE_MELEE.bits()
53 | Self::MELEE_ABILITY.bits()
54 | Self::WHITE_RANGED.bits()
55 | Self::RANGED_ABILITY.bits()
56 | Self::GENERIC_HELPFUL.bits()
57 | Self::GENERIC_HARMFUL.bits()
58 | Self::MAGIC_HELPFUL.bits()
59 | Self::MAGIC_SPELL.bits()
60 | Self::PERIODIC.bits()
61 | Self::HELPFUL_PERIODIC.bits()
62 | Self::MAIN_HAND.bits()
63 | Self::OFF_HAND.bits()
64 | Self::DEATH.bits()
65 | Self::JUMP.bits()
66 | Self::PROC_CLONE_SPELL.bits()
67 | Self::ENTER_COMBAT.bits()
68 | Self::ENCOUNTER_START.bits()
69 | Self::CAST_ENDED.bits()
70 | Self::LOOTED.bits();
71 const AUTO_ATTACK = Self::WHITE_MELEE.bits()
72 | Self::WHITE_RANGED.bits()
73 | Self::MAIN_HAND.bits()
74 | Self::OFF_HAND.bits();
75 const SUPPORTED_EVENT = Self::WHITE_MELEE.bits()
76 | Self::MELEE_ABILITY.bits()
77 | Self::WHITE_RANGED.bits()
78 | Self::RANGED_ABILITY.bits()
79 | Self::GENERIC_HELPFUL.bits()
80 | Self::GENERIC_HARMFUL.bits()
81 | Self::MAGIC_SPELL.bits()
82 | Self::PERIODIC.bits()
83 | Self::MAIN_HAND.bits()
84 | Self::OFF_HAND.bits();
85 }
86}
87
88impl ProcTypeMask {
89 #[must_use]
90 pub const fn from_dbc(raw: u64) -> Self {
91 Self::from_bits_retain(raw)
92 }
93
94 #[must_use]
95 pub const fn has_target_events(self) -> bool {
96 self.intersects(Self::TARGET_EVENTS)
97 }
98
99 #[must_use]
100 pub const fn has_caster_events(self) -> bool {
101 self.intersects(Self::CASTER_EVENTS)
102 }
103}