wolfrpg_map_parser/command/save_load_command/
save_variable.rs

1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::save_load_command::parser::parse_variable_fields;
4
5#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
6#[derive(PartialEq, Clone)]
7pub struct SaveVariable {
8    source_variable: u32,
9    save_number: u32,
10    target_variable: u32,
11    source_is_pointer: bool
12}
13
14impl SaveVariable {
15    pub(crate) fn parse(bytes: &[u8]) -> (usize, Self) {
16        let (mut offset, (source_variable, save_number, target_variable, source_is_pointer))
17            : (usize, (u32, u32, u32, bool)) = parse_variable_fields(bytes);
18
19        offset += 3; // Command end signature
20
21        (offset, Self {
22            source_variable,
23            save_number,
24            target_variable,
25            source_is_pointer
26        })
27    }
28
29    pub fn source_variable(&self) -> u32 {
30        self.source_variable
31    }
32    
33    pub fn source_variable_mut(&mut self) -> &mut u32 {
34        &mut self.source_variable
35    }
36
37    pub fn save_number(&self) -> u32 {
38        self.save_number
39    }
40    
41    pub fn save_number_mut(&mut self) -> &mut u32 {
42        &mut self.save_number
43    }
44
45    pub fn target_variable(&self) -> u32 {
46        self.target_variable
47    }
48    
49    pub fn target_variable_mut(&mut self) -> &mut u32 {
50        &mut self.target_variable
51    }
52
53    pub fn source_is_pointer(&self) -> bool {
54        self.source_is_pointer
55    }
56    
57    pub fn source_is_pointer_mut(&mut self) -> &mut bool {
58        &mut self.source_is_pointer
59    }
60}