- Separated the linedef activation types into a bit mask that allows combination

of all types on the same linedef. Also added a 'first side only' flag. This
  is not usable from Hexen or Doom format maps though but in preparation of
  the UDMF format discussed here:
  http://www.doomworld.com/vb/source-ports/43145-udmf-v0-99-specification-draft-aka-textmap/
- Changed linedef's alpha property from a byte to fixed point after seeing that
  255 wasn't handled to be fully opaque.
- fixed a GCC warning in fmodsound.cpp 

SVN r954 (trunk)
This commit is contained in:
Christoph Oelckers 2008-05-02 10:55:48 +00:00
commit 9a410f864f
21 changed files with 162 additions and 148 deletions

View file

@ -1281,7 +1281,7 @@ static void CheckForPushSpecial (line_t *line, int side, AActor *mobj)
{
if (mobj->flags2 & MF2_PUSHWALL)
{
P_ActivateLine (line, mobj, side, SPAC_PUSH);
P_ActivateLine (line, mobj, side, SPAC_Push);
}
else if (mobj->flags2 & MF2_IMPACT)
{
@ -1289,11 +1289,11 @@ static void CheckForPushSpecial (line_t *line, int side, AActor *mobj)
!(mobj->flags & MF_MISSILE) ||
(mobj->target == NULL))
{
P_ActivateLine (line, mobj, side, SPAC_IMPACT);
P_ActivateLine (line, mobj, side, SPAC_Impact);
}
else
{
P_ActivateLine (line, mobj->target, side, SPAC_IMPACT);
P_ActivateLine (line, mobj->target, side, SPAC_Impact);
}
}
}
@ -1537,27 +1537,25 @@ bool P_TryMove (AActor *thing, fixed_t x, fixed_t y,
{
if (thing->player)
{
P_ActivateLine (ld, thing, oldside, SPAC_CROSS);
P_ActivateLine (ld, thing, oldside, SPAC_Cross);
}
else if (thing->flags2 & MF2_MCROSS)
{
P_ActivateLine (ld, thing, oldside, SPAC_MCROSS);
P_ActivateLine (ld, thing, oldside, SPAC_MCross);
}
else if (thing->flags2 & MF2_PCROSS)
{
P_ActivateLine (ld, thing, oldside, SPAC_PCROSS);
P_ActivateLine (ld, thing, oldside, SPAC_PCross);
}
else if ((ld->special == Teleport ||
ld->special == Teleport_NoFog ||
ld->special == Teleport_Line))
{ // [RH] Just a little hack for BOOM compatibility
P_ActivateLine (ld, thing, oldside, SPAC_MCROSS);
P_ActivateLine (ld, thing, oldside, SPAC_MCross);
}
else
{
// I don't think allowing non-monsters to activate
// monster-allowed lines will hurt Hexen compatibility.
P_ActivateLine (ld, thing, oldside, SPAC_OTHERCROSS);
P_ActivateLine (ld, thing, oldside, SPAC_AnyCross);
}
}
}
@ -3164,8 +3162,7 @@ bool P_UseTraverse(AActor *usething, fixed_t endx, fixed_t endy, bool &foundline
if (open.range <= 0) return false;
else continue;
}
if (in->d.line->special == 0 || (GET_SPAC(in->d.line->flags) != SPAC_USETHROUGH &&
GET_SPAC(in->d.line->flags) != SPAC_USE))
if (in->d.line->special == 0 || !(in->d.line->activation & (SPAC_Use|SPAC_UseThrough)))
{
blocked:
if (in->d.line->flags & ML_BLOCKEVERYTHING)
@ -3215,7 +3212,7 @@ bool P_UseTraverse(AActor *usething, fixed_t endx, fixed_t endy, bool &foundline
//return in->d.line->backsector != NULL; // don't use back side
goto blocked; // do a proper check for back sides of triggers
P_ActivateLine (in->d.line, usething, 0, SPAC_USE);
P_ActivateLine (in->d.line, usething, 0, SPAC_Use);
//WAS can't use more than one special line in a row
//jff 3/21/98 NOW multiple use allowed with enabling line flag
@ -3224,12 +3221,12 @@ bool P_UseTraverse(AActor *usething, fixed_t endx, fixed_t endy, bool &foundline
// it through, including SPAC_USETHROUGH.
if (i_compatflags & COMPATF_USEBLOCKING)
{
if (GET_SPAC(in->d.line->flags) == SPAC_USETHROUGH) continue;
if (in->d.line->activation & SPAC_UseThrough) continue;
else return true;
}
else
{
if (GET_SPAC(in->d.line->flags) != SPAC_USE) continue;
if (!(in->d.line->activation & SPAC_Use)) continue;
else return true;
}
}