This commit is contained in:
Charles 2001-06-07 16:33:19 +00:00
parent 3a10910187
commit 07c358c793
11 changed files with 156 additions and 13 deletions

View file

@ -43,7 +43,7 @@ CFXBaseAnim::sFXAnim FXAcidSplashData=
ONE,
FRM__SPLASH001,FRM__SPLASH006,
1,
0,255,0,
127,255,127,
0,
{0,0},
0
@ -63,7 +63,7 @@ CFXBaseAnim::sFXAnim FXOilSplashData=
ONE,
FRM__SPLASH001,FRM__SPLASH006,
1,
0,0,0,
64,64,64,
0,
{0,0},
CFX::FX_TYPE_EXPLODE,
@ -107,30 +107,30 @@ CFXBaseAnim::sFXAnim FXAcidDripData=
ONE,
FRM__DRIP,FRM__DRIP,
1,
127,127,255,
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY,
127,255,127,
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY | CFXBaseAnim::FXANIM_FLAG_INJURE_PLAYER,
{0,1},
CFX::FX_TYPE_SPLASH_WATER
CFX::FX_TYPE_SPLASH_ACID
};
CFXBaseAnim::sFXAnim FXLavaDripData=
{
ONE,
FRM__DRIP,FRM__DRIP,
1,
127,127,255,
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY,
255,127,127,
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY | CFXBaseAnim::FXANIM_FLAG_INJURE_PLAYER,
{0,1},
CFX::FX_TYPE_SPLASH_WATER
CFX::FX_TYPE_SPLASH_LAVA
};
CFXBaseAnim::sFXAnim FXOilDripData=
{
ONE,
FRM__DRIP,FRM__DRIP,
1,
127,127,255,
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY,
64,64,64,
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY | CFXBaseAnim::FXANIM_FLAG_INJURE_PLAYER,
{0,1},
CFX::FX_TYPE_SPLASH_WATER
CFX::FX_TYPE_SPLASH_OIL
};
// Bubble
CFXBaseAnim::sFXAnim FXBubbleWaterData=
@ -407,3 +407,8 @@ void CFX::getFXRenderPos(DVECTOR &Pos)
Pos=getPos();
}
}
/*****************************************************************************/
void CFX::collidedWith(CThing *_thisThing)
{
}

View file

@ -81,6 +81,7 @@ virtual void killFX() {setToShutdown();}
virtual void toggleVisible() {IsVisible = !IsVisible;}
protected:
virtual void collidedWith(CThing *_thisThing);
s32 OtPos;
s16 Life;

View file

@ -13,6 +13,10 @@
#include "level\layercollision.h"
#include "FX\FXBaseAnim.h"
#ifndef __PLAYER_PLAYER_H__
#include "player\player.h"
#endif
/*****************************************************************************/
void CFXBaseAnim::init(DVECTOR const &_Pos)
@ -108,3 +112,32 @@ POLY_FT4 *Ft4=SprBank->printRotatedScaledSprite(renderFrame,RenderPos.vx,RenderP
setShadeTex(Ft4,0);
setRGB0(Ft4,DataPtr->R,DataPtr->G,DataPtr->B);
}
/*****************************************************************************/
void CFXBaseAnim::collidedWith(CThing *_thisThing)
{
switch(_thisThing->getThingType())
{
case TYPE_PLAYER:
{
CPlayer *player = (CPlayer *) _thisThing;
if ( !player->isRecoveringFromHit() )
{
if ( DataPtr->Flags & FXANIM_FLAG_KILL_PLAYER )
{
player->takeDamage( DAMAGE__KILL_OUTRIGHT );
}
else if ( DataPtr->Flags & FXANIM_FLAG_INJURE_PLAYER )
{
player->takeDamage( DAMAGE__HIT_ENEMY );
}
}
break;
}
default:
break;
}
}

View file

@ -26,6 +26,8 @@ public:
FXANIM_FLAG_LOOP =1<<0,
FXANIM_FLAG_COLLIDE_KILL =1<<1,
FXANIM_FLAG_HAS_GRAVITY =1<<2,
FXANIM_FLAG_INJURE_PLAYER =1<<3,
FXANIM_FLAG_KILL_PLAYER =1<<4,
};
virtual void init(DVECTOR const &Pos);
@ -33,6 +35,7 @@ virtual void shutdown();
virtual void think(int _frames);
virtual void render();
virtual void killFX();
virtual int canCollide() {return true;}
void setData(void *Data) {DataPtr=(sFXAnim*)Data;}
@ -42,6 +45,8 @@ virtual void SetScaleY(int S) {CurrentScaleY=S;}
virtual void SetHeading(int H) {CurrentHeading=H;}
protected:
virtual void collidedWith(CThing *_thisThing);
sFXAnim *DataPtr;
s16 VelY;
s16 MaxFrame;