evtc\skill/
timing.rs

1use crate::{extract::Extract, Event, StateChange, TryExtract};
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6/// Skill timing from an [`Event`] with [`StateChange::SkillTiming`].
7#[derive(Debug, Clone)]
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9pub struct SkillTiming {
10    pub skill_id: u32,
11    pub action: u64,
12    pub millisecond: u64,
13}
14
15impl Extract for SkillTiming {
16    #[inline]
17    unsafe fn extract(event: &Event) -> Self {
18        Self {
19            skill_id: event.skill_id,
20            action: event.src_agent,
21            millisecond: event.dst_agent,
22        }
23    }
24}
25
26impl TryExtract for SkillTiming {
27    #[inline]
28    fn can_extract(event: &Event) -> bool {
29        event.get_statechange() == StateChange::SkillTiming
30    }
31}