fix module use

gui-branch
an 2019-04-01 04:50:05 -04:00
parent 7a231fb351
commit c8ebe009e7
8 changed files with 279 additions and 279 deletions

View File

@ -1,14 +1,14 @@
//! `EndPoint` type. //! `EndPoint` type.
use crate::durandal::err::*; use crate::durandal::err::*;
use super::pnts::*; use super::pnts;
/// Reads an `EPNT` chunk. /// Reads an `EPNT` chunk.
pub fn read(b: &[u8]) -> ResultS<(Point, usize)> pub fn read(b: &[u8]) -> ResultS<(pnts::Point, usize)>
{ {
read_data! { read_data! {
endian: BIG, buf: b, size: 16, start: 0, data { endian: BIG, buf: b, size: 16, start: 0, data {
let pnt = read_point[6; 4]; let pnt = pnts::read_o[6; 4];
} }
} }

View File

@ -1,7 +1,7 @@
//! `Light` type. //! `Light` type.
use crate::durandal::{err::*, fixed::Fixed}; use crate::durandal::{err::*, fixed::Fixed};
use super::{ltfn::{self, LightFunc, LightFuncType}, TICKS_PER_SECOND}; use super::{ltfn, TICKS_PER_SECOND};
use bitflags::bitflags; use bitflags::bitflags;
/// Reads a `LITE` chunk. /// Reads a `LITE` chunk.
@ -50,12 +50,12 @@ pub fn read_old(b: &[u8]) -> ResultS<(Light, usize)>
let flags = if on {lite.flags | LightFlags::INIT_ACTIVE} else {lite.flags}; let flags = if on {lite.flags | LightFlags::INIT_ACTIVE} else {lite.flags};
// modify each old light function accordingly // modify each old light function accordingly
let old_lfun = move |func: &LightFunc| -> LightFunc { let old_lfun = move |func: &ltfn::LightFunc| -> ltfn::LightFunc {
LightFunc{ftype: func.ftype, ltfn::LightFunc{ftype: func.ftype,
prd_nrm: if strobe {prd / 4 + 1} else {func.prd_nrm}, prd_nrm: if strobe {prd / 4 + 1} else {func.prd_nrm},
prd_dta: func.prd_dta, prd_dta: func.prd_dta,
val_nrm: if func.val_nrm > 0.into() {max} else {min}, val_nrm: if func.val_nrm > 0.into() {max} else {min},
val_dta: func.val_dta} val_dta: func.val_dta}
}; };
Ok((Light{flags, Ok((Light{flags,
@ -78,12 +78,12 @@ pub struct Light
pub ltype: LightType, pub ltype: LightType,
pub flags: LightFlags, pub flags: LightFlags,
pub phase: i16, pub phase: i16,
pub act_pri: LightFunc, pub act_pri: ltfn::LightFunc,
pub act_sec: LightFunc, pub act_sec: ltfn::LightFunc,
pub act_mid: LightFunc, pub act_mid: ltfn::LightFunc,
pub ina_pri: LightFunc, pub ina_pri: ltfn::LightFunc,
pub ina_sec: LightFunc, pub ina_sec: ltfn::LightFunc,
pub ina_mid: LightFunc, pub ina_mid: ltfn::LightFunc,
pub tag: u16, pub tag: u16,
} }
@ -115,288 +115,288 @@ const OLD_LIGHT_DEFINITIONS: [Light; 8] = [
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Constant, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Constant, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Constant, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Rheostat // Rheostat
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Constant, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Smooth, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 3, prd_nrm: TICKS_PER_SECOND * 3,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Smooth, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 3, prd_nrm: TICKS_PER_SECOND * 3,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Flourescent // Flourescent
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Constant, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Fluorescent, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Fluorescent,
prd_nrm: TICKS_PER_SECOND * 3, prd_nrm: TICKS_PER_SECOND * 3,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Constant, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Strobe // Strobe
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Constant, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Constant, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Constant, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Flicker // Flicker
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Constant, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Flicker, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Flicker,
prd_nrm: TICKS_PER_SECOND * 3, prd_nrm: TICKS_PER_SECOND * 3,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Constant, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Pulsate // Pulsate
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Smooth, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 2, prd_nrm: TICKS_PER_SECOND * 2,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Smooth, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 2 - 1, prd_nrm: TICKS_PER_SECOND * 2 - 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Smooth, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 2 - 1, prd_nrm: TICKS_PER_SECOND * 2 - 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Smooth, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 2, prd_nrm: TICKS_PER_SECOND * 2,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Smooth, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 2 - 1, prd_nrm: TICKS_PER_SECOND * 2 - 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Smooth, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Smooth,
prd_nrm: TICKS_PER_SECOND * 2, prd_nrm: TICKS_PER_SECOND * 2,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Annoying // Annoying
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Random, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Random,
prd_nrm: 2, prd_nrm: 2,
prd_dta: 1, prd_dta: 1,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: 2, prd_nrm: 2,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Random, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Random,
prd_nrm: 1, prd_nrm: 1,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Constant, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
// Energy Efficient // Energy Efficient
Light{ltype: LightType::Normal, Light{ltype: LightType::Normal,
flags: LightFlags::SLAVE_VALUE, flags: LightFlags::SLAVE_VALUE,
phase: 0, phase: 0,
act_pri: LightFunc{ftype: LightFuncType::Constant, act_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_sec: LightFunc{ftype: LightFuncType::Constant, act_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
act_mid: LightFunc{ftype: LightFuncType::Linear, act_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Linear,
prd_nrm: TICKS_PER_SECOND * 2, prd_nrm: TICKS_PER_SECOND * 2,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(1), val_nrm: Fixed::from_int(1),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_pri: LightFunc{ftype: LightFuncType::Constant, ina_pri: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_sec: LightFunc{ftype: LightFuncType::Constant, ina_sec: ltfn::LightFunc{ftype: ltfn::LightFuncType::Constant,
prd_nrm: TICKS_PER_SECOND, prd_nrm: TICKS_PER_SECOND,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
ina_mid: LightFunc{ftype: LightFuncType::Linear, ina_mid: ltfn::LightFunc{ftype: ltfn::LightFuncType::Linear,
prd_nrm: TICKS_PER_SECOND * 2, prd_nrm: TICKS_PER_SECOND * 2,
prd_dta: 0, prd_dta: 0,
val_nrm: Fixed::from_int(0), val_nrm: Fixed::from_int(0),
val_dta: Fixed::from_int(0)}, val_dta: Fixed::from_int(0)},
tag: 0}, tag: 0},
]; ];

View File

@ -2,7 +2,7 @@
use crate::{durandal::{bin::OptU16, err::*, fixed::{Angle, Fixed, Unit}}, use crate::{durandal::{bin::OptU16, err::*, fixed::{Angle, Fixed, Unit}},
marathon::xfer::TransferMode}; marathon::xfer::TransferMode};
use super::pnts::*; use super::pnts;
/// Reads a `medi` chunk. /// Reads a `medi` chunk.
pub fn read(b: &[u8]) -> ResultS<(Media, usize)> pub fn read(b: &[u8]) -> ResultS<(Media, usize)>
@ -16,7 +16,7 @@ pub fn read(b: &[u8]) -> ResultS<(Media, usize)>
let mag = Unit[8]; let mag = Unit[8];
let hei_lo = Unit[10]; let hei_lo = Unit[10];
let hei_hi = Unit[12]; let hei_hi = Unit[12];
let orig = read_point[14; 4]; let orig = pnts::read_o[14; 4];
let hei_nrm = Unit[18]; let hei_nrm = Unit[18];
let min_lt = Fixed[20]; let min_lt = Fixed[20];
let texture = OptU16[24]; let texture = OptU16[24];
@ -42,7 +42,7 @@ pub struct Media
pub mag: Unit, pub mag: Unit,
pub hei_lo: Unit, pub hei_lo: Unit,
pub hei_hi: Unit, pub hei_hi: Unit,
pub orig: Point, pub orig: pnts::Point,
pub hei_nrm: Unit, pub hei_nrm: Unit,
pub min_lt: Fixed, pub min_lt: Fixed,
pub texture: OptU16, pub texture: OptU16,

View File

@ -1,14 +1,14 @@
//! `Note` type. //! `Note` type.
use crate::{durandal::err::*, marathon::text::*}; use crate::{durandal::err::*, marathon::text::*};
use super::pnts::*; use super::pnts;
/// Reads a `NOTE` chunk. /// Reads a `NOTE` chunk.
pub fn read(b: &[u8]) -> ResultS<(Note, usize)> pub fn read(b: &[u8]) -> ResultS<(Note, usize)>
{ {
read_data! { read_data! {
endian: BIG, buf: b, size: 72, start: 0, data { endian: BIG, buf: b, size: 72, start: 0, data {
let pos = read_point[2; 4]; let pos = pnts::read_o[2; 4];
let poly = u16[6]; let poly = u16[6];
let text = mac_roman_cstr[8; 64] no_try; let text = mac_roman_cstr[8; 64] no_try;
} }
@ -22,7 +22,7 @@ pub fn read(b: &[u8]) -> ResultS<(Note, usize)>
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
pub struct Note pub struct Note
{ {
pub pos: Point, pub pos: pnts::Point,
pub poly: u16, pub poly: u16,
pub text: String, pub text: String,
} }

View File

@ -3,7 +3,7 @@
use crate::durandal::{err::*, fixed::Unit}; use crate::durandal::{err::*, fixed::Unit};
/// Reads a `Point` object. /// Reads a `Point` object.
pub fn read_point(b: &[u8]) -> ResultS<Point> pub fn read_o(b: &[u8]) -> ResultS<Point>
{ {
read_data! { read_data! {
endian: BIG, buf: b, size: 4, start: 0, data { endian: BIG, buf: b, size: 4, start: 0, data {
@ -16,7 +16,7 @@ pub fn read_point(b: &[u8]) -> ResultS<Point>
} }
/// Writes a `Point` object. /// Writes a `Point` object.
pub fn write_point(v: Point) -> Vec<u8> pub fn write_o(v: Point) -> Vec<u8>
{ {
let mut o = Vec::with_capacity(4); let mut o = Vec::with_capacity(4);
o.extend(&v.x.to_be_bytes()); o.extend(&v.x.to_be_bytes());
@ -27,7 +27,7 @@ pub fn write_point(v: Point) -> Vec<u8>
/// Reads a `PNTS` chunk. /// Reads a `PNTS` chunk.
pub fn read(b: &[u8]) -> ResultS<(Point, usize)> pub fn read(b: &[u8]) -> ResultS<(Point, usize)>
{ {
Ok((read_point(b)?, 4)) Ok((read_o(b)?, 4))
} }
/// A point in world-space. /// A point in world-space.

View File

@ -2,7 +2,7 @@
use crate::{durandal::{bin::OptU16, err::*, fixed::Unit}, use crate::{durandal::{bin::OptU16, err::*, fixed::Unit},
marathon::xfer::TransferMode}; marathon::xfer::TransferMode};
use super::pnts::*; use super::pnts;
use bitflags::bitflags; use bitflags::bitflags;
/// Reads a polygon for either M1 or M2. /// Reads a polygon for either M1 or M2.
@ -32,8 +32,8 @@ pub fn read(b: &[u8]) -> ResultS<(Polygon, usize)>
endian: BIG, buf: b, size: 128, start: 0, data { endian: BIG, buf: b, size: 128, start: 0, data {
let ptype = u16[0]; let ptype = u16[0];
let pdata = u16[4]; let pdata = u16[4];
let ori_flr = read_point[108; 4]; let ori_flr = pnts::read_o[108; 4];
let ori_cei = read_point[112; 4]; let ori_cei = pnts::read_o[112; 4];
let med_ind = OptU16[116]; let med_ind = OptU16[116];
let med_ctl = u16[118]; let med_ctl = u16[118];
let snd_amb = OptU16[122]; let snd_amb = OptU16[122];
@ -143,8 +143,8 @@ pub struct Polygon
pub lit_cei: u16, pub lit_cei: u16,
pub xfr_flr: TransferMode, pub xfr_flr: TransferMode,
pub xfr_cei: TransferMode, pub xfr_cei: TransferMode,
pub ori_flr: Point, pub ori_flr: pnts::Point,
pub ori_cei: Point, pub ori_cei: pnts::Point,
pub med_ind: OptU16, pub med_ind: OptU16,
pub med_ctl: u16, pub med_ctl: u16,
pub snd_ind: u16, pub snd_ind: u16,

View File

@ -2,7 +2,7 @@
use crate::{durandal::{bin::OptU16, err::*, fixed::Fixed}, use crate::{durandal::{bin::OptU16, err::*, fixed::Fixed},
marathon::xfer::TransferMode}; marathon::xfer::TransferMode};
use super::stex::{self, SideTex}; use super::stex;
use bitflags::bitflags; use bitflags::bitflags;
/// Reads a `SIDS` chunk. /// Reads a `SIDS` chunk.
@ -33,7 +33,7 @@ pub fn read_old(b: &[u8]) -> ResultS<(Side, usize)>
{ {
let (side, siz) = read(b)?; let (side, siz) = read(b)?;
Ok((Side{tex_tra: SideTex{tex_id: OptU16::none(), ..side.tex_tra}, Ok((Side{tex_tra: stex::SideTex{tex_id: OptU16::none(), ..side.tex_tra},
shade: 0.into(), shade: 0.into(),
flags: side.flags | SideFlags::ITEM_OPT, flags: side.flags | SideFlags::ITEM_OPT,
..side}, siz)) ..side}, siz))
@ -46,9 +46,9 @@ pub struct Side
{ {
pub stype: SideType, pub stype: SideType,
pub flags: SideFlags, pub flags: SideFlags,
pub tex_pri: SideTex, pub tex_pri: stex::SideTex,
pub tex_sec: SideTex, pub tex_sec: stex::SideTex,
pub tex_tra: SideTex, pub tex_tra: stex::SideTex,
pub paneltyp: u16, pub paneltyp: u16,
pub paneldat: i16, pub paneldat: i16,
pub xfer_pri: TransferMode, pub xfer_pri: TransferMode,

View File

@ -1,14 +1,14 @@
//! `SideTex` type. //! `SideTex` type.
use crate::durandal::{bin::OptU16, err::*}; use crate::durandal::{bin::OptU16, err::*};
use super::pnts::*; use super::pnts;
/// Reads a `SideTex` object. /// Reads a `SideTex` object.
pub fn read(b: &[u8]) -> ResultS<SideTex> pub fn read(b: &[u8]) -> ResultS<SideTex>
{ {
read_data! { read_data! {
endian: BIG, buf: b, size: 6, start: 0, data { endian: BIG, buf: b, size: 6, start: 0, data {
let offs = read_point[0; 4]; let offs = pnts::read_o[0; 4];
let tex_id = OptU16[4]; let tex_id = OptU16[4];
} }
} }
@ -20,7 +20,7 @@ pub fn read(b: &[u8]) -> ResultS<SideTex>
pub fn write(v: &SideTex) -> Vec<u8> pub fn write(v: &SideTex) -> Vec<u8>
{ {
let mut o = Vec::with_capacity(6); let mut o = Vec::with_capacity(6);
o.extend(write_point(v.offs)); o.extend(pnts::write_o(v.offs));
o.extend(&v.tex_id.to_be_bytes()); o.extend(&v.tex_id.to_be_bytes());
o o
} }
@ -30,7 +30,7 @@ pub fn write(v: &SideTex) -> Vec<u8>
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
pub struct SideTex pub struct SideTex
{ {
pub offs: Point, pub offs: pnts::Point,
pub tex_id: OptU16, pub tex_id: OptU16,
} }