From 26d9158fb4034fb7b7c0a522d0ae80ad95225597 Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Wed, 7 Sep 2016 22:48:20 -0700 Subject: [PATCH] Implement RemoveObject and RemoveObject2 tags --- src/read.rs | 14 ++++++++++++++ src/types.rs | 1 + src/write.rs | 10 ++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/read.rs b/src/read.rs index c0ba8e659..4013da89a 100644 --- a/src/read.rs +++ b/src/read.rs @@ -349,6 +349,20 @@ impl Reader { Some(TagCode::PlaceObject2) => try!(tag_reader.read_place_object_2()), //Some(TagCode::PlaceObject3) => try!(tag_reader.read_place_object_3()), + Some(TagCode::RemoveObject) => { + Tag::RemoveObject { + character_id: Some(try!(tag_reader.read_u16())), + depth: try!(tag_reader.read_i16()), + } + }, + + Some(TagCode::RemoveObject2) => { + Tag::RemoveObject { + depth: try!(tag_reader.read_i16()), + character_id: None, + } + }, + _ => { let size = length as usize; let mut data = Vec::with_capacity(size); diff --git a/src/types.rs b/src/types.rs index a90197e50..a67bf0b6c 100644 --- a/src/types.rs +++ b/src/types.rs @@ -180,6 +180,7 @@ pub enum Tag { SetBackgroundColor(Color), PlaceObject(Box), + RemoveObject { depth: Depth, character_id: Option }, FileAttributes(FileAttributes), diff --git a/src/write.rs b/src/write.rs index 0bb94601b..0aab16406 100644 --- a/src/write.rs +++ b/src/write.rs @@ -317,6 +317,16 @@ impl Writer { _ => return Err(Error::new(ErrorKind::InvalidData, "Invalid PlaceObject version.")), }, + &Tag::RemoveObject { depth, character_id } => { + if let Some(id) = character_id { + try!(self.write_tag_header(TagCode::RemoveObject, 4)); + try!(self.write_u16(id)); + } else { + try!(self.write_tag_header(TagCode::RemoveObject2, 2)); + } + try!(self.write_i16(depth)); + }, + &Tag::FileAttributes(ref attributes) => { try!(self.write_tag_header(TagCode::FileAttributes, 4)); let mut flags = 0u32;