wolfrpg_map_parser/command/input_key_command/input_key/
mouse_options.rs

1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3use crate::command::input_key_command::input_key::mouse_target::MouseTarget;
4
5#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
6#[derive(PartialEq, Clone)]
7pub struct MouseOptions {
8    target: MouseTarget,
9    left_click: bool,
10    right_click: bool,
11    middle_click: bool,
12    wait_for_input: bool
13}
14
15impl MouseOptions {
16    pub fn new(options: u8) -> Self {
17        Self {
18            target: MouseTarget::new(options & 0x0f),
19            left_click:     options & 0b00010000 != 0,
20            right_click:    options & 0b00100000 != 0,
21            middle_click:   options & 0b01000000 != 0,
22            wait_for_input: options & 0b10000000 != 0
23        }
24    }
25
26    pub fn target(&self) -> &MouseTarget {
27        &self.target
28    }
29
30    pub fn target_mut(&mut self) -> &mut MouseTarget {
31        &mut self.target
32    }
33
34    pub fn left_click(&self) -> bool {
35        self.left_click
36    }
37
38    pub fn left_click_mut(&mut self) -> &mut bool {
39        &mut self.left_click
40    }
41
42    pub fn right_click(&self) -> bool {
43        self.right_click
44    }
45
46    pub fn right_click_mut(&mut self) -> &mut bool {
47        &mut self.right_click
48    }
49
50    pub fn middle_click(&self) -> bool {
51        self.middle_click
52    }
53
54    pub fn middle_click_mut(&mut self) -> &mut bool {
55        &mut self.middle_click
56    }
57
58    pub fn wait_for_input(&self) -> bool {
59        self.wait_for_input
60    }
61
62    pub fn wait_for_input_mut(&mut self) -> &mut bool {
63        &mut self.wait_for_input
64    }
65}