wolfrpg_map_parser/command/set_variable_plus_command/
state.rs1#[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}