summaryrefslogtreecommitdiff
path: root/src/strife/p_mobj.c
diff options
context:
space:
mode:
authorSamuel Villareal2010-09-01 05:44:46 +0000
committerSamuel Villareal2010-09-01 05:44:46 +0000
commit0896e8f879ab0cb133c27eb6ad5b23e167205bf7 (patch)
tree634e92a99e8ff4280a1421f2f98bba6dc954c9ba /src/strife/p_mobj.c
parentb10d4acc24278460fc357aa974d7e3e56f0d5953 (diff)
downloadchocolate-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.c33
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