use crate::prelude::*;
use crate::wad::deserialize::reader::DataReader;
use crate::wad::version::GMVersionReq;
pub fn check_2024_6(reader: &mut DataReader) -> Result<Option<GMVersionReq>> {
let target_ver = Ok(Some((2024, 6).into()));
let possible_sound_count = reader.read_u32()?;
let mut sound_pointers: Vec<u32> = Vec::with_capacity(2);
for _ in 0..possible_sound_count {
let pointer = reader.read_u32()?;
if pointer == 0 {
continue;
}
sound_pointers.push(pointer);
if sound_pointers.len() >= 2 {
break;
}
}
if sound_pointers.len() >= 2 {
if sound_pointers[0] + 4 * 9 == sound_pointers[1] - 4 {
return target_ver;
} else if sound_pointers.len() == 1 {
let abs_pos: u32 = sound_pointers[0] + 4 * 9;
if abs_pos % 16 != 4 {
bail!("Expected to be on specific alignment at this point");
}
reader.cur_pos = abs_pos;
if reader.read_u32()? != 0 {
return target_ver;
}
}
}
Ok(None)
}