wolfrpg_map_parser/command/input_key_command/automatic_input/
state.rs1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::input_key_command::automatic_input::basic::Basic;
4use crate::command::input_key_command::automatic_input::input_type::InputType;
5use crate::command::input_key_command::automatic_input::keyboard::Keyboard;
6use crate::command::input_key_command::automatic_input::mouse::Mouse;
7
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9#[derive(PartialEq, Clone)]
10pub enum State {
11 Basic(Basic),
12 Keyboard(Keyboard),
13 Mouse(Mouse)
14}
15
16impl State {
17 pub(crate) fn parse_base(bytes: &[u8], input_type: &InputType) -> (usize, Self) {
18 match *input_type {
19 InputType::Basic => {
20 let (bytes_read, state): (usize, Basic) = Basic::parse(bytes);
21
22 (bytes_read, Self::Basic(state))
23 }
24
25 InputType::Mouse => {
26 let (bytes_read, mouse): (usize, Mouse) = Mouse::parse(bytes);
27
28 (bytes_read, Self::Mouse(mouse))
29 }
30
31 _ => unreachable!()
32 }
33 }
34
35 pub(crate) fn parse_keyboard(bytes: &[u8], _: &InputType) -> (usize, Self) {
36 let (bytes_read, keyboard): (usize, Keyboard) = Keyboard::parse(bytes);
37
38 (bytes_read, Self::Keyboard(keyboard))
39 }
40}