rename ObjID to OptShort
parent
b87ce92d22
commit
e2b29195dd
|
@ -446,8 +446,8 @@ is 6.9s, but the integral part is ignored. "No angle" is represented by 65510
|
|||
The type "`unit`" refers to a 16-bit fixed point number with the format 5.10s.
|
||||
This is used for all world coordinates.
|
||||
|
||||
An "Object ID" is a 16-bit integer which references something by index. If all
|
||||
bits are set, it is to be interpreted as "none." Traditionally, these are
|
||||
An "Optional Short" is a 16-bit integer which references something by index. If
|
||||
all bits are set, it is to be interpreted as "none." Traditionally, these are
|
||||
signed integers, but they can be treated as unsigned with no repercussions.
|
||||
|
||||
## Wad ##
|
||||
|
@ -580,7 +580,7 @@ Side Texture is 6 bytes. Just stores a texture and an offset.
|
|||
| `OffsetY` | `unit` | `2` |
|
||||
| `TextureId` | `u16` | `4` |
|
||||
|
||||
- `TextureId` is an Object ID referencing a Shapes bitmap.
|
||||
- `TextureId` is an Optional Short referencing a Shapes bitmap.
|
||||
|
||||
### Point ###
|
||||
|
||||
|
@ -631,9 +631,10 @@ Line is 32 bytes. A geometric line segment.
|
|||
- `Flags` is a Line Flags bit field.
|
||||
- `HeightHi` and `HeightLo` are the highest adjacent ceiling and lowest
|
||||
adjacent floor heights, respectively.
|
||||
- `SideFrnt` and `SideBack` are Object ID indices of the Sides in the front and
|
||||
back.
|
||||
- `PolyFrnt` and `PolyBack` are Object ID indices of the connected Polygons.
|
||||
- `SideFrnt` and `SideBack` are Optional Short indices of the Sides in the
|
||||
front and back.
|
||||
- `PolyFrnt` and `PolyBack` are Optional Short indices of the connected
|
||||
Polygons.
|
||||
|
||||
### Side ###
|
||||
|
||||
|
@ -718,9 +719,9 @@ shape and automatically split them.)
|
|||
- `Center` is a Point structure.
|
||||
- `OrigFlr` is a Point structure for the texture offset of the floor.
|
||||
- `OrigCei` is a Point structure for the texture offset of the ceiling.
|
||||
- `Media` is an Object ID.
|
||||
- `SoundAmbient` is an Object ID.
|
||||
- `SoundRandom` is an Object ID.
|
||||
- `Media` is an Optional Short.
|
||||
- `SoundAmbient` is an Optional Short.
|
||||
- `SoundRandom` is an Optional Short.
|
||||
|
||||
### Light ###
|
||||
|
||||
|
@ -853,7 +854,7 @@ part of the map in the middle of a wall.
|
|||
- `Flags` is a Media Flags bit field.
|
||||
- `Control` is the index of a light which is used to control the height of this
|
||||
media.
|
||||
- `Texture` is an Object ID representing the texture index.
|
||||
- `Texture` is an Optional Short representing the texture index.
|
||||
- `XferMode` is a Transfer Mode enumeration.
|
||||
|
||||
### Static Map Info ###
|
||||
|
@ -1184,7 +1185,7 @@ Frame is 36 bytes. TODO: document how world transform works.
|
|||
|
||||
- `Flags` is a Frame Flags bit field.
|
||||
- `MinLight` is the minimum light intensity (0-1.)
|
||||
- `BmpIndex` is an Object ID for the bitmap index.
|
||||
- `BmpIndex` is an Optional Short for the bitmap index.
|
||||
|
||||
### Sequence ###
|
||||
|
||||
|
@ -1287,7 +1288,7 @@ Sound Definition is 64 bytes.
|
|||
| `GroupSize` | `u32` | `28` |
|
||||
| `AddOffset` | `u32[5]` | `32` |
|
||||
|
||||
- `Code` is an Object ID referencing something (TODO.)
|
||||
- `Code` is an Optional Short referencing something (TODO.)
|
||||
- `Volume` is a Sound Behaviour enumeration.
|
||||
- `Flags` is a Sound Definition Flags bit field.
|
||||
- `Chance` is the chance out of `65535` that the sound will not play.
|
||||
|
|
|
@ -39,9 +39,9 @@ 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) => {
|
||||
(BE $b:ident $nam:ident OptShort $n:expr) => {
|
||||
rd_1!($b u16::from_be_bytes, $nam 2 $n);
|
||||
let $nam = ObjID::from_repr($nam);
|
||||
let $nam = OptShort::from_repr($nam);
|
||||
};
|
||||
|
||||
// little endian
|
||||
|
@ -154,19 +154,19 @@ pub fn rd_ofstable<T, F>(b: &[u8],
|
|||
Ok(v)
|
||||
}
|
||||
|
||||
impl ObjID
|
||||
impl OptShort
|
||||
{
|
||||
/// Creates an `ObjID` from a `u16`.
|
||||
pub fn from_repr(n: u16) -> ObjID
|
||||
/// Creates an `OptShort` from a `u16`.
|
||||
pub fn from_repr(n: u16) -> OptShort
|
||||
{
|
||||
if n == u16::max_value() {
|
||||
ObjID(None)
|
||||
OptShort(None)
|
||||
} else {
|
||||
ObjID(NonZeroU16::new(n + 1))
|
||||
OptShort(NonZeroU16::new(n + 1))
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the `u16` representation of an `ObjID`.
|
||||
/// Returns the `u16` representation of an `OptShort`.
|
||||
pub fn get_repr(&self) -> u16
|
||||
{
|
||||
match self.0 {
|
||||
|
@ -175,7 +175,7 @@ impl ObjID
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns the `Option` representation of an `ObjID`.
|
||||
/// Returns the `Option` representation of an `OptShort`.
|
||||
pub fn get(&self) -> Option<u16>
|
||||
{
|
||||
match self.0 {
|
||||
|
@ -185,13 +185,13 @@ impl ObjID
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for ObjID
|
||||
impl fmt::Debug for OptShort
|
||||
{
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result
|
||||
{
|
||||
match self.get() {
|
||||
None => write!(f, "ObjID(None)"),
|
||||
Some(n) => write!(f, "ObjID({})", n),
|
||||
None => write!(f, "None"),
|
||||
Some(n) => write!(f, "Some({})", n),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -202,6 +202,6 @@ pub type Ident = [u8; 4];
|
|||
/// An object identified by a `u16` which may be `u16::max_value()` to
|
||||
/// represent None.
|
||||
#[derive(Serialize)]
|
||||
pub struct ObjID(Option<NonZeroU16>);
|
||||
pub struct OptShort(Option<NonZeroU16>);
|
||||
|
||||
// EOF
|
||||
|
|
|
@ -44,7 +44,7 @@ pub fn read_sidetex(b: &[u8]) -> ResultS<SideTex>
|
|||
read_data! {
|
||||
6, BE in b =>
|
||||
offs = read_point[0..4];
|
||||
tex_id = ObjID[4];
|
||||
tex_id = OptShort[4];
|
||||
}
|
||||
|
||||
Ok(SideTex{offs, tex_id})
|
||||
|
@ -83,10 +83,10 @@ pub fn read_lins(b: &[u8]) -> ResultS<(Line, usize)>
|
|||
pnt_beg = u16[0];
|
||||
pnt_end = u16[2];
|
||||
flags = u16[4];
|
||||
side_fr = ObjID[12];
|
||||
side_bk = ObjID[14];
|
||||
poly_fr = ObjID[16];
|
||||
poly_bk = ObjID[18];
|
||||
side_fr = OptShort[12];
|
||||
side_bk = OptShort[14];
|
||||
poly_fr = OptShort[16];
|
||||
poly_bk = OptShort[18];
|
||||
}
|
||||
|
||||
let flags = ok!(LineFlags::from_bits(flags), "bad LineFlags")?;
|
||||
|
@ -127,8 +127,8 @@ pub fn read_poly(b: &[u8]) -> ResultS<(Polygon, usize)>
|
|||
128, BE in b =>
|
||||
ptype = u16[0];
|
||||
pdata = i16[4];
|
||||
tex_flr = ObjID[40];
|
||||
tex_cei = ObjID[42];
|
||||
tex_flr = OptShort[40];
|
||||
tex_cei = OptShort[42];
|
||||
hei_flr = Unit[44];
|
||||
hei_cei = Unit[46];
|
||||
lit_flr = u16[48];
|
||||
|
@ -137,11 +137,11 @@ 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 = ObjID[116];
|
||||
med_ind = OptShort[116];
|
||||
med_ctl = u16[118];
|
||||
snd_ind = u16[120];
|
||||
snd_amb = ObjID[122];
|
||||
snd_rnd = ObjID[124];
|
||||
snd_amb = OptShort[122];
|
||||
snd_rnd = OptShort[124];
|
||||
}
|
||||
|
||||
let xfr_flr = TransferMode::from_repr(xfr_flr)?;
|
||||
|
@ -262,7 +262,7 @@ pub fn read_medi(b: &[u8]) -> ResultS<(Media, usize)>
|
|||
orig = read_point[14..18];
|
||||
hei_nrm = Unit[18];
|
||||
min_lt = Fixed[20];
|
||||
texture = ObjID[24];
|
||||
texture = OptShort[24];
|
||||
xfer = u16[26];
|
||||
}
|
||||
|
||||
|
@ -304,17 +304,17 @@ pub struct Line
|
|||
pub flags: LineFlags,
|
||||
pub pnt_beg: u16,
|
||||
pub pnt_end: u16,
|
||||
pub side_fr: ObjID,
|
||||
pub side_bk: ObjID,
|
||||
pub poly_fr: ObjID,
|
||||
pub poly_bk: ObjID,
|
||||
pub side_fr: OptShort,
|
||||
pub side_bk: OptShort,
|
||||
pub poly_fr: OptShort,
|
||||
pub poly_bk: OptShort,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct SideTex
|
||||
{
|
||||
pub offs: Point,
|
||||
pub tex_id: ObjID,
|
||||
pub tex_id: OptShort,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
|
@ -338,8 +338,8 @@ pub struct Polygon
|
|||
{
|
||||
pub ptype: PolyType,
|
||||
pub pdata: i16,
|
||||
pub tex_flr: ObjID,
|
||||
pub tex_cei: ObjID,
|
||||
pub tex_flr: OptShort,
|
||||
pub tex_cei: OptShort,
|
||||
pub hei_flr: Unit,
|
||||
pub hei_cei: Unit,
|
||||
pub lit_flr: u16,
|
||||
|
@ -348,11 +348,11 @@ pub struct Polygon
|
|||
pub xfr_cei: TransferMode,
|
||||
pub ori_flr: Point,
|
||||
pub ori_cei: Point,
|
||||
pub med_ind: ObjID,
|
||||
pub med_ind: OptShort,
|
||||
pub med_ctl: u16,
|
||||
pub snd_ind: u16,
|
||||
pub snd_amb: ObjID,
|
||||
pub snd_rnd: ObjID,
|
||||
pub snd_amb: OptShort,
|
||||
pub snd_rnd: OptShort,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
|
@ -440,7 +440,7 @@ pub struct Media
|
|||
pub orig: Point,
|
||||
pub hei_nrm: Unit,
|
||||
pub min_lt: Fixed,
|
||||
pub texture: ObjID,
|
||||
pub texture: OptShort,
|
||||
pub xfer: TransferMode,
|
||||
}
|
||||
|
||||
|
|
|
@ -147,9 +147,9 @@ fn sequence(b: &[u8]) -> ResultS<Sequence>
|
|||
key = u16[44];
|
||||
xfer = u16[46];
|
||||
xfer_pd = u16[48];
|
||||
snd_beg = ObjID[50];
|
||||
snd_key = ObjID[52];
|
||||
snd_end = ObjID[54];
|
||||
snd_beg = OptShort[50];
|
||||
snd_key = OptShort[52];
|
||||
snd_end = OptShort[54];
|
||||
loop_f = u16[58];
|
||||
}
|
||||
|
||||
|
@ -355,9 +355,9 @@ pub struct Sequence
|
|||
key: u16,
|
||||
xfer: TransferMode,
|
||||
xfer_pd: u16,
|
||||
snd_beg: ObjID,
|
||||
snd_key: ObjID,
|
||||
snd_end: ObjID,
|
||||
snd_beg: OptShort,
|
||||
snd_key: OptShort,
|
||||
snd_end: OptShort,
|
||||
loop_f: u16,
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue