wolfrpg_map_parser/command/input_key_command/input_key/
state.rs#[cfg(feature = "serde")]
use serde::Serialize;
use crate::command::input_key_command::input_key::basic::Basic;
use crate::command::input_key_command::input_key::input_type::InputType;
use crate::command::input_key_command::input_key::keyboard_or_pad::KeyboardOrPad;
use crate::command::input_key_command::input_key::mouse::Mouse;
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum State {
Basic(Basic),
KeyboardOrPad(KeyboardOrPad),
Mouse(Mouse)
}
impl State {
pub fn parse_base(bytes: &[u8], input_type: &InputType) -> (usize, Self) {
match *input_type {
InputType::Basic => {
let (bytes_read, state): (usize, Basic) = Basic::parse(bytes);
(bytes_read, Self::Basic(state))
}
InputType::Mouse => {
let (bytes_read, state): (usize , Mouse) = Mouse::parse(bytes);
(bytes_read, Self::Mouse(state))
}
_ => unreachable!()
}
}
pub fn parse_keyboard_or_pad(bytes: &[u8], _ : &InputType) -> (usize, Self) {
let (bytes_read, state): (usize, KeyboardOrPad) = KeyboardOrPad::parse(bytes);
(bytes_read, Self::KeyboardOrPad(state))
}
}