dualsense_tools/virtual_controller/
hat.rs1use std::fmt::Display;
2
3use crate::state::HatDirection;
4
5#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Hash)]
7pub enum Hat {
8 Up,
9 UpRight,
10 Right,
11 DownRight,
12 Down,
13 DownLeft,
14 Left,
15 UpLeft,
16 #[default]
17 Neutral,
18}
19
20impl Display for Hat {
21 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22 match self {
23 Hat::Up => f.write_str("Up"),
24 Hat::UpRight => f.write_str("UpRight"),
25 Hat::Right => f.write_str("Right"),
26 Hat::DownRight => f.write_str("DownRight"),
27 Hat::Down => f.write_str("Down"),
28 Hat::DownLeft => f.write_str("DownLeft"),
29 Hat::Left => f.write_str("Left"),
30 Hat::UpLeft => f.write_str("UpLeft"),
31 Hat::Neutral => f.write_str("Neutral"),
32 }
33 }
34}
35
36impl From<HatDirection> for Hat {
37 fn from(val: HatDirection) -> Self {
38 match val {
39 HatDirection::Up => Hat::Up,
40 HatDirection::UpRight => Hat::UpRight,
41 HatDirection::Right => Hat::Right,
42 HatDirection::DownRight => Hat::DownRight,
43 HatDirection::Down => Hat::Down,
44 HatDirection::DownLeft => Hat::DownLeft,
45 HatDirection::Left => Hat::Left,
46 HatDirection::UpLeft => Hat::UpLeft,
47 HatDirection::Neutral => Hat::Neutral,
48 }
49 }
50}