Merge pull request '6d is bullshit' (#25) from cool_kid_62 into master
This commit is contained in:
commit
2fd6e6e607
35
src/lib.rs
35
src/lib.rs
@ -111,6 +111,23 @@ impl PSOPacketData for String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
|
pub struct ConsumingBlob {
|
||||||
|
pub blob: Vec<u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PSOPacketData for ConsumingBlob {
|
||||||
|
fn from_bytes<R: Read>(cursor: &mut R) -> Result<ConsumingBlob, PacketParseError> {
|
||||||
|
let mut blob: Vec<u8> = Vec::new();
|
||||||
|
cursor.read_to_end(&mut blob).map_err(|_| PacketParseError::ReadError)?;
|
||||||
|
Ok(ConsumingBlob {
|
||||||
|
blob: blob,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
fn as_bytes(&self) -> Vec<u8> {
|
||||||
|
self.blob.clone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub trait PSOPacket: std::fmt::Debug {
|
pub trait PSOPacket: std::fmt::Debug {
|
||||||
// const CMD: u16;
|
// const CMD: u16;
|
||||||
@ -545,4 +562,22 @@ mod test {
|
|||||||
let bytes = test.as_bytes();
|
let bytes = test.as_bytes();
|
||||||
assert!(bytes[1] == 101);
|
assert!(bytes[1] == 101);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_consuming_blob() {
|
||||||
|
#[pso_packet(0x6D, manual_flag)]
|
||||||
|
struct SixDee {
|
||||||
|
flag: u32,
|
||||||
|
blob: ConsumingBlob,
|
||||||
|
}
|
||||||
|
|
||||||
|
let pkt = vec![76, 0, 109, 0, 1, 0, 0, 0, 109, 0, 0, 0, 68, 0, 0, 0, 140, 0, 0, 0,
|
||||||
|
51, 0, 0, 0, 84, 220, 255, 254, 253, 1, 254, 240, 33, 254, 240,
|
||||||
|
65, 254, 240, 85, 97, 254, 240, 129, 254, 240, 161, 254, 240, 193,
|
||||||
|
254, 240, 169, 225, 13, 1, 16, 0, 33, 16, 0, 65, 16, 0, 97, 0, 16,
|
||||||
|
1, 64, 15, 82, 15, 100, 15, 118, 0, 0];
|
||||||
|
|
||||||
|
let data = SixDee::from_bytes(&pkt);
|
||||||
|
assert!(pkt == data.unwrap().as_bytes());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ use crate::utf8_to_utf16_array;
|
|||||||
use crate::packet::messages::GameMessage;
|
use crate::packet::messages::GameMessage;
|
||||||
//use character::character::FullCharacter;
|
//use character::character::FullCharacter;
|
||||||
use crate::character::character as character;
|
use crate::character::character as character;
|
||||||
|
use crate::ConsumingBlob;
|
||||||
|
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
|
||||||
@ -136,6 +137,11 @@ impl DirectMessage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[pso_packet(0x6D, manual_flag)]
|
||||||
|
struct Like62ButCooler {
|
||||||
|
pub flag: u32,
|
||||||
|
pub blob: ConsumingBlob,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(PSOPacketData, Clone, Copy, Default)]
|
#[derive(PSOPacketData, Clone, Copy, Default)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user