wolfrpg_map_parser/command/input_key_command/input_key/
state.rs

1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::input_key_command::input_key::basic::Basic;
4use crate::command::input_key_command::input_key::input_type::InputType;
5use crate::command::input_key_command::input_key::keyboard_or_pad::KeyboardOrPad;
6use crate::command::input_key_command::input_key::mouse::Mouse;
7
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9#[derive(PartialEq, Clone)]
10pub enum State {
11    Basic(Basic),
12    KeyboardOrPad(KeyboardOrPad),
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, state): (usize , Mouse) = Mouse::parse(bytes);
27
28                (bytes_read, Self::Mouse(state))
29            }
30
31            _ => unreachable!()
32        }
33    }
34
35    pub(crate) fn parse_keyboard_or_pad(bytes: &[u8], _ : &InputType) -> (usize, Self) {
36        let (bytes_read, state): (usize, KeyboardOrPad) = KeyboardOrPad::parse(bytes);
37
38        (bytes_read, Self::KeyboardOrPad(state))
39    }
40}
41