evtc\agent/
combat.rs
1use crate::{
2 extract::Extract, AgentId, Event, Profession, Specialization, StateChange, TryExtract,
3};
4
5#[cfg(feature = "serde")]
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone)]
10#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
11pub struct EnterCombatEvent {
12 pub time: u64,
14
15 pub agent: AgentId,
17
18 pub subgroup: u64,
20
21 pub profession: Profession,
23
24 pub elite: Specialization,
26}
27
28impl Extract for EnterCombatEvent {
29 #[inline]
30 unsafe fn extract(event: &Event) -> Self {
31 Self {
32 time: event.time,
33 agent: AgentId::from_src(event),
34 subgroup: event.dst_agent,
35 profession: event.value.cast_unsigned().into(),
36 elite: event.buff_dmg.cast_unsigned().into(),
37 }
38 }
39}
40
41impl TryExtract for EnterCombatEvent {
42 #[inline]
43 fn can_extract(event: &Event) -> bool {
44 event.get_statechange() == StateChange::EnterCombat
45 }
46}