use crate::prelude::*;
use crate::wad::deserialize::reader::DataReader;
use crate::wad::version::GMVersionReq;
pub fn check_2022_5(reader: &mut DataReader) -> Result<Option<GMVersionReq>> {
let target_ver = Ok(Some((2022, 5).into()));
let object_count = reader.read_u32()?;
if object_count < 1 {
return Ok(None); }
let first_object_pointer = reader.read_u32()?;
reader.cur_pos = first_object_pointer + 64;
let vertex_count = reader.read_u32()?;
let Some(position) = vertex_count
.checked_mul(8)
.and_then(|x| x.checked_add(reader.cur_pos + 12))
else {
return Ok(None);
};
if position >= reader.chunk.end_pos {
return target_ver; }
reader.cur_pos = position;
if reader.read_u32()? == 15 {
let sub_event_pointer = reader.read_u32()?;
if reader.cur_pos + 56 == sub_event_pointer {
return Ok(None);
}
}
target_ver
}