wolfrpg_map_parser/command/input_key_command/automatic_input/
mouse_options.rs

1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::input_key_command::automatic_input::mouse_type::MouseType;
4
5#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
6#[derive(PartialEq, Clone)]
7pub struct MouseOptions {
8    left_click: bool,
9    right_click: bool,
10    middle_click: bool,
11    mouse_type: MouseType
12}
13
14impl MouseOptions {
15    pub fn new(options: u8) -> Self {
16        Self {
17            left_click:     options & 0b00000001 != 0,
18            right_click:    options & 0b00000010 != 0,
19            middle_click:   options & 0b00000100 != 0,
20            mouse_type: MouseType::new(options >> 3)
21        }
22    }
23
24    pub fn left_click(&self) -> bool {
25        self.left_click
26    }
27
28    pub fn left_click_mut(&mut self) -> &mut bool {
29        &mut self.left_click
30    }
31
32    pub fn right_click(&self) -> bool {
33        self.right_click
34    }
35
36    pub fn right_click_mut(&mut self) -> &mut bool {
37        &mut self.right_click
38    }
39
40    pub fn middle_click(&self) -> bool {
41        self.middle_click
42    }
43
44    pub fn middle_click_mut(&mut self) -> &mut bool {
45        &mut self.middle_click
46    }
47
48    pub fn mouse_type(&self) -> &MouseType {
49        &self.mouse_type
50    }
51
52    pub fn mouse_type_mut(&mut self) -> &mut MouseType {
53        &mut self.mouse_type
54    }
55}