old minf loader

png-branch
an 2019-03-04 07:48:57 -05:00
parent 16c52a1211
commit 132e964f8c
3 changed files with 29 additions and 3 deletions

View File

@ -153,7 +153,7 @@ fn mac_roman_conv_basic_marathon_stuff()
#[test]
fn mac_roman_cstr_tests()
{
assert_eq!(mac_roman_cstr(b"I\xd5ve awaken\0e").unwrap(), "Ive awaken");
assert_eq!(mac_roman_cstr(b"I\xd5ve awaken\0ed").unwrap(), "Ive awaken");
}
// EOF

View File

@ -67,8 +67,33 @@ pub fn read_minf(b: &[u8]) -> ResultS<Minf>
level_name})
}
/// Reads an old `Minf` chunk.
pub fn read_old_minf(b: &[u8]) -> ResultS<Minf>
{
let minf = read_minf(b)?;
let mut entry_flags = if minf.entry_flags.is_empty() {
EntFlags::Solo
} else {
minf.entry_flags
};
if entry_flags.intersects(EntFlags::Solo | EntFlags::Carnage) {
entry_flags.insert(EntFlags::CoOp)
}
Ok(Minf{entry_flags, ..minf})
}
/// Reads an `iidx` chunk.
pub fn read_iidx(b: &[u8]) -> ResultS<(u16, usize)> {Ok((u16b(b), 2))}
pub fn read_iidx(b: &[u8]) -> ResultS<(u16, usize)>
{
if b.len() < 2 {
bail!("not enough data");
}
Ok((u16b(b), 2))
}
/// Reads an `EPNT` chunk.
pub fn read_epnt(b: &[u8]) -> ResultS<(Point, usize)>

View File

@ -11,6 +11,7 @@ pub fn read_chunks(b: &[u8], old_dat: bool, siz_cnk: usize)
let mut chunks = Vec::new();
let mut p = 0;
let map_read_minfo = if old_dat {map::read_old_minf} else {map::read_minf};
let map_read_sides = if old_dat {map::read_old_sids} else {map::read_sids};
let map_read_polys = if old_dat {map::read_old_poly} else {map::read_poly};
let map_read_light = if old_dat {map::read_old_lite} else {map::read_lite};
@ -28,7 +29,7 @@ pub fn read_chunks(b: &[u8], old_dat: bool, siz_cnk: usize)
chunks.push(match &iden.0 {
b"PICT" => Chunk::Pict(pict::load_pict(data)?),
b"Minf" => Chunk::Minf(map::read_minf(data)?),
b"Minf" => Chunk::Minf(map_read_minfo(data)?),
b"iidx" => Chunk::Iidx(rd_array(data, map::read_iidx)?),
b"EPNT" => Chunk::Pnts(rd_array(data, map::read_epnt)?),
b"PNTS" => Chunk::Pnts(rd_array(data, map::read_pnts)?),