evtc\missile/
remove.rs
1use crate::{extract::Extract, AgentId, Event, StateChange, TryExtract};
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone)]
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9pub struct MissileRemove {
10 pub time: u64,
12
13 pub agent: AgentId,
15
16 pub friendly_fire: i32,
18
19 pub skill_id: u32,
21
22 pub hit_enemy: u8,
24
25 pub tracking_id: u32,
27}
28
29impl Extract for MissileRemove {
30 #[inline]
31 unsafe fn extract(event: &Event) -> Self {
32 let friendly_fire = event.value;
33 let skill_id = event.skill_id;
34 let hit_enemy = event.is_flanking;
35
36 Self {
37 time: event.time,
38 agent: AgentId::from_src(event),
39 friendly_fire,
40 skill_id,
41 hit_enemy,
42 tracking_id: event.get_pad_id(),
43 }
44 }
45}
46
47impl TryExtract for MissileRemove {
48 #[inline]
49 fn can_extract(event: &Event) -> bool {
50 event.get_statechange() == StateChange::MissileCreate
51 }
52}