evtc\skill/
info.rs
1use crate::{
2 extract::{transmute_field, Extract},
3 Event, StateChange, TryExtract,
4};
5
6#[cfg(feature = "serde")]
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone)]
11#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
12pub struct SkillInfo {
13 pub skill_id: u32,
14 pub recharge: f32,
15 pub range0: f32,
16 pub range1: f32,
17 pub tooltip_time: f32,
18}
19
20impl Extract for SkillInfo {
21 #[inline]
22 unsafe fn extract(event: &Event) -> Self {
23 let [recharge, range0, range1, tooltip_time] = transmute_field!(event.time as [f32; 4]);
24 Self {
25 skill_id: event.skill_id,
26 recharge,
27 range0,
28 range1,
29 tooltip_time,
30 }
31 }
32}
33
34impl TryExtract for SkillInfo {
35 #[inline]
36 fn can_extract(event: &Event) -> bool {
37 event.get_statechange() == StateChange::SkillInfo
38 }
39}