move elseware characterclas/sectionid logic into libpso
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is failing
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	continuous-integration/drone/push Build is failing
				
			This commit is contained in:
		
							parent
							
								
									c309e51f02
								
							
						
					
					
						commit
						240ddc7e84
					
				@ -5,6 +5,8 @@ authors = ["Jake Probst <jake.probst@gmail.com>"]
 | 
			
		||||
edition = "2018"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
psopacket = { path = "psopacket" }
 | 
			
		||||
rand = "0.6.5"
 | 
			
		||||
chrono = "*"
 | 
			
		||||
psopacket = { path = "psopacket" }
 | 
			
		||||
serde = { version = "1.0", features = ["derive"]}
 | 
			
		||||
strum = { version = "0.25.0", features = ["derive"] }
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,11 @@
 | 
			
		||||
// TODO: techniques to enum
 | 
			
		||||
use psopacket::PSOPacketData;
 | 
			
		||||
use crate::{PSOPacketData, PacketParseError};
 | 
			
		||||
use serde::{Serialize, Deserialize};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#[repr(u8)]
 | 
			
		||||
#[derive(PSOPacketData, Debug, Copy, Clone, Hash, PartialEq, Eq)]
 | 
			
		||||
#[derive(PSOPacketData, Debug, Copy, Clone, Hash, PartialEq, Eq, strum::Display, strum::EnumString, Serialize, Deserialize)]
 | 
			
		||||
pub enum CharacterClass {
 | 
			
		||||
    HUmar,
 | 
			
		||||
    HUnewearl,
 | 
			
		||||
@ -25,6 +27,7 @@ impl Default for CharacterClass {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO: TryFrom
 | 
			
		||||
impl std::convert::From<u8> for CharacterClass {
 | 
			
		||||
    fn from(f: u8) -> CharacterClass {
 | 
			
		||||
        match f {
 | 
			
		||||
@ -46,8 +49,54 @@ impl std::convert::From<u8> for CharacterClass {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<CharacterClass> for u8 {
 | 
			
		||||
    fn from(other: CharacterClass) -> u8 {
 | 
			
		||||
        match other {
 | 
			
		||||
             CharacterClass::HUmar => 0,
 | 
			
		||||
             CharacterClass::HUnewearl => 1,
 | 
			
		||||
             CharacterClass::HUcast => 2,
 | 
			
		||||
             CharacterClass::RAmar => 3,
 | 
			
		||||
             CharacterClass::RAcast => 4,
 | 
			
		||||
             CharacterClass::RAcaseal => 5,
 | 
			
		||||
             CharacterClass::FOmarl => 6,
 | 
			
		||||
             CharacterClass::FOnewm => 7,
 | 
			
		||||
             CharacterClass::FOnewearl => 8,
 | 
			
		||||
             CharacterClass::HUcaseal => 9,
 | 
			
		||||
             CharacterClass::FOmar => 10,
 | 
			
		||||
             CharacterClass::RAmarl => 11,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl CharacterClass {
 | 
			
		||||
    pub fn is_human(&self) -> bool {
 | 
			
		||||
        matches!(self,
 | 
			
		||||
                 CharacterClass::HUmar |
 | 
			
		||||
                 CharacterClass::RAmar |
 | 
			
		||||
                 CharacterClass::RAmarl |
 | 
			
		||||
                 CharacterClass::FOmar |
 | 
			
		||||
                 CharacterClass::FOmarl)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn is_newman(&self) -> bool {
 | 
			
		||||
        matches!(self,
 | 
			
		||||
                 CharacterClass::HUnewearl |
 | 
			
		||||
                 CharacterClass::FOnewm |
 | 
			
		||||
                 CharacterClass::FOnewearl)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn is_android(&self) -> bool {
 | 
			
		||||
        matches!(self,
 | 
			
		||||
                 CharacterClass::HUcast |
 | 
			
		||||
                 CharacterClass::HUcaseal |
 | 
			
		||||
                 CharacterClass::RAcast |
 | 
			
		||||
                 CharacterClass::RAcaseal)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#[repr(u8)]
 | 
			
		||||
#[derive(PSOPacketData, Debug, Copy, Clone, Hash, PartialEq, Eq)]
 | 
			
		||||
#[derive(PSOPacketData, Debug, Copy, Clone, Hash, PartialEq, Eq, strum::Display, strum::EnumString, Serialize, Deserialize)]
 | 
			
		||||
pub enum SectionID {
 | 
			
		||||
    Viridia,
 | 
			
		||||
    Greenill,
 | 
			
		||||
@ -67,6 +116,43 @@ impl Default for SectionID {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO: TryFrom
 | 
			
		||||
impl From<u8> for SectionID {
 | 
			
		||||
    fn from(id: u8) -> SectionID {
 | 
			
		||||
        match id {
 | 
			
		||||
            0 => SectionID::Viridia,
 | 
			
		||||
            1 => SectionID::Greenill,
 | 
			
		||||
            2 => SectionID::Skyly,
 | 
			
		||||
            3 => SectionID::Bluefull,
 | 
			
		||||
            4 => SectionID::Purplenum,
 | 
			
		||||
            5 => SectionID::Pinkal,
 | 
			
		||||
            6 => SectionID::Redria,
 | 
			
		||||
            7 => SectionID::Oran,
 | 
			
		||||
            8 => SectionID::Yellowboze,
 | 
			
		||||
            9 => SectionID::Whitill,
 | 
			
		||||
            _ => panic!(),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<SectionID> for u8 {
 | 
			
		||||
    fn from(other: SectionID) -> u8 {
 | 
			
		||||
        match other {
 | 
			
		||||
            SectionID::Viridia => 0,
 | 
			
		||||
            SectionID::Greenill => 1,
 | 
			
		||||
            SectionID::Skyly => 2,
 | 
			
		||||
            SectionID::Bluefull => 3,
 | 
			
		||||
            SectionID::Purplenum => 4,
 | 
			
		||||
            SectionID::Pinkal => 5,
 | 
			
		||||
            SectionID::Redria => 6,
 | 
			
		||||
            SectionID::Oran => 7,
 | 
			
		||||
            SectionID::Yellowboze => 8,
 | 
			
		||||
            SectionID::Whitill => 9,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#[derive(PSOPacketData, Copy, Clone)]
 | 
			
		||||
#[repr(C)]
 | 
			
		||||
 | 
			
		||||
@ -2,3 +2,5 @@
 | 
			
		||||
pub mod settings;
 | 
			
		||||
pub mod character;
 | 
			
		||||
pub mod guildcard;
 | 
			
		||||
 | 
			
		||||
pub use character::{SectionID, CharacterClass};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user