1mod arc_build;
2mod error;
3
4pub use self::{arc_build::*, error::*};
5
6use crate::{extract::Extract, Event, StateChange, TryExtract};
7
8#[cfg(feature = "serde")]
9use serde::{Deserialize, Serialize};
10
11#[derive(Debug, Clone)]
13#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
14pub struct LogEvent {
15 pub time: u64,
17
18 pub server_time: u32,
20
21 pub local_time: u32,
23
24 pub id: u64,
26}
27
28impl Extract for LogEvent {
29 #[inline]
30 unsafe fn extract(event: &Event) -> Self {
31 Self {
32 time: event.time,
33 server_time: event.value.cast_unsigned(),
34 local_time: event.buff_dmg.cast_unsigned(),
35 id: event.src_agent,
36 }
37 }
38}
39
40impl TryExtract for LogEvent {
41 #[inline]
42 fn can_extract(event: &Event) -> bool {
43 matches!(
44 event.get_statechange(),
45 StateChange::SquadCombatStart | StateChange::SquadCombatEnd | StateChange::LogNPCUpdate
46 )
47 }
48}