wolfrpg_map_parser/command/show_choice_command/
extra_cases.rs

1#[cfg(feature = "serde")]
2use serde::{Serialize, Deserialize};
3
4#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
5#[derive(PartialEq, Clone)]
6pub struct ExtraCases {
7    left_key: bool,
8    right_key: bool,
9    force_exit: bool
10}
11
12impl ExtraCases {
13    pub fn new(extra_cases: u8) -> Self {
14        Self {
15            left_key:   extra_cases & 0b00000001 != 0,
16            right_key:  extra_cases & 0b00000010 != 0,
17            force_exit: extra_cases & 0b00000100 != 0
18        }
19    }
20
21    pub fn count(&self) -> usize {
22        self.left_key as usize
23        + self.right_key as usize
24        + self.force_exit as usize
25    }
26
27    pub fn left_key(&self) -> bool {
28        self.left_key
29    }
30
31    pub fn left_key_mut(&mut self) -> &mut bool {
32        &mut self.left_key
33    }
34
35    pub fn right_key(&self) -> bool {
36        self.right_key
37    }
38
39    pub fn right_key_mut(&mut self) -> &mut bool {
40        &mut self.right_key
41    }
42
43    pub fn force_exit(&self) -> bool {
44        self.force_exit
45    }
46
47    pub fn force_exit_mut(&mut self) -> &mut bool {
48        &mut self.force_exit
49    }
50}