Added the ability to load linedefs from a wad file. Also added functions to the linedef type to allow you to check the status of each bit of the flags value making it very easy to check linedef properties.
88 lines
2.3 KiB
Rust
88 lines
2.3 KiB
Rust
mod doomlevel;
|
|
mod wadfile;
|
|
|
|
use doomlevel::DoomLevel;
|
|
use wadfile::WADFile;
|
|
|
|
fn main() {
|
|
let wad_file = WADFile::from_path("WADs/doom1.wad");
|
|
let level = DoomLevel::load_level(&wad_file, wad_file.get_index_from_name("e1m1").unwrap());
|
|
|
|
println!(
|
|
"WAD Path: {}
|
|
|
|
Header:
|
|
Identifier: {}
|
|
Lump Count: {}
|
|
Initial Offset: {}
|
|
Number of Found Lumps: {}",
|
|
wad_file.wad_path,
|
|
wad_file.identifier,
|
|
wad_file.num_lumps,
|
|
wad_file.init_offset,
|
|
wad_file.get_directory_len()
|
|
);
|
|
|
|
println!("First 15 Directory Entries:");
|
|
|
|
for i in 0..15 {
|
|
println!(
|
|
"\t{}\tName {}\tPosition {}\tSize {}",
|
|
i,
|
|
wad_file.get_lump_name(i),
|
|
wad_file.get_lump_offset(i),
|
|
wad_file.get_lump_size(i)
|
|
);
|
|
}
|
|
|
|
println!("\nFirst 15 Vertex Entries for {}:", level.name);
|
|
|
|
for i in 0..15 {
|
|
println!(
|
|
"\t{} - ({}, {})",
|
|
i, level.vertexes[i].x, level.vertexes[i].y
|
|
);
|
|
}
|
|
|
|
let test_linedef = 247;
|
|
|
|
println!("\nLinedef Entry {} for {}:", test_linedef, level.name);
|
|
|
|
println!(
|
|
"Start Vertex: {}
|
|
End Vertex: {}
|
|
Flags: {}
|
|
Special Type: {}
|
|
Sector Tag: {}
|
|
Front Sidedef: {}
|
|
Back Sidedef: {}
|
|
|
|
Flags:
|
|
\tBlocks Players: {}
|
|
\tBlocks Monsters: {}
|
|
\tTwo Sided: {}
|
|
\tUpper Texture Unpegged: {}
|
|
\tLower Texture Unpegged: {}
|
|
\tSecret: {}
|
|
\tBlocks Sound: {}
|
|
\tNever Shows on Automap: {}
|
|
\tAlways Shows on Automap {}",
|
|
level.linedefs[test_linedef].start_vertex,
|
|
level.linedefs[test_linedef].end_vertex,
|
|
level.linedefs[test_linedef].flags,
|
|
level.linedefs[test_linedef].special_type,
|
|
level.linedefs[test_linedef].sector_tag,
|
|
level.linedefs[test_linedef].front_sidedef,
|
|
level.linedefs[test_linedef].back_sidedef,
|
|
level.linedefs[test_linedef].blocks_players(),
|
|
level.linedefs[test_linedef].blocks_monsters(),
|
|
level.linedefs[test_linedef].is_two_sided(),
|
|
level.linedefs[test_linedef].is_upper_unpegged(),
|
|
level.linedefs[test_linedef].is_lower_unpegged(),
|
|
level.linedefs[test_linedef].is_secret(),
|
|
level.linedefs[test_linedef].blocks_sound(),
|
|
level.linedefs[test_linedef].never_automap(),
|
|
level.linedefs[test_linedef].always_automap()
|
|
);
|
|
}
|