diff --git a/src/entity/item/weapon.rs b/src/entity/item/weapon.rs index 0309cb8..b9fee33 100644 --- a/src/entity/item/weapon.rs +++ b/src/entity/item/weapon.rs @@ -3,8 +3,7 @@ use serde::{Serialize, Deserialize}; #[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)] pub enum Attribute { - None, - Native, + Native = 1, ABeast, Machine, Dark, @@ -26,8 +25,7 @@ impl WeaponAttribute { #[derive(Debug, Copy, Clone, PartialEq)] pub enum WeaponSpecial { - None, - Draw, + Draw = 1, Drain, Fill, Gush, @@ -893,15 +891,16 @@ impl Weapon { let mut result = [0u8; 16]; result[0..3].copy_from_slice(&self.weapon.value()); result[3] = self.grind; - result[4] = self.special.unwrap_or(WeaponSpecial::None).value(); + result[4] = self.special.map(|s| s.value()).unwrap_or(0); if self.tekked == false { result[4] += 0x80 }; - result[6..8].copy_from_slice(&self.attrs[0].unwrap_or(WeaponAttribute{attr: Attribute::None, value: 0}).value()); - result[8..10].copy_from_slice(&self.attrs[1].unwrap_or(WeaponAttribute{attr: Attribute::None, value: 0}).value()); - result[10..12].copy_from_slice(&self.attrs[2].unwrap_or(WeaponAttribute{attr: Attribute::None, value: 0}).value()); + result[6..8].copy_from_slice(&self.attrs[0].map(|s| s.value()).unwrap_or([0,0])); + result[8..10].copy_from_slice(&self.attrs[1].map(|s| s.value()).unwrap_or([0,0])); + result[10..12].copy_from_slice(&self.attrs[2].map(|s| s.value()).unwrap_or([0,0])); + result } } diff --git a/src/main.rs b/src/main.rs index f587da2..4e06152 100644 --- a/src/main.rs +++ b/src/main.rs @@ -87,8 +87,10 @@ fn main() { item::weapon::Weapon { weapon: item::weapon::WeaponType::Handgun, grind: 5, - special: None, - attrs: [None; 3], + special: Some(item::weapon::WeaponSpecial::Hell), + attrs: [Some(item::weapon::WeaponAttribute{attr: item::weapon::Attribute::Hit, value: 100}), + None, + None,], tekked: true, } ),