the clip has spoken #42
@ -73,18 +73,18 @@ fn read_dat_section_header<T: Read + Seek>(cursor: &mut T, episode: &Episode, ma
 | 
				
			|||||||
    match header {
 | 
					    match header {
 | 
				
			||||||
        DAT_OBJECT_HEADER_ID => {
 | 
					        DAT_OBJECT_HEADER_ID => {
 | 
				
			||||||
            let mut obj_data = vec![0u8; length as usize];
 | 
					            let mut obj_data = vec![0u8; length as usize];
 | 
				
			||||||
            cursor.read(&mut obj_data)?;
 | 
					            cursor.read_exact(&mut obj_data)?;
 | 
				
			||||||
            let mut obj_cursor = Cursor::new(obj_data);
 | 
					            let mut obj_cursor = Cursor::new(obj_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let objects = objects_from_stream(&mut obj_cursor, episode, &map_area);
 | 
					            let objects = objects_from_stream(&mut obj_cursor, episode, map_area);
 | 
				
			||||||
            Ok(DatBlock::Object(objects))
 | 
					            Ok(DatBlock::Object(objects))
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        DAT_ENEMY_HEADER_ID => {
 | 
					        DAT_ENEMY_HEADER_ID => {
 | 
				
			||||||
            let mut enemy_data = vec![0u8; length as usize];
 | 
					            let mut enemy_data = vec![0u8; length as usize];
 | 
				
			||||||
            cursor.read(&mut enemy_data)?;
 | 
					            cursor.read_exact(&mut enemy_data)?;
 | 
				
			||||||
            let mut enemy_cursor = Cursor::new(enemy_data);
 | 
					            let mut enemy_cursor = Cursor::new(enemy_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let enemies = enemy_data_from_stream(&mut enemy_cursor, &map_area, episode);
 | 
					            let enemies = enemy_data_from_stream(&mut enemy_cursor, map_area, episode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Ok(DatBlock::Enemy(enemies))
 | 
					            Ok(DatBlock::Enemy(enemies))
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
@ -100,7 +100,7 @@ fn quest_episode(bin: &[u8]) -> Option<Episode> {
 | 
				
			|||||||
    for bytes in bin.windows(3) {
 | 
					    for bytes in bin.windows(3) {
 | 
				
			||||||
        // set_episode
 | 
					        // set_episode
 | 
				
			||||||
        if bytes[0] == 0xF8 && bytes[1] == 0xBC {
 | 
					        if bytes[0] == 0xF8 && bytes[1] == 0xBC {
 | 
				
			||||||
            return Some(Episode::from_quest(bytes[2]).ok()?)
 | 
					            return Episode::from_quest(bytes[2]).ok()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    None
 | 
					    None
 | 
				
			||||||
@ -121,6 +121,7 @@ fn map_area_mappings(bin: &[u8]) -> MapAreaLookup {
 | 
				
			|||||||
    map_areas.build()
 | 
					    map_areas.build()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[allow(clippy::type_complexity)]
 | 
				
			||||||
fn parse_dat(dat: &[u8], episode: &Episode, map_areas: &MapAreaLookup) -> Result<(Vec<Option<MapEnemy>>, Vec<Option<MapObject>>), ParseDatError> {
 | 
					fn parse_dat(dat: &[u8], episode: &Episode, map_areas: &MapAreaLookup) -> Result<(Vec<Option<MapEnemy>>, Vec<Option<MapObject>>), ParseDatError> {
 | 
				
			||||||
    let mut cursor = Cursor::new(dat);
 | 
					    let mut cursor = Cursor::new(dat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -185,9 +186,9 @@ impl Quest {
 | 
				
			|||||||
        let (enemies, objects) = parse_dat(&dat, &episode, &map_areas)?;
 | 
					        let (enemies, objects) = parse_dat(&dat, &episode, &map_areas)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let mut prs_bin = LegacyPrsEncoder::new(Vec::new());
 | 
					        let mut prs_bin = LegacyPrsEncoder::new(Vec::new());
 | 
				
			||||||
        prs_bin.write(&bin)?;
 | 
					        prs_bin.write_all(&bin)?;
 | 
				
			||||||
        let mut prs_dat = LegacyPrsEncoder::new(Vec::new());
 | 
					        let mut prs_dat = LegacyPrsEncoder::new(Vec::new());
 | 
				
			||||||
        prs_dat.write(&dat)?;
 | 
					        prs_dat.write_all(&dat)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Ok(Quest {
 | 
					        Ok(Quest {
 | 
				
			||||||
            name: name,
 | 
					            name: name,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user