evtc_parse/
event.rs
1use crate::{util::Endian, Event, Parse, Save};
2use byteorder::{ReadBytesExt, WriteBytesExt};
3use std::io;
4
5impl Parse for Event {
6 type Error = io::Error;
7
8 fn parse(input: &mut impl io::Read) -> Result<Self, Self::Error> {
9 Ok(Self {
10 time: input.read_u64::<Endian>()?,
11 src_agent: input.read_u64::<Endian>()?,
12 dst_agent: input.read_u64::<Endian>()?,
13 value: input.read_i32::<Endian>()?,
14 buff_dmg: input.read_i32::<Endian>()?,
15 overstack_value: input.read_u32::<Endian>()?,
16 skill_id: input.read_u32::<Endian>()?,
17 src_instance_id: input.read_u16::<Endian>()?,
18 dst_instance_id: input.read_u16::<Endian>()?,
19 src_master_instance_id: input.read_u16::<Endian>()?,
20 dst_master_instance_id: input.read_u16::<Endian>()?,
21 affinity: input.read_u8()?,
22 buff: input.read_u8()?,
23 result: input.read_u8()?,
24 is_activation: input.read_u8()?,
25 is_buffremove: input.read_u8()?,
26 is_ninety: input.read_u8()?,
27 is_fifty: input.read_u8()?,
28 is_moving: input.read_u8()?,
29 is_statechange: input.read_u8()?,
30 is_flanking: input.read_u8()?,
31 is_shields: input.read_u8()?,
32 is_offcycle: input.read_u8()?,
33 pad61: input.read_u8()?,
34 pad62: input.read_u8()?,
35 pad63: input.read_u8()?,
36 pad64: input.read_u8()?,
37 })
38 }
39}
40
41impl Save for Event {
42 type Error = io::Error;
43
44 fn save(&self, output: &mut impl io::Write) -> Result<(), Self::Error> {
45 output.write_u64::<Endian>(self.time)?;
46 output.write_u64::<Endian>(self.src_agent)?;
47 output.write_u64::<Endian>(self.dst_agent)?;
48 output.write_i32::<Endian>(self.value)?;
49 output.write_i32::<Endian>(self.buff_dmg)?;
50 output.write_u32::<Endian>(self.overstack_value)?;
51 output.write_u32::<Endian>(self.skill_id)?;
52 output.write_u16::<Endian>(self.src_instance_id)?;
53 output.write_u16::<Endian>(self.dst_instance_id)?;
54 output.write_u16::<Endian>(self.src_master_instance_id)?;
55 output.write_u16::<Endian>(self.dst_master_instance_id)?;
56 output.write_u8(self.affinity)?;
57 output.write_u8(self.buff)?;
58 output.write_u8(self.result)?;
59 output.write_u8(self.is_activation)?;
60 output.write_u8(self.is_buffremove)?;
61 output.write_u8(self.is_ninety)?;
62 output.write_u8(self.is_fifty)?;
63 output.write_u8(self.is_moving)?;
64 output.write_u8(self.is_statechange)?;
65 output.write_u8(self.is_flanking)?;
66 output.write_u8(self.is_shields)?;
67 output.write_u8(self.is_offcycle)?;
68 output.write_u8(self.pad61)?;
69 output.write_u8(self.pad62)?;
70 output.write_u8(self.pad63)?;
71 output.write_u8(self.pad64)
72 }
73}