wolfrpg_map_parser/command/picture_command/erase/
state.rs1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::picture_command::erase::base::Base;
4use crate::command::picture_command::erase::delay::Delay;
5use crate::command::picture_command::erase::delay_reset::DelayReset;
6use crate::command::picture_command::erase::range::Range;
7
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9#[derive(PartialEq, Clone)]
10pub enum State {
11 DelayReset(DelayReset),
12 Base(Base),
13 Delay(Delay),
14 Range(Range)
15}
16
17impl State {
18 pub(crate) fn parse_delay_reset(bytes: &[u8], range: bool) -> (usize, Self) {
19 let (bytes_read, state): (usize, DelayReset) = DelayReset::parse(bytes, range);
20
21 (bytes_read, Self::DelayReset(state))
22 }
23
24 pub(crate) fn parse_base(bytes: &[u8]) -> (usize, Self) {
25 let (bytes_read, base): (usize, Base) = Base::parse(bytes);
26
27 (bytes_read, Self::Base(base))
28 }
29
30 pub(crate) fn parse_delay(bytes: &[u8]) -> (usize, Self) {
31 let (bytes_read, delay): (usize, Delay) = Delay::parse(bytes);
32
33 (bytes_read, Self::Delay(delay))
34 }
35
36 pub(crate) fn parse_range(bytes: &[u8]) -> (usize, Self) {
37 let (bytes_read, range): (usize, Range) = Range::parse(bytes);
38
39 (bytes_read, Self::Range(range))
40 }
41}