more better macro usage
parent
18c221019b
commit
b87ce92d22
|
@ -39,6 +39,10 @@ macro_rules! rd_1 {
|
|||
rd_1!($b u16::from_be_bytes, $nam 2 $n);
|
||||
let $nam = Unit::from_bits($nam);
|
||||
};
|
||||
(BE $b:ident $nam:ident ObjID $n:expr) => {
|
||||
rd_1!($b u16::from_be_bytes, $nam 2 $n);
|
||||
let $nam = ObjID::from_repr($nam);
|
||||
};
|
||||
|
||||
// little endian
|
||||
(LE $b:ident $nam:ident u16 $n:expr) => {
|
||||
|
|
|
@ -44,11 +44,9 @@ pub fn read_sidetex(b: &[u8]) -> ResultS<SideTex>
|
|||
read_data! {
|
||||
6, BE in b =>
|
||||
offs = read_point[0..4];
|
||||
tex_id = u16[4];
|
||||
tex_id = ObjID[4];
|
||||
}
|
||||
|
||||
let tex_id = ObjID::from_repr(tex_id);
|
||||
|
||||
Ok(SideTex{offs, tex_id})
|
||||
}
|
||||
|
||||
|
@ -85,17 +83,13 @@ pub fn read_lins(b: &[u8]) -> ResultS<(Line, usize)>
|
|||
pnt_beg = u16[0];
|
||||
pnt_end = u16[2];
|
||||
flags = u16[4];
|
||||
side_fr = u16[12];
|
||||
side_bk = u16[14];
|
||||
poly_fr = u16[16];
|
||||
poly_bk = u16[18];
|
||||
side_fr = ObjID[12];
|
||||
side_bk = ObjID[14];
|
||||
poly_fr = ObjID[16];
|
||||
poly_bk = ObjID[18];
|
||||
}
|
||||
|
||||
let flags = ok!(LineFlags::from_bits(flags), "bad LineFlags")?;
|
||||
let side_fr = ObjID::from_repr(side_fr);
|
||||
let side_bk = ObjID::from_repr(side_bk);
|
||||
let poly_fr = ObjID::from_repr(poly_fr);
|
||||
let poly_bk = ObjID::from_repr(poly_bk);
|
||||
|
||||
Ok((Line{flags, pnt_beg, pnt_end, side_fr, side_bk, poly_fr, poly_bk}, 32))
|
||||
}
|
||||
|
@ -133,8 +127,8 @@ pub fn read_poly(b: &[u8]) -> ResultS<(Polygon, usize)>
|
|||
128, BE in b =>
|
||||
ptype = u16[0];
|
||||
pdata = i16[4];
|
||||
tex_flr = u16[40];
|
||||
tex_cei = u16[42];
|
||||
tex_flr = ObjID[40];
|
||||
tex_cei = ObjID[42];
|
||||
hei_flr = Unit[44];
|
||||
hei_cei = Unit[46];
|
||||
lit_flr = u16[48];
|
||||
|
@ -143,21 +137,16 @@ pub fn read_poly(b: &[u8]) -> ResultS<(Polygon, usize)>
|
|||
xfr_cei = u16[66];
|
||||
ori_flr = read_point[108..112];
|
||||
ori_cei = read_point[112..116];
|
||||
med_ind = u16[116];
|
||||
med_ind = ObjID[116];
|
||||
med_ctl = u16[118];
|
||||
snd_ind = u16[120];
|
||||
snd_amb = u16[122];
|
||||
snd_rnd = u16[124];
|
||||
snd_amb = ObjID[122];
|
||||
snd_rnd = ObjID[124];
|
||||
}
|
||||
|
||||
let xfr_flr = TransferMode::from_repr(xfr_flr)?;
|
||||
let xfr_cei = TransferMode::from_repr(xfr_cei)?;
|
||||
let ptype = PolyType::from_repr(ptype)?;
|
||||
let tex_flr = ObjID::from_repr(tex_flr);
|
||||
let tex_cei = ObjID::from_repr(tex_cei);
|
||||
let snd_amb = ObjID::from_repr(snd_amb);
|
||||
let snd_rnd = ObjID::from_repr(snd_rnd);
|
||||
let med_ind = ObjID::from_repr(med_ind);
|
||||
|
||||
Ok((Polygon{ptype, pdata, tex_flr, tex_cei, hei_flr, hei_cei, lit_flr,
|
||||
lit_cei, xfr_flr, xfr_cei, ori_flr, ori_cei, med_ind, med_ctl,
|
||||
|
@ -273,13 +262,12 @@ pub fn read_medi(b: &[u8]) -> ResultS<(Media, usize)>
|
|||
orig = read_point[14..18];
|
||||
hei_nrm = Unit[18];
|
||||
min_lt = Fixed[20];
|
||||
texture = u16[24];
|
||||
texture = ObjID[24];
|
||||
xfer = u16[26];
|
||||
}
|
||||
|
||||
let mtype = MediaType::from_repr(mtype)?;
|
||||
let xfer = TransferMode::from_repr(xfer)?;
|
||||
let texture = ObjID::from_repr(texture);
|
||||
let flr_obs = flags != 0;
|
||||
|
||||
Ok((Media{mtype, flr_obs, control, dir, mag, hei_lo, hei_hi, orig, hei_nrm,
|
||||
|
|
|
@ -147,18 +147,15 @@ fn sequence(b: &[u8]) -> ResultS<Sequence>
|
|||
key = u16[44];
|
||||
xfer = u16[46];
|
||||
xfer_pd = u16[48];
|
||||
snd_beg = u16[50];
|
||||
snd_key = u16[52];
|
||||
snd_end = u16[54];
|
||||
snd_beg = ObjID[50];
|
||||
snd_key = ObjID[52];
|
||||
snd_end = ObjID[54];
|
||||
loop_f = u16[58];
|
||||
}
|
||||
|
||||
let name = mac_roman_conv(ok!(pascal_str(name), "bad string")?);
|
||||
let xfer = TransferMode::from_repr(xfer)?;
|
||||
let v_type = ViewType::from_repr(v_type)?;
|
||||
let snd_beg = ObjID::from_repr(snd_beg);
|
||||
let snd_key = ObjID::from_repr(snd_key);
|
||||
let snd_end = ObjID::from_repr(snd_end);
|
||||
|
||||
Ok(Sequence{name, v_type, frames, ticks, key, xfer, xfer_pd, snd_beg,
|
||||
snd_key, snd_end, loop_f})
|
||||
|
|
|
@ -12,7 +12,7 @@ impl Wad<'_>
|
|||
128, BE in b =>
|
||||
wadver = u16[0];
|
||||
dataver = u16[2];
|
||||
origname = u8[4..68] array;
|
||||
origname = mac_roman_conv[4..68] nt;
|
||||
dirofs = u32[72] as usize;
|
||||
numents = u16[76] as usize;
|
||||
appsize = u16[78] as usize;
|
||||
|
@ -20,8 +20,7 @@ impl Wad<'_>
|
|||
wentsize = u16[82] as usize;
|
||||
}
|
||||
|
||||
let wadver = Ver::from_repr(wadver)?;
|
||||
let origname = mac_roman_conv(origname);
|
||||
let wadver = Ver::from_repr(wadver)?;
|
||||
|
||||
let is_old = match wadver {
|
||||
Ver::Base => true,
|
||||
|
|
Loading…
Reference in New Issue