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