69 lines
1.6 KiB
Rust
Raw Normal View History

2020-03-18 18:23:08 -07:00
use serde::{Serialize, Deserialize};
2020-03-22 00:13:31 -07:00
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, enum_utils::FromStr, derive_more::Display)]
2020-03-18 18:23:08 -07:00
pub enum Technique {
Foie,
Gifoie,
Rafoie,
Zonde,
Gizonde,
Razonde,
Barta,
Gibarta,
Rabarta,
Grants,
Deband,
Jellen,
Zalure,
Shifta,
Ryuker,
Resta,
Anti,
Reverser,
Megid,
}
2020-04-27 06:55:18 -06:00
impl Technique {
pub fn as_value(&self) -> u8 {
match self {
Technique::Foie => 0,
Technique::Gifoie => 1,
Technique::Rafoie => 2,
Technique::Barta => 3,
Technique::Gibarta => 4,
Technique::Rabarta => 5,
Technique::Zonde => 6,
Technique::Gizonde => 7,
Technique::Razonde => 8,
Technique::Grants => 9,
Technique::Deband => 10,
Technique::Jellen => 11,
Technique::Zalure => 12,
Technique::Shifta => 13,
Technique::Ryuker => 14,
Technique::Resta => 15,
Technique::Anti => 16,
Technique::Reverser => 17,
Technique::Megid => 18,
}
}
}
2020-03-18 18:23:08 -07:00
2020-04-26 21:54:01 -06:00
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
2020-03-18 18:23:08 -07:00
pub struct TechniqueDisk {
pub tech: Technique,
pub level: u32,
}
impl TechniqueDisk {
pub fn as_bytes(&self) -> [u8; 16] {
2020-04-27 06:55:18 -06:00
let mut result = [0; 16];
result[0] = 3;
result[1] = 2;
result[2] = self.level as u8 - 1;
result[4] = self.tech.as_value();
result
2020-03-18 18:23:08 -07:00
}
}