This commit is contained in:
parent
3a10910187
commit
07c358c793
11 changed files with 156 additions and 13 deletions
|
@ -317,7 +317,11 @@ triggers_src := trigger \
|
|||
thazwalk \
|
||||
tsemit \
|
||||
tsswitch \
|
||||
tgbowl
|
||||
tgbowl \
|
||||
twdripemit \
|
||||
tadripemit \
|
||||
todripemit \
|
||||
tldripemit
|
||||
|
||||
utils_src := utils \
|
||||
sincos \
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -81,6 +81,7 @@ virtual void killFX() {setToShutdown();}
|
|||
virtual void toggleVisible() {IsVisible = !IsVisible;}
|
||||
|
||||
protected:
|
||||
virtual void collidedWith(CThing *_thisThing);
|
||||
s32 OtPos;
|
||||
s16 Life;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -515,6 +515,17 @@ DVECTOR const &CamPos=CLevel::getCameraPos();
|
|||
thing1=thing1->m_nextCollisionThing;
|
||||
}
|
||||
|
||||
// Player -> Effect collision
|
||||
thing1=s_CollisionLists[CThing::TYPE_FX];
|
||||
while(thing1)
|
||||
{
|
||||
if(thing1->checkCollisionAgainst(playerThing, _frames))
|
||||
{
|
||||
thing1->collidedWith(playerThing);
|
||||
}
|
||||
thing1=thing1->m_nextCollisionThing;
|
||||
}
|
||||
|
||||
// Player -> Friend collision
|
||||
thing1=s_CollisionLists[CThing::TYPE_NPC];
|
||||
while(thing1)
|
||||
|
|
|
@ -91,6 +91,22 @@
|
|||
#include "triggers\tgbowl.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TRIGGERS_TWDRIPEMIT_H__
|
||||
#include "triggers\twdripemit.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TRIGGERS_TADRIPEMIT_H__
|
||||
#include "triggers\tadripemit.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TRIGGERS_TODRIPEMIT_H__
|
||||
#include "triggers\todripemit.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TRIGGERS_TLDRIPEMIT_H__
|
||||
#include "triggers\tldripemit.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GAME_GAME_H__
|
||||
#include "game\game.h"
|
||||
#endif
|
||||
|
@ -184,6 +200,26 @@ CTrigger *trigger;
|
|||
trigger=(CSteamEmitterTrigger*)new("SteamEmitterTrigger") CSteamEmitterTrigger();
|
||||
break;
|
||||
|
||||
// Water drip emitter
|
||||
case TRIGGER_WATER_DRIP_EMITTER:
|
||||
trigger=(CWaterDripEmitterTrigger*)new("WaterDripEmitterTrigger") CWaterDripEmitterTrigger();
|
||||
break;
|
||||
|
||||
// Acid drip emitter
|
||||
case TRIGGER_ACID_DRIP_EMITTER:
|
||||
trigger=(CAcidDripEmitterTrigger*)new("AcidDripEmitterTrigger") CAcidDripEmitterTrigger();
|
||||
break;
|
||||
|
||||
// Oil drip emitter
|
||||
case TRIGGER_OIL_DRIP_EMITTER:
|
||||
trigger=(COilDripEmitterTrigger*)new("OilDripEmitterTrigger") COilDripEmitterTrigger();
|
||||
break;
|
||||
|
||||
// Lava drip emitter
|
||||
case TRIGGER_LAVA_DRIP_EMITTER:
|
||||
trigger=(CLavaDripEmitterTrigger*)new("LavaDripEmitterTrigger") CLavaDripEmitterTrigger();
|
||||
break;
|
||||
|
||||
case TRIGGER_PLATFORM:
|
||||
trigger = (CPlatformTrigger*)new ("PlatformTrigger") CPlatformTrigger();
|
||||
break;
|
||||
|
|
|
@ -41,6 +41,10 @@ enum TRIGGER_TYPE
|
|||
TRIGGER_BUBBLE_GEYSER_EMITTER,
|
||||
TRIGGER_STEAM_EMITTER,
|
||||
TRIGGER_GARY_BOWL,
|
||||
TRIGGER_WATER_DRIP_EMITTER,
|
||||
TRIGGER_ACID_DRIP_EMITTER,
|
||||
TRIGGER_OIL_DRIP_EMITTER,
|
||||
TRIGGER_LAVA_DRIP_EMITTER,
|
||||
|
||||
// Code based triggers
|
||||
TRIGGER_PLATFORM,
|
||||
|
|
|
@ -146,6 +146,10 @@ IntermittentDownFlameEmitter=14
|
|||
StreamGeyser=15
|
||||
SteamEmitter=16
|
||||
GaryBowl=17
|
||||
WaterDripEmitter=18
|
||||
AcidDripEmitter=19
|
||||
OilDripEmitter=20
|
||||
LavaDripEmitter=21
|
||||
|
||||
################################################
|
||||
# FX
|
||||
|
|
|
@ -41,4 +41,12 @@ HasBox=1
|
|||
|
||||
[GaryGoRight]
|
||||
|
||||
[GaryBowl]
|
||||
[GaryBowl]
|
||||
|
||||
[WaterDripEmitter]
|
||||
|
||||
[AcidDripEmitter]
|
||||
|
||||
[OilDripEmitter]
|
||||
|
||||
[LavaDripEmitter]
|
|
@ -2069,6 +2069,14 @@ SOURCE=..\..\..\source\thing\thing.h
|
|||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tadripemit.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tadripemit.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tbemit.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -2165,6 +2173,14 @@ SOURCE=..\..\..\source\triggers\tifemit.h
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tldripemit.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tldripemit.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tlevexit.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -2181,6 +2197,14 @@ SOURCE=..\..\..\source\triggers\tlook.h
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\todripemit.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\todripemit.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\tplatfrm.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -2235,6 +2259,14 @@ SOURCE=..\..\..\source\triggers\twater.cpp
|
|||
|
||||
SOURCE=..\..\..\source\triggers\twater.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\twdripemit.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\triggers\twdripemit.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "utils"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue