|
@ -1,3 +1,4 @@ |
|
|
|
|
|
use std::convert::{TryFrom, Into};
|
|
|
|
|
|
|
|
|
use std::io::{Read, Seek};
|
|
|
use std::io::{Read, Seek};
|
|
|
use crate::{PSOPacketData, PacketParseError};
|
|
|
use crate::{PSOPacketData, PacketParseError};
|
|
@ -63,6 +64,9 @@ pub enum WeaponSpecial { |
|
|
Demons,
|
|
|
Demons,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pub enum WeaponTypeError {
|
|
|
|
|
|
UnknownWeapon(String)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
#[derive(Debug, Copy, Clone)]
|
|
|
#[derive(Debug, Copy, Clone)]
|
|
|
pub enum WeaponType {
|
|
|
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)]
|
|
|
#[derive(Debug, Copy, Clone)]
|
|
|