Merge branch 'lump-types'
This commit is contained in:
@@ -48,7 +48,7 @@ pub fn read_level_lump() {
|
|||||||
pub fn read_vertex_lump() {
|
pub fn read_vertex_lump() {
|
||||||
let wad_file = get_wad();
|
let wad_file = get_wad();
|
||||||
|
|
||||||
let vertex_lump = wad_file.get_vertex_lump(wad_file.directory[10].to_owned());
|
let vertex_lump = wad_file.get_vertex_lump(&wad_file.directory[10]);
|
||||||
|
|
||||||
assert_ne!(vertex_lump.vertexes.len(), 0);
|
assert_ne!(vertex_lump.vertexes.len(), 0);
|
||||||
}
|
}
|
||||||
@@ -57,7 +57,7 @@ pub fn read_vertex_lump() {
|
|||||||
pub fn read_num_vertexes() {
|
pub fn read_num_vertexes() {
|
||||||
let wad_file = get_wad();
|
let wad_file = get_wad();
|
||||||
|
|
||||||
let vertex_lump = wad_file.get_vertex_lump(wad_file.directory[10].to_owned());
|
let vertex_lump = wad_file.get_vertex_lump(&wad_file.directory[10]);
|
||||||
|
|
||||||
assert_eq!(vertex_lump.vertexes.len(), 1868 / 4);
|
assert_eq!(vertex_lump.vertexes.len(), 1868 / 4);
|
||||||
}
|
}
|
||||||
@@ -68,9 +68,26 @@ pub fn read_first_vertex() {
|
|||||||
|
|
||||||
let wad_file = get_wad();
|
let wad_file = get_wad();
|
||||||
|
|
||||||
let vertex_lump = wad_file.get_vertex_lump(wad_file.directory[10].to_owned());
|
let vertex_lump = wad_file.get_vertex_lump(&wad_file.directory[10]);
|
||||||
|
|
||||||
let correct_vertex = Vertex { x: 1088, y: -3680 };
|
let correct_vertex = Vertex { x: 1088, y: -3680 };
|
||||||
|
|
||||||
assert_eq!(vertex_lump.get_vertex(0), correct_vertex);
|
assert_eq!(vertex_lump.get_vertex(0), correct_vertex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn get_num_vertex_lumps() {
|
||||||
|
use crate::lumps::{Lump, LumpType};
|
||||||
|
|
||||||
|
let mut vetex_lumps: Vec<Lump> = Vec::new();
|
||||||
|
|
||||||
|
let wad_file = get_wad();
|
||||||
|
|
||||||
|
for entry in 0..wad_file.num_lumps as usize {
|
||||||
|
if let LumpType::Vertex = wad_file.directory[entry].lump_type {
|
||||||
|
vetex_lumps.push(wad_file.directory[entry].to_owned());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(vetex_lumps.len(), 9);
|
||||||
|
}
|
||||||
|
|||||||
@@ -37,7 +37,10 @@ impl WADFile {
|
|||||||
let lump_offset = read_u32_le(&file_buffer[startpos..startpos + 4]);
|
let lump_offset = read_u32_le(&file_buffer[startpos..startpos + 4]);
|
||||||
let size = read_u32_le(&file_buffer[startpos + 4..startpos + 8]);
|
let size = read_u32_le(&file_buffer[startpos + 4..startpos + 8]);
|
||||||
let name = read_ascii(&file_buffer[startpos + 8..startpos + 16]);
|
let name = read_ascii(&file_buffer[startpos + 8..startpos + 16]);
|
||||||
let lump_type = LumpType::Unknown;
|
let lump_type = match name.as_str() {
|
||||||
|
"VERTEXES" => LumpType::Vertex,
|
||||||
|
_ => LumpType::Unknown,
|
||||||
|
};
|
||||||
lump_dir.push(Lump {
|
lump_dir.push(Lump {
|
||||||
name,
|
name,
|
||||||
offset: lump_offset,
|
offset: lump_offset,
|
||||||
@@ -56,12 +59,12 @@ impl WADFile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_vertex_lump(&self, lump: Lump) -> VertexLump {
|
pub fn get_vertex_lump(&self, lump: &Lump) -> VertexLump {
|
||||||
let lump_offset = lump.offset as usize;
|
let lump_offset = lump.offset as usize;
|
||||||
let lump_size = lump.size as usize;
|
let lump_size = lump.size as usize;
|
||||||
let lump_data = &self.data[lump_offset..lump_offset + lump_size];
|
let lump_data = &self.data[lump_offset..lump_offset + lump_size];
|
||||||
let lump_entries: usize = lump_size / 4;
|
let lump_entries: usize = lump_size / 4;
|
||||||
let mut vertexes: Vec<Vertex> = Vec::with_capacity(lump_size / 4);
|
let mut vertexes: Vec<Vertex> = Vec::with_capacity(lump_entries);
|
||||||
|
|
||||||
for entry in 0..lump_entries {
|
for entry in 0..lump_entries {
|
||||||
let startpos = entry * 4;
|
let startpos = entry * 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user