add esweapon to item mod.rs and fix dumb mistakes
This commit is contained in:
		
							parent
							
								
									85798c83a2
								
							
						
					
					
						commit
						48b162f221
					
				| @ -1,11 +1,13 @@ | ||||
| // TODO: actually use this
 | ||||
| pub enum SrankError { | ||||
|     InvalidSrankType, | ||||
|     InvalidSrankSpecial, | ||||
|     InvalidSrankName, | ||||
| #[derive(Debug)] | ||||
| pub enum ESWeaponError { | ||||
|     InvalidESWeaponType, | ||||
|     InvalidESWeaponSpecial, | ||||
|     InvalidESWeaponName, | ||||
| } | ||||
| 
 | ||||
| pub enum SrankType { | ||||
| #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] | ||||
| pub enum ESWeaponType { | ||||
|     Saber = 0, | ||||
|     Sword, | ||||
|     Blade, | ||||
| @ -38,49 +40,50 @@ pub enum SrankType { | ||||
|     Axe, | ||||
| } | ||||
| 
 | ||||
| impl SrankType { | ||||
| impl ESWeaponType { | ||||
|     pub fn to_value(&self) -> u8 { | ||||
|         *self as u8 | ||||
|     } | ||||
| 
 | ||||
|     pub fn from_value(value: u8) -> Result<SrankType, SRankError>  { | ||||
|     pub fn from_value(value: u8) -> Result<ESWeaponType, ESWeaponError>  { | ||||
|         match value { | ||||
|             0 => Ok(SrankType::Saber), | ||||
|             1 => Ok(SrankType::Sword), | ||||
|             2 => Ok(SrankType::Blade), | ||||
|             3 => Ok(SrankType::Partisan), | ||||
|             4 => Ok(SrankType::Slicer), | ||||
|             5 => Ok(SrankType::Gun), | ||||
|             6 => Ok(SrankType::Rifle), | ||||
|             7 => Ok(SrankType::Mechgun), | ||||
|             8 => Ok(SrankType::Shot), | ||||
|             9 => Ok(SrankType::Can), | ||||
|             10 => Ok(SrankType::Rod), | ||||
|             11 => Ok(SrankType::Wand), | ||||
|             12 => Ok(SrankType::Twin), | ||||
|             13 => Ok(SrankType::Claw), | ||||
|             14 => Ok(SrankType::Bazooka), | ||||
|             15 => Ok(SrankType::Needle), | ||||
|             16 => Ok(SrankType::Scythe), | ||||
|             17 => Ok(SrankType::Hammer), | ||||
|             18 => Ok(SrankType::Moon), | ||||
|             19 => Ok(SrankType::Psychogun), | ||||
|             20 => Ok(SrankType::Punch), | ||||
|             21 => Ok(SrankType::Windmill), | ||||
|             22 => Ok(SrankType::Harisen), | ||||
|             23 => Ok(SrankType::Katana), | ||||
|             24 => Ok(SrankType::JCutter), | ||||
|             25 => Ok(SrankType::Swords), | ||||
|             26 => Ok(SrankType::Launcher), | ||||
|             27 => Ok(SrankType::Cards), | ||||
|             28 => Ok(SrankType::Knuckle), | ||||
|             29 => Ok(SrankType::Axe), | ||||
|             _ => Err(SrankError::InvalidSrankype), | ||||
|             0 => Ok(ESWeaponType::Saber), | ||||
|             1 => Ok(ESWeaponType::Sword), | ||||
|             2 => Ok(ESWeaponType::Blade), | ||||
|             3 => Ok(ESWeaponType::Partisan), | ||||
|             4 => Ok(ESWeaponType::Slicer), | ||||
|             5 => Ok(ESWeaponType::Gun), | ||||
|             6 => Ok(ESWeaponType::Rifle), | ||||
|             7 => Ok(ESWeaponType::Mechgun), | ||||
|             8 => Ok(ESWeaponType::Shot), | ||||
|             9 => Ok(ESWeaponType::Can), | ||||
|             10 => Ok(ESWeaponType::Rod), | ||||
|             11 => Ok(ESWeaponType::Wand), | ||||
|             12 => Ok(ESWeaponType::Twin), | ||||
|             13 => Ok(ESWeaponType::Claw), | ||||
|             14 => Ok(ESWeaponType::Bazooka), | ||||
|             15 => Ok(ESWeaponType::Needle), | ||||
|             16 => Ok(ESWeaponType::Scythe), | ||||
|             17 => Ok(ESWeaponType::Hammer), | ||||
|             18 => Ok(ESWeaponType::Moon), | ||||
|             19 => Ok(ESWeaponType::Psychogun), | ||||
|             20 => Ok(ESWeaponType::Punch), | ||||
|             21 => Ok(ESWeaponType::Windmill), | ||||
|             22 => Ok(ESWeaponType::Harisen), | ||||
|             23 => Ok(ESWeaponType::Katana), | ||||
|             24 => Ok(ESWeaponType::JCutter), | ||||
|             25 => Ok(ESWeaponType::Swords), | ||||
|             26 => Ok(ESWeaponType::Launcher), | ||||
|             27 => Ok(ESWeaponType::Cards), | ||||
|             28 => Ok(ESWeaponType::Knuckle), | ||||
|             29 => Ok(ESWeaponType::Axe), | ||||
|             _ => Err(ESWeaponError::InvalidESWeaponType), | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| pub enum SrankSpecial { | ||||
| #[derive(Clone, Copy, Debug, PartialEq)] | ||||
| pub enum ESWeaponSpecial { | ||||
|     Jellen = 0, | ||||
|     Zalure, | ||||
|     HPRegen, | ||||
| @ -99,45 +102,46 @@ pub enum SrankSpecial { | ||||
|     Kings, | ||||
| } | ||||
| 
 | ||||
| impl SrankSpecial { | ||||
| impl ESWeaponSpecial { | ||||
|     pub fn to_value(&self) -> u8 { | ||||
|         *self as u8 | ||||
|     } | ||||
| 
 | ||||
|     pub fn from_value(value: u8) -> Result<SrankSpecial, SrankError> { | ||||
|     pub fn from_value(value: u8) -> Result<ESWeaponSpecial, ESWeaponError> { | ||||
|         match value{ | ||||
|             0 => Ok(SrankSpecial::Jellen), | ||||
|             1 => Ok(SrankSpecial::Zalure), | ||||
|             2 => Ok(SrankSpecial::HPRegen), | ||||
|             3 => Ok(SrankSpecial::TPRegen), | ||||
|             4 => Ok(SrankSpecial::Burning), | ||||
|             5 => Ok(SrankSpecial::Tempest), | ||||
|             6 => Ok(SrankSpecial::Blizzard), | ||||
|             7 => Ok(SrankSpecial::Arrest), | ||||
|             8 => Ok(SrankSpecial::Chaos), | ||||
|             9 => Ok(SrankSpecial::Hell), | ||||
|             10 => Ok(SrankSpecial::Spirit), | ||||
|             11 => Ok(SrankSpecial::Berserk), | ||||
|             12 => Ok(SrankSpecial::Demons), | ||||
|             13 => Ok(SrankSpecial::Gush), | ||||
|             14 => Ok(SrankSpecial::Geist), | ||||
|             15 => Ok(SrankSpecial::Kings), | ||||
|             _ => Err(SrankError::InvalidSrankSpecial), | ||||
|             0 => Ok(ESWeaponSpecial::Jellen), | ||||
|             1 => Ok(ESWeaponSpecial::Zalure), | ||||
|             2 => Ok(ESWeaponSpecial::HPRegen), | ||||
|             3 => Ok(ESWeaponSpecial::TPRegen), | ||||
|             4 => Ok(ESWeaponSpecial::Burning), | ||||
|             5 => Ok(ESWeaponSpecial::Tempest), | ||||
|             6 => Ok(ESWeaponSpecial::Blizzard), | ||||
|             7 => Ok(ESWeaponSpecial::Arrest), | ||||
|             8 => Ok(ESWeaponSpecial::Chaos), | ||||
|             9 => Ok(ESWeaponSpecial::Hell), | ||||
|             10 => Ok(ESWeaponSpecial::Spirit), | ||||
|             11 => Ok(ESWeaponSpecial::Berserk), | ||||
|             12 => Ok(ESWeaponSpecial::Demons), | ||||
|             13 => Ok(ESWeaponSpecial::Gush), | ||||
|             14 => Ok(ESWeaponSpecial::Geist), | ||||
|             15 => Ok(ESWeaponSpecial::Kings), | ||||
|             _ => Err(ESWeaponError::InvalidESWeaponSpecial), | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| pub struct SRankWeapon { | ||||
|     pub type: SrankType, | ||||
|     pub special: Option<SrankSpecial>, | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| pub struct ESWeapon { | ||||
|     pub esweapon: ESWeaponType, | ||||
|     pub special: Option<ESWeaponSpecial>, | ||||
|     pub name: String, | ||||
|     pub grind: u8, | ||||
| } | ||||
| 
 | ||||
| impl SRankWeapon { | ||||
|     pub fn new(t: SrankType) -> SRankWeapon { | ||||
|         SRankWeapon { | ||||
|             type: t, | ||||
| impl ESWeapon { | ||||
|     pub fn new(t: ESWeaponType) -> ESWeapon { | ||||
|         ESWeapon { | ||||
|             esweapon: t, | ||||
|             special: None, | ||||
|             name: "".to_owned(), | ||||
|             grind: 0, | ||||
| @ -195,24 +199,24 @@ impl SRankWeapon { | ||||
| 
 | ||||
|     pub fn as_bytes(&self) -> [u8; 16] { | ||||
|         let mut result = [0u8; 16]; | ||||
|         result[1] = 0x70 + self.type.to_value(); | ||||
|         result[2] = self.special.to_value(); | ||||
|         result[1] = 0x70 + self.esweapon.to_value(); | ||||
|         result[2] = self.special.map(|s| s.to_value()).unwrap_or(0); | ||||
|         result[3] = self.grind; | ||||
|         //result[4] = tekked/untekked flag
 | ||||
|         result[6..12].clone_from_slice(self.name.bytes_from_name()); | ||||
|         result[6..12].clone_from_slice(&self.bytes_from_name()); | ||||
|         result | ||||
|     } | ||||
| 
 | ||||
|     // TODO: return Result<SRankWeapon, SRankError>
 | ||||
|     pub fn from_bytes(bytes: [u8; 16]) -> SRankWeapon { | ||||
|         let type = SrankType.from_value(bytes[1] - 0x70).unwrap(); | ||||
|         let special = SrankSpecial.from_value(bytes[2]).unwrap(); | ||||
|     // TODO: return Result<ESWeapon, ESWeaponError>
 | ||||
|     pub fn from_bytes(bytes: [u8; 16]) -> ESWeapon { | ||||
|         let esweapon = ESWeaponType::from_value(bytes[1] - 0x70).unwrap(); | ||||
|         let special = ESWeaponSpecial::from_value(bytes[2]); | ||||
|         let grind = bytes[3]; | ||||
|         let name = SRankWeapon::name_from_bytes(bytes[6..12]); | ||||
|         let name = ESWeapon::name_from_bytes(&bytes[6..12]); | ||||
| 
 | ||||
|         SRankWeapon { | ||||
|             type: type, | ||||
|             special: special, | ||||
|         ESWeapon { | ||||
|             esweapon: esweapon, | ||||
|             special: special.ok(), | ||||
|             grind: grind, | ||||
|             name: name, | ||||
|         } | ||||
|  | ||||
| @ -6,6 +6,7 @@ pub mod tool; | ||||
| pub mod tech; | ||||
| pub mod unit; | ||||
| pub mod mag; | ||||
| pub mod esweapon; | ||||
| 
 | ||||
| use crate::entity::character::CharacterEntityId; | ||||
| use crate::ship::map::MapArea; | ||||
| @ -75,6 +76,7 @@ pub enum ItemType { | ||||
|     Tool(tool::ToolType), | ||||
|     TechniqueDisk(tech::Technique), | ||||
|     Mag(mag::MagType), | ||||
|     ESWeapon(esweapon::ESWeaponType), | ||||
| } | ||||
| 
 | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| @ -91,6 +93,7 @@ pub enum ItemDetail { | ||||
|     Tool(tool::Tool), | ||||
|     TechniqueDisk(tech::TechniqueDisk), | ||||
|     Mag(mag::Mag), | ||||
|     ESWeapon(esweapon::ESWeapon), | ||||
| } | ||||
| 
 | ||||
| impl ItemDetail { | ||||
| @ -110,6 +113,7 @@ impl ItemDetail { | ||||
|             ItemDetail::Tool(t) => ItemType::Tool(t.tool), | ||||
|             ItemDetail::TechniqueDisk(d) => ItemType::TechniqueDisk(d.tech), | ||||
|             ItemDetail::Mag(m) => ItemType::Mag(m.mag), | ||||
|             ItemDetail::ESWeapon(e) => ItemType::ESWeapon(e.esweapon), | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -141,6 +145,7 @@ impl ItemDetail { | ||||
|             ItemDetail::Tool(t) => t.as_individual_bytes(), | ||||
|             ItemDetail::TechniqueDisk(d) => d.as_bytes(), | ||||
|             ItemDetail::Mag(m) => m.as_bytes(), | ||||
|             ItemDetail::ESWeapon(e) => e.as_bytes(), | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user