old minf loader
parent
16c52a1211
commit
132e964f8c
|
@ -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(), "I’ve awaken");
|
||||
assert_eq!(mac_roman_cstr(b"I\xd5ve awaken\0ed").unwrap(), "I’ve awaken");
|
||||
}
|
||||
|
||||
// EOF
|
||||
|
|
|
@ -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)>
|
||||
|
|
|
@ -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)?),
|
||||
|
|
Loading…
Reference in New Issue