wolfrpg_map_parser/command/input_key_command/automatic_input/
mouse_options.rs1#[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}