ui/src/controller_button.rs

116 lines
2.5 KiB
Rust
Raw Normal View History

2023-01-16 11:58:59 +00:00
use anyhow::Result;
#[derive(PartialEq, Eq, Hash, Copy, Clone, Debug)]
pub enum ControllerButton {
A,
B,
Y,
X,
Start,
Select,
RightButton,
LeftButton,
RightTrigger,
LeftTrigger,
DPadUp,
DPadDown,
DPadRight,
DPadLeft,
Guide,
LeftStick,
RightStick,
Misc,
Paddle1,
Paddle2,
Paddle3,
Paddle4,
Touchpad,
}
impl TryFrom<&str> for ControllerButton {
type Error = anyhow::Error;
fn try_from(text: &str) -> Result<Self> {
match text {
"A" => Ok(ControllerButton::A),
"B" => Ok(ControllerButton::B),
"X" => Ok(ControllerButton::X),
"Y" => Ok(ControllerButton::Y),
"Select" => Ok(ControllerButton::Select),
"Start" => Ok(ControllerButton::Start),
"RightButton" => Ok(ControllerButton::RightButton),
"LeftButton" => Ok(ControllerButton::LeftButton),
"RightTrigger" => Ok(ControllerButton::RightTrigger),
"LeftTrigger" => Ok(ControllerButton::LeftTrigger),
"DPadUp" => Ok(ControllerButton::DPadUp),
"DPadDown" => Ok(ControllerButton::DPadDown),
"DPadLeft" => Ok(ControllerButton::DPadLeft),
"DPadRight" => Ok(ControllerButton::DPadRight),
"Guide" => Ok(ControllerButton::Guide),
"LeftStick" => Ok(ControllerButton::LeftStick),
"RightStick" => Ok(ControllerButton::RightStick),
_ => Err(anyhow::Error::msg(format!(
"Failed converting ControllerButton from {}",
text
))),
}
}
}
impl Into<&'static str> for ControllerButton {
fn into(self) -> &'static str {
use ControllerButton::*;
match self {
A => "A",
B => "B",
Y => "Y",
X => "X",
Start => "Start",
Select => "Select",
RightButton => "RightButton",
LeftButton => "LeftButton",
RightTrigger => "RightTrigger",
LeftTrigger => "LeftTrigger",
DPadUp => "DPadUp",
DPadDown => "DPadDown",
DPadRight => "DPadRight",
DPadLeft => "DPadLeft",
Guide => "Guide",
LeftStick => "LeftStick",
RightStick => "RightStick",
Misc => "Misc",
Paddle1 => "Paddle1",
Paddle2 => "Paddle2",
Paddle3 => "Paddle3",
Paddle4 => "Paddle4",
Touchpad => "Touchpad",
}
}
}