wolfrpg_map_parser/command/set_variable_plus_command/
state.rs

1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::set_variable_plus_command::character::Character;
4use crate::command::set_variable_plus_command::other::Other;
5use crate::command::set_variable_plus_command::picture::Picture;
6use crate::command::set_variable_plus_command::position::Position;
7
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9#[derive(PartialEq, Clone)]
10pub enum State {
11    Character(Character),
12    Position(Position),
13    Picture(Picture),
14    Other(Other)
15}
16
17impl State {
18    pub(crate) fn parse_character(bytes: &[u8]) -> (usize, Self) {
19        let (bytes_read, character): (usize, Character) = Character::parse(bytes);
20
21        (bytes_read, Self::Character(character))
22    }
23
24    pub(crate) fn parse_position(bytes: &[u8]) -> (usize, Self) {
25        let (bytes_read, position): (usize, Position) = Position::parse(bytes);
26
27        (bytes_read, Self::Position(position))
28    }
29
30    pub(crate) fn parse_picture(bytes: &[u8]) -> (usize, Self) {
31        let (bytes_read, picture): (usize, Picture) = Picture::parse(bytes);
32
33        (bytes_read, Self::Picture(picture))
34    }
35
36    pub(crate) fn parse_other(bytes: &[u8]) -> (usize, Self) {
37        let (bytes_read, other): (usize, Other) = Other::parse(bytes);
38
39        (bytes_read, Self::Other(other))
40    }
41}