separate wad/header
parent
5b3c8fcbe1
commit
a2c6e7eeff
14
src/main.rs
14
src/main.rs
|
@ -6,8 +6,7 @@ use std::{collections::HashSet,
|
||||||
|
|
||||||
fn make_tga(fname: &str, im: &impl Image) -> ResultS<()>
|
fn make_tga(fname: &str, im: &impl Image) -> ResultS<()>
|
||||||
{
|
{
|
||||||
let out = fs::File::create(fname)?;
|
let mut out = io::BufWriter::new(fs::File::create(fname)?);
|
||||||
let mut out = io::BufWriter::new(out);
|
|
||||||
write_tga(&mut out, im)
|
write_tga(&mut out, im)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,8 +14,7 @@ fn make_chunk(opt: &Options, cid: &Ident, cnk: &[u8], eid: u16) -> ResultS<()>
|
||||||
{
|
{
|
||||||
let cid = mac_roman_conv(cid);
|
let cid = mac_roman_conv(cid);
|
||||||
let fname = format!("{}/{:04}{}.bin", opt.out_dir, eid, cid);
|
let fname = format!("{}/{:04}{}.bin", opt.out_dir, eid, cid);
|
||||||
let out = fs::File::create(&fname)?;
|
let mut out = io::BufWriter::new(fs::File::create(&fname)?);
|
||||||
let mut out = io::BufWriter::new(out);
|
|
||||||
out.write(cnk)?;
|
out.write(cnk)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -87,7 +85,7 @@ fn process_wad(opt: &Options, b: &[u8]) -> ResultS<()>
|
||||||
let wad = wad::Wad::new(b)?;
|
let wad = wad::Wad::new(b)?;
|
||||||
|
|
||||||
if opt.wad_header {
|
if opt.wad_header {
|
||||||
make_yaml(&wad)?;
|
make_yaml(&wad.head)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (eid, ent) in wad.entries {
|
for (eid, ent) in wad.entries {
|
||||||
|
@ -160,9 +158,9 @@ fn main() -> ResultS<()>
|
||||||
let mut ap = ArgumentParser::new();
|
let mut ap = ArgumentParser::new();
|
||||||
ap.set_description(env!("CARGO_PKG_DESCRIPTION"));
|
ap.set_description(env!("CARGO_PKG_DESCRIPTION"));
|
||||||
ap.add_option(&["-v", "--version"],
|
ap.add_option(&["-v", "--version"],
|
||||||
Print(format!("{} {}",
|
Print(concat!(env!("CARGO_PKG_NAME"),
|
||||||
env!("CARGO_PKG_NAME"),
|
" ",
|
||||||
env!("CARGO_PKG_VERSION"))),
|
env!("CARGO_PKG_VERSION")).to_string()),
|
||||||
"Show the version");
|
"Show the version");
|
||||||
ap.refer(&mut opt.shp_tab)
|
ap.refer(&mut opt.shp_tab)
|
||||||
.add_option(&["--shp-write-tab"], StoreTrue,
|
.add_option(&["--shp-write-tab"], StoreTrue,
|
||||||
|
|
|
@ -55,7 +55,7 @@ impl Wad<'_>
|
||||||
p += entsize + appsize;
|
p += entsize + appsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Wad{wadver, dataver, appsize, origname, entries})
|
Ok(Wad{head: WadHeader{wadver, dataver, appsize, origname}, entries})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,20 +80,26 @@ type Chunk<'a> = &'a [u8];
|
||||||
type ChunkMap<'a> = BTreeMap<Ident, Chunk<'a>>;
|
type ChunkMap<'a> = BTreeMap<Ident, Chunk<'a>>;
|
||||||
type EntryMap<'a> = BTreeMap<u16, Entry<'a>>;
|
type EntryMap<'a> = BTreeMap<u16, Entry<'a>>;
|
||||||
|
|
||||||
|
#[derive(Serialize)]
|
||||||
pub struct Entry<'a>
|
pub struct Entry<'a>
|
||||||
{
|
{
|
||||||
pub chunks: ChunkMap<'a>,
|
pub chunks: ChunkMap<'a>,
|
||||||
pub appdata: &'a [u8],
|
pub appdata: &'a [u8],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct WadHeader
|
||||||
|
{
|
||||||
|
pub wadver: Ver,
|
||||||
|
pub dataver: u16,
|
||||||
|
pub origname: String,
|
||||||
|
pub appsize: usize,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
pub struct Wad<'a>
|
pub struct Wad<'a>
|
||||||
{
|
{
|
||||||
wadver: Ver,
|
pub head: WadHeader,
|
||||||
dataver: u16,
|
|
||||||
origname: String,
|
|
||||||
appsize: usize,
|
|
||||||
#[serde(skip)]
|
|
||||||
pub entries: EntryMap<'a>,
|
pub entries: EntryMap<'a>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue