might help to include unit.rs
This commit is contained in:
parent
c65994fb7b
commit
c0479f5476
60
src/entity/item/unit.rs
Normal file
60
src/entity/item/unit.rs
Normal file
@ -0,0 +1,60 @@
|
||||
use std::convert::{TryFrom, Into};
|
||||
|
||||
pub enum UnitTypeError {
|
||||
UnknownUnit(String)
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
pub enum UnitType {
|
||||
None
|
||||
}
|
||||
|
||||
impl UnitType {
|
||||
pub fn value(&self) -> [u8; 3] {
|
||||
match self {
|
||||
UnitType::None => [0; 3]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
pub enum UnitModifier {
|
||||
PlusPlus,
|
||||
Plus,
|
||||
Minus,
|
||||
MinusMinus,
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
pub struct Unit {
|
||||
pub unit: UnitType,
|
||||
pub modifier: UnitModifier,
|
||||
}
|
||||
|
||||
|
||||
impl Unit {
|
||||
pub fn as_bytes(&self) -> [u8; 16] {
|
||||
let mut result = [0; 16];
|
||||
result[0..3].copy_from_slice(&self.unit.value());
|
||||
|
||||
match self.modifier {
|
||||
UnitModifier::PlusPlus => {
|
||||
result[7] = 3;
|
||||
},
|
||||
UnitModifier::Plus => {
|
||||
result[7] = 1;
|
||||
},
|
||||
UnitModifier::Minus => {
|
||||
result[7] = 0xFF;
|
||||
result[8] = 0xFF;
|
||||
},
|
||||
UnitModifier::MinusMinus => {
|
||||
result[7] = 0xFE;
|
||||
result[8] = 0xFF;
|
||||
},
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user