implement more ESH types
This commit is contained in:
parent
344ec241e7
commit
1339b4da9e
2 changed files with 35 additions and 0 deletions
|
|
@ -6,6 +6,12 @@ use super::stream::{ReadStream, WriteStream};
|
|||
use anyhow::Result;
|
||||
use indexmap::IndexMap;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ESHUnknown {
|
||||
pub data_type: u32,
|
||||
pub data: Vec<u8>
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ESHEntityFlags {
|
||||
pub entity_id: u16,
|
||||
|
|
@ -30,6 +36,7 @@ pub struct ESHRect {
|
|||
|
||||
#[derive(Debug)]
|
||||
pub enum ESHValue {
|
||||
Unknown(ESHUnknown),
|
||||
Bool(bool),
|
||||
Float(f32),
|
||||
Int(i32),
|
||||
|
|
@ -41,6 +48,18 @@ pub enum ESHValue {
|
|||
Rect(ESHRect)
|
||||
}
|
||||
|
||||
impl ESHValue {
|
||||
const TYPE_BOOL: u32 = 1;
|
||||
const TYPE_FLOAT: u32 = 2;
|
||||
const TYPE_INT: u32 = 3;
|
||||
const TYPE_STRING: u32 = 4;
|
||||
const TYPE_SPRITE: u32 = 8;
|
||||
const TYPE_ESBIN: u32 = 11;
|
||||
const TYPE_ENTTITYFLAGS: u32 = 12;
|
||||
const TYPE_FRAME: u32 = 13;
|
||||
const TYPE_RECT: u32 = 14;
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ESH {
|
||||
pub tag: Tag,
|
||||
|
|
|
|||
|
|
@ -52,9 +52,17 @@ impl<'a> ReadStream<'a> {
|
|||
Ok(self.rdr.read_u16::<LittleEndian>()?)
|
||||
}
|
||||
|
||||
pub fn read_i32(&mut self) -> Result<i32> {
|
||||
Ok(self.rdr.read_i32::<LittleEndian>()?)
|
||||
}
|
||||
|
||||
pub fn read_u32(&mut self) -> Result<u32> {
|
||||
Ok(self.rdr.read_u32::<LittleEndian>()?)
|
||||
}
|
||||
|
||||
pub fn read_f32(&mut self) -> Result<f32> {
|
||||
Ok(self.rdr.read_f32::<LittleEndian>()?)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct WriteStream {
|
||||
|
|
@ -95,7 +103,15 @@ impl WriteStream {
|
|||
Ok(self.buf.write_u16::<LittleEndian>(val)?)
|
||||
}
|
||||
|
||||
pub fn write_i32(&mut self, val: i32) -> Result<()> {
|
||||
Ok(self.buf.write_i32::<LittleEndian>(val)?)
|
||||
}
|
||||
|
||||
pub fn write_u32(&mut self, val: u32) -> Result<()> {
|
||||
Ok(self.buf.write_u32::<LittleEndian>(val)?)
|
||||
}
|
||||
|
||||
pub fn write_f32(&mut self, val: f32) -> Result<()> {
|
||||
Ok(self.buf.write_f32::<LittleEndian>(val)?)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue