diff options
author | Samuel Villareal | 2010-09-01 05:44:46 +0000 |
---|---|---|
committer | Samuel Villareal | 2010-09-01 05:44:46 +0000 |
commit | 0896e8f879ab0cb133c27eb6ad5b23e167205bf7 (patch) | |
tree | 634e92a99e8ff4280a1421f2f98bba6dc954c9ba /src/strife/p_mobj.c | |
parent | b10d4acc24278460fc357aa974d7e3e56f0d5953 (diff) | |
download | chocolate-doom-0896e8f879ab0cb133c27eb6ad5b23e167205bf7.tar.gz chocolate-doom-0896e8f879ab0cb133c27eb6ad5b23e167205bf7.tar.bz2 chocolate-doom-0896e8f879ab0cb133c27eb6ad5b23e167205bf7.zip |
+ Terrain type system implemented
+ Feet clipping support added (drawing and player viewz) (TODO: Need
FeetClipping support done for P_ZMovement)
Subversion-branch: /branches/strife-branch
Subversion-revision: 1992
Diffstat (limited to 'src/strife/p_mobj.c')
-rw-r--r-- | src/strife/p_mobj.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/strife/p_mobj.c b/src/strife/p_mobj.c index 891e453f..954bb819 100644 --- a/src/strife/p_mobj.c +++ b/src/strife/p_mobj.c @@ -452,15 +452,22 @@ void P_MobjThinker (mobj_t* mobj) // momentum movement if (mobj->momx || mobj->momy - || (mobj->flags&MF_SKULLFLY) ) + /*|| (mobj->flags&MF_SKULLFLY)*/ ) // villsa [STRIFE] unused { P_XYMovement (mobj); // FIXME: decent NOP/NULL/Nil function pointer please. if (mobj->thinker.function.acv == (actionf_v) (-1)) return; // mobj was removed + + // villsa [STRIFE] + if(P_GetTerrainType(mobj) == FLOOR_SOLID) + mobj->flags &= ~MF_FEETCLIPPED; + else + mobj->flags |= MF_FEETCLIPPED; + } - if ( (mobj->z != mobj->floorz) + if ( (mobj->z != mobj->floorz && !(mobj->flags & MF_NOGRAVITY)) // villsa [STRIFE] || mobj->momz ) { P_ZMovement (mobj); @@ -468,6 +475,16 @@ void P_MobjThinker (mobj_t* mobj) // FIXME: decent NOP/NULL/Nil function pointer please. if (mobj->thinker.function.acv == (actionf_v) (-1)) return; // mobj was removed + + // villsa [STRIFE] + if(P_GetTerrainType(mobj) == FLOOR_SOLID) + mobj->flags &= ~MF_FEETCLIPPED; + else + { + S_StartSound(mobj, sfx_wsplsh); + mobj->flags |= MF_FEETCLIPPED; + } + } @@ -555,7 +572,19 @@ P_SpawnMobj mobj->ceilingz = mobj->subsector->sector->ceilingheight; if (z == ONFLOORZ) + { mobj->z = mobj->floorz; + + if(mobj->type == MT_TREE7) + { + mobj->type = mobj->type; + } + + // villsa [STRIFE] + if(P_GetTerrainType(mobj) != FLOOR_SOLID) + mobj->flags |= MF_FEETCLIPPED; + + } else if (z == ONCEILINGZ) mobj->z = mobj->ceilingz - mobj->info->height; else |