use std::fmt::Display;
use serde::{Deserialize, Serialize};
#[allow(missing_docs)]
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
#[must_use]
#[repr(u8)]
pub enum Ally {
Garrus,
Jacob,
Miranda,
Jack,
Mordin,
Grunt,
Kasumi,
Legion,
Samara,
Tali,
Thane,
Zaeed,
Morinth,
}
impl Ally {
pub const fn name(self) -> &'static str {
match self {
Self::Garrus => "Garrus",
Self::Grunt => "Grunt",
Self::Jack => "Jack",
Self::Jacob => "Jacob",
Self::Kasumi => "Kasumi",
Self::Legion => "Legion",
Self::Miranda => "Miranda",
Self::Mordin => "Mordin",
Self::Morinth => "Morinth",
Self::Samara => "Samara",
Self::Tali => "Tali",
Self::Thane => "Thane",
Self::Zaeed => "Zaeed",
}
}
pub(crate) const fn to_bit_mask(self) -> u16 {
1 << self as u16
}
}
impl Display for Ally {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.name())
}
}