base impls for what weapontype needs

This commit is contained in:
jake 2019-12-25 00:14:43 -08:00
parent 0d132642b1
commit 70584a4d01

View File

@ -1,3 +1,4 @@
use std::convert::{TryFrom, Into};
use std::io::{Read, Seek};
use crate::{PSOPacketData, PacketParseError};
@ -63,6 +64,9 @@ pub enum WeaponSpecial {
Demons,
}
pub enum WeaponTypeError {
UnknownWeapon(String)
}
#[derive(Debug, Copy, Clone)]
pub enum WeaponType {
@ -81,6 +85,27 @@ impl WeaponType {
}
}
impl TryFrom<&str> for WeaponType {
type Error = WeaponTypeError;
fn try_from(value: &str) -> Result<WeaponType, WeaponTypeError> {
match value {
"Saber" => Ok(WeaponType::Saber),
"Handgun" => Ok(WeaponType::Handgun),
"Cane" => Ok(WeaponType::Cane),
_ => Err(WeaponTypeError::UnknownWeapon(value.to_string()))
}
}
}
impl Into<String> for WeaponType {
fn into(self) -> String {
match self {
WeaponType::Saber => "Saber",
WeaponType::Handgun => "Handgun",
WeaponType::Cane => "Cane",
}.to_string()
}
}
#[derive(Debug, Copy, Clone)]