wolfrpg_map_parser/command/set_string_command/
base.rs1use crate::byte_utils::parse_string;
2#[cfg(feature = "serde")]
3use serde::{Serialize, Deserialize};
4
5#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
6#[derive(PartialEq, Clone)]
7pub struct Base {
8 string: String,
9 replace: Option<String>
10}
11
12impl Base {
13 pub(crate) fn parse(bytes: &[u8]) -> (usize, Self) {
14 let mut offset: usize = 0;
15
16 offset += 1; let string_count: u8 = bytes[offset];
19 offset += 1;
20
21 let (bytes_read, string): (usize, String) = parse_string(&bytes[offset..]);
22 offset += bytes_read;
23
24 let replace: Option<String> = if string_count == 2 {
25 let (bytes_read, replace): (usize, String) = parse_string(&bytes[offset..]);
26 offset += bytes_read;
27
28 Some(replace)
29 } else {
30 None
31 };
32
33 offset += 1; (offset, Self {
36 string,
37 replace
38 })
39 }
40
41 pub fn string(&self) -> &str {
42 &self.string
43 }
44
45 pub fn string_mut(&mut self) -> &mut String {
46 &mut self.string
47 }
48
49 pub fn replace(&self) -> &Option<String> {
50 &self.replace
51 }
52
53 pub fn replace_mut(&mut self) -> &mut Option<String> {
54 &mut self.replace
55 }
56}