add transfer modes

png-branch
an 2019-02-12 08:33:23 -05:00
parent e412a5e0ec
commit 41a3074fe1
4 changed files with 45 additions and 6 deletions

View File

@ -1,4 +1,5 @@
use crate::durandal::{bin::*, chunk::*, err::*, fx32::*, text::mac_roman_conv};
use crate::{durandal::{bin::*, chunk::*, err::*, fx32::*, text::mac_roman_conv},
marathon::xfer::TransferMode};
use bitflags::bitflags;
use std::fmt;
@ -85,6 +86,9 @@ impl Chunked<Side> for Side
let xfer_tra = c_u16b(b, 46)?;
let shade = c_u32b(b, 48)?;
let flags = ok!(SideFlags::from_bits(flags), "bad SideFlags")?;
let xfer_pri = TransferMode::from_repr(xfer_pri)?;
let xfer_sec = TransferMode::from_repr(xfer_sec)?;
let xfer_tra = TransferMode::from_repr(xfer_tra)?;
let shade = Fx32::from_bits(shade);
Ok(Side{stype, flags, tex_pri, tex_sec, tex_tra, ex_tleft, ex_trigh,
ex_bleft, ex_brigh, paneltyp, paneldat, xfer_pri, xfer_sec,
@ -165,9 +169,9 @@ pub struct Side
ex_brigh: Point,
paneltyp: u16,
paneldat: i16,
xfer_pri: u16,
xfer_sec: u16,
xfer_tra: u16,
xfer_pri: TransferMode,
xfer_sec: TransferMode,
xfer_tra: TransferMode,
shade: Fx32,
}

View File

@ -6,5 +6,6 @@ pub mod pict;
pub mod shp;
pub mod term;
pub mod wad;
pub mod xfer;
// EOF

View File

@ -1,6 +1,7 @@
//! Marathon Shapes format handling.
use crate::durandal::{bin::*, err::*, fx32::*, image::*, text::*};
use crate::{durandal::{bin::*, err::*, fx32::*, image::*, text::*},
marathon::xfer::TransferMode};
use bitflags::bitflags;
fn color(b: &[u8]) -> ResultS<(usize, ColorShp)>
@ -155,6 +156,7 @@ fn sequence(b: &[u8]) -> ResultS<Sequence>
let loop_f = c_u16b(b, 58)?;
let name = mac_roman_conv(ok!(pascal_str(name), "bad string")?);
let v_type = ViewType::from_repr(v_type)?;
let xfer = TransferMode::from_repr(xfer)?;
let snd_beg = ObjID::from_repr(snd_beg);
let snd_key = ObjID::from_repr(snd_key);
let snd_end = ObjID::from_repr(snd_end);
@ -370,7 +372,7 @@ pub struct Sequence
frames: u16,
ticks: u16,
key: u16,
xfer: u16,
xfer: TransferMode,
xfer_pd: u16,
snd_beg: ObjID,
snd_key: ObjID,

32
src/marathon/xfer.rs Normal file
View File

@ -0,0 +1,32 @@
use crate::durandal::err::*;
c_enum! {
#[derive(Debug)]
pub enum TransferMode: u16
{
0 => Normal,
1 => FadeBlack,
2 => Invisibility,
3 => Invisibility2,
4 => Pulsate,
5 => Wobble,
6 => Wobble2,
7 => Static,
8 => Static2,
9 => Sky,
10 => Smear,
11 => StaticFade,
12 => StaticPulse,
13 => FoldIn,
14 => FoldOut,
15 => SlideHorz,
16 => SlideHorz2,
17 => SlideVert,
18 => SlideVert2,
19 => Wander,
20 => Wander2,
21 => BigSky,
}
}
// EOF