const HITGROUPS: &[(i64, &str)] = &[
(-1, "invalid"),
(0, "generic"),
(1, "head"),
(2, "chest"),
(3, "stomach"),
(4, "left_arm"),
(5, "right_arm"),
(6, "left_leg"),
(7, "right_leg"),
(8, "neck"),
(9, "unused"),
(10, "gear"),
(11, "special"),
(12, "t2_boss_front_left_leg_weakpoint"),
(13, "t2_boss_front_right_leg_weakpoint"),
(14, "t2_boss_rear_left_leg_weakpoint"),
(15, "t2_boss_rear_right_leg_weakpoint"),
(16, "t2_boss_head_weakpoint"),
(17, "t2_boss_back_weakpoint"),
(18, "drone_boss_drone_weakpoint"),
(19, "head_no_resist"),
];
pub fn hitgroup_name(id: i64) -> &'static str {
HITGROUPS
.iter()
.find(|&&(k, _)| k == id)
.map(|&(_, v)| v)
.unwrap_or("HITGROUP_NOT_FOUND")
}
pub fn all_hitgroups() -> &'static [(i64, &'static str)] {
HITGROUPS
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn known_hitgroup_generic() {
assert_eq!(hitgroup_name(0), "generic");
}
#[test]
fn known_hitgroup_head() {
assert_eq!(hitgroup_name(1), "head");
}
#[test]
fn known_hitgroup_invalid() {
assert_eq!(hitgroup_name(-1), "invalid");
}
#[test]
fn known_hitgroup_head_no_resist() {
assert_eq!(hitgroup_name(19), "head_no_resist");
}
#[test]
fn count_sentinel_not_present() {
assert_eq!(hitgroup_name(20), "HITGROUP_NOT_FOUND");
}
#[test]
fn unknown_hitgroup() {
assert_eq!(hitgroup_name(99), "HITGROUP_NOT_FOUND");
}
#[test]
fn all_hitgroups_count() {
assert_eq!(all_hitgroups().len(), 21);
}
}