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 \
|
thazwalk \
|
||||||
tsemit \
|
tsemit \
|
||||||
tsswitch \
|
tsswitch \
|
||||||
tgbowl
|
tgbowl \
|
||||||
|
twdripemit \
|
||||||
|
tadripemit \
|
||||||
|
todripemit \
|
||||||
|
tldripemit
|
||||||
|
|
||||||
utils_src := utils \
|
utils_src := utils \
|
||||||
sincos \
|
sincos \
|
||||||
|
|
|
@ -43,7 +43,7 @@ CFXBaseAnim::sFXAnim FXAcidSplashData=
|
||||||
ONE,
|
ONE,
|
||||||
FRM__SPLASH001,FRM__SPLASH006,
|
FRM__SPLASH001,FRM__SPLASH006,
|
||||||
1,
|
1,
|
||||||
0,255,0,
|
127,255,127,
|
||||||
0,
|
0,
|
||||||
{0,0},
|
{0,0},
|
||||||
0
|
0
|
||||||
|
@ -63,7 +63,7 @@ CFXBaseAnim::sFXAnim FXOilSplashData=
|
||||||
ONE,
|
ONE,
|
||||||
FRM__SPLASH001,FRM__SPLASH006,
|
FRM__SPLASH001,FRM__SPLASH006,
|
||||||
1,
|
1,
|
||||||
0,0,0,
|
64,64,64,
|
||||||
0,
|
0,
|
||||||
{0,0},
|
{0,0},
|
||||||
CFX::FX_TYPE_EXPLODE,
|
CFX::FX_TYPE_EXPLODE,
|
||||||
|
@ -107,30 +107,30 @@ CFXBaseAnim::sFXAnim FXAcidDripData=
|
||||||
ONE,
|
ONE,
|
||||||
FRM__DRIP,FRM__DRIP,
|
FRM__DRIP,FRM__DRIP,
|
||||||
1,
|
1,
|
||||||
127,127,255,
|
127,255,127,
|
||||||
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY,
|
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY | CFXBaseAnim::FXANIM_FLAG_INJURE_PLAYER,
|
||||||
{0,1},
|
{0,1},
|
||||||
CFX::FX_TYPE_SPLASH_WATER
|
CFX::FX_TYPE_SPLASH_ACID
|
||||||
};
|
};
|
||||||
CFXBaseAnim::sFXAnim FXLavaDripData=
|
CFXBaseAnim::sFXAnim FXLavaDripData=
|
||||||
{
|
{
|
||||||
ONE,
|
ONE,
|
||||||
FRM__DRIP,FRM__DRIP,
|
FRM__DRIP,FRM__DRIP,
|
||||||
1,
|
1,
|
||||||
127,127,255,
|
255,127,127,
|
||||||
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY,
|
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY | CFXBaseAnim::FXANIM_FLAG_INJURE_PLAYER,
|
||||||
{0,1},
|
{0,1},
|
||||||
CFX::FX_TYPE_SPLASH_WATER
|
CFX::FX_TYPE_SPLASH_LAVA
|
||||||
};
|
};
|
||||||
CFXBaseAnim::sFXAnim FXOilDripData=
|
CFXBaseAnim::sFXAnim FXOilDripData=
|
||||||
{
|
{
|
||||||
ONE,
|
ONE,
|
||||||
FRM__DRIP,FRM__DRIP,
|
FRM__DRIP,FRM__DRIP,
|
||||||
1,
|
1,
|
||||||
127,127,255,
|
64,64,64,
|
||||||
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY,
|
CFXBaseAnim::FXANIM_FLAG_LOOP | CFXBaseAnim::FXANIM_FLAG_COLLIDE_KILL | CFXBaseAnim::FXANIM_FLAG_HAS_GRAVITY | CFXBaseAnim::FXANIM_FLAG_INJURE_PLAYER,
|
||||||
{0,1},
|
{0,1},
|
||||||
CFX::FX_TYPE_SPLASH_WATER
|
CFX::FX_TYPE_SPLASH_OIL
|
||||||
};
|
};
|
||||||
// Bubble
|
// Bubble
|
||||||
CFXBaseAnim::sFXAnim FXBubbleWaterData=
|
CFXBaseAnim::sFXAnim FXBubbleWaterData=
|
||||||
|
@ -407,3 +407,8 @@ void CFX::getFXRenderPos(DVECTOR &Pos)
|
||||||
Pos=getPos();
|
Pos=getPos();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void CFX::collidedWith(CThing *_thisThing)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
|
@ -81,6 +81,7 @@ virtual void killFX() {setToShutdown();}
|
||||||
virtual void toggleVisible() {IsVisible = !IsVisible;}
|
virtual void toggleVisible() {IsVisible = !IsVisible;}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void collidedWith(CThing *_thisThing);
|
||||||
s32 OtPos;
|
s32 OtPos;
|
||||||
s16 Life;
|
s16 Life;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
#include "level\layercollision.h"
|
#include "level\layercollision.h"
|
||||||
#include "FX\FXBaseAnim.h"
|
#include "FX\FXBaseAnim.h"
|
||||||
|
|
||||||
|
#ifndef __PLAYER_PLAYER_H__
|
||||||
|
#include "player\player.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CFXBaseAnim::init(DVECTOR const &_Pos)
|
void CFXBaseAnim::init(DVECTOR const &_Pos)
|
||||||
|
@ -108,3 +112,32 @@ POLY_FT4 *Ft4=SprBank->printRotatedScaledSprite(renderFrame,RenderPos.vx,RenderP
|
||||||
setShadeTex(Ft4,0);
|
setShadeTex(Ft4,0);
|
||||||
setRGB0(Ft4,DataPtr->R,DataPtr->G,DataPtr->B);
|
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_LOOP =1<<0,
|
||||||
FXANIM_FLAG_COLLIDE_KILL =1<<1,
|
FXANIM_FLAG_COLLIDE_KILL =1<<1,
|
||||||
FXANIM_FLAG_HAS_GRAVITY =1<<2,
|
FXANIM_FLAG_HAS_GRAVITY =1<<2,
|
||||||
|
FXANIM_FLAG_INJURE_PLAYER =1<<3,
|
||||||
|
FXANIM_FLAG_KILL_PLAYER =1<<4,
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual void init(DVECTOR const &Pos);
|
virtual void init(DVECTOR const &Pos);
|
||||||
|
@ -33,6 +35,7 @@ virtual void shutdown();
|
||||||
virtual void think(int _frames);
|
virtual void think(int _frames);
|
||||||
virtual void render();
|
virtual void render();
|
||||||
virtual void killFX();
|
virtual void killFX();
|
||||||
|
virtual int canCollide() {return true;}
|
||||||
|
|
||||||
void setData(void *Data) {DataPtr=(sFXAnim*)Data;}
|
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;}
|
virtual void SetHeading(int H) {CurrentHeading=H;}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void collidedWith(CThing *_thisThing);
|
||||||
|
|
||||||
sFXAnim *DataPtr;
|
sFXAnim *DataPtr;
|
||||||
s16 VelY;
|
s16 VelY;
|
||||||
s16 MaxFrame;
|
s16 MaxFrame;
|
||||||
|
|
|
@ -515,6 +515,17 @@ DVECTOR const &CamPos=CLevel::getCameraPos();
|
||||||
thing1=thing1->m_nextCollisionThing;
|
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
|
// Player -> Friend collision
|
||||||
thing1=s_CollisionLists[CThing::TYPE_NPC];
|
thing1=s_CollisionLists[CThing::TYPE_NPC];
|
||||||
while(thing1)
|
while(thing1)
|
||||||
|
|
|
@ -91,6 +91,22 @@
|
||||||
#include "triggers\tgbowl.h"
|
#include "triggers\tgbowl.h"
|
||||||
#endif
|
#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__
|
#ifndef __GAME_GAME_H__
|
||||||
#include "game\game.h"
|
#include "game\game.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -184,6 +200,26 @@ CTrigger *trigger;
|
||||||
trigger=(CSteamEmitterTrigger*)new("SteamEmitterTrigger") CSteamEmitterTrigger();
|
trigger=(CSteamEmitterTrigger*)new("SteamEmitterTrigger") CSteamEmitterTrigger();
|
||||||
break;
|
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:
|
case TRIGGER_PLATFORM:
|
||||||
trigger = (CPlatformTrigger*)new ("PlatformTrigger") CPlatformTrigger();
|
trigger = (CPlatformTrigger*)new ("PlatformTrigger") CPlatformTrigger();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -41,6 +41,10 @@ enum TRIGGER_TYPE
|
||||||
TRIGGER_BUBBLE_GEYSER_EMITTER,
|
TRIGGER_BUBBLE_GEYSER_EMITTER,
|
||||||
TRIGGER_STEAM_EMITTER,
|
TRIGGER_STEAM_EMITTER,
|
||||||
TRIGGER_GARY_BOWL,
|
TRIGGER_GARY_BOWL,
|
||||||
|
TRIGGER_WATER_DRIP_EMITTER,
|
||||||
|
TRIGGER_ACID_DRIP_EMITTER,
|
||||||
|
TRIGGER_OIL_DRIP_EMITTER,
|
||||||
|
TRIGGER_LAVA_DRIP_EMITTER,
|
||||||
|
|
||||||
// Code based triggers
|
// Code based triggers
|
||||||
TRIGGER_PLATFORM,
|
TRIGGER_PLATFORM,
|
||||||
|
|
|
@ -146,6 +146,10 @@ IntermittentDownFlameEmitter=14
|
||||||
StreamGeyser=15
|
StreamGeyser=15
|
||||||
SteamEmitter=16
|
SteamEmitter=16
|
||||||
GaryBowl=17
|
GaryBowl=17
|
||||||
|
WaterDripEmitter=18
|
||||||
|
AcidDripEmitter=19
|
||||||
|
OilDripEmitter=20
|
||||||
|
LavaDripEmitter=21
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# FX
|
# FX
|
||||||
|
|
|
@ -42,3 +42,11 @@ HasBox=1
|
||||||
[GaryGoRight]
|
[GaryGoRight]
|
||||||
|
|
||||||
[GaryBowl]
|
[GaryBowl]
|
||||||
|
|
||||||
|
[WaterDripEmitter]
|
||||||
|
|
||||||
|
[AcidDripEmitter]
|
||||||
|
|
||||||
|
[OilDripEmitter]
|
||||||
|
|
||||||
|
[LavaDripEmitter]
|
|
@ -2069,6 +2069,14 @@ SOURCE=..\..\..\source\thing\thing.h
|
||||||
# PROP Default_Filter ""
|
# PROP Default_Filter ""
|
||||||
# Begin Source File
|
# 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
|
SOURCE=..\..\..\source\triggers\tbemit.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -2165,6 +2173,14 @@ SOURCE=..\..\..\source\triggers\tifemit.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin 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
|
SOURCE=..\..\..\source\triggers\tlevexit.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -2181,6 +2197,14 @@ SOURCE=..\..\..\source\triggers\tlook.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin 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
|
SOURCE=..\..\..\source\triggers\tplatfrm.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -2235,6 +2259,14 @@ SOURCE=..\..\..\source\triggers\twater.cpp
|
||||||
|
|
||||||
SOURCE=..\..\..\source\triggers\twater.h
|
SOURCE=..\..\..\source\triggers\twater.h
|
||||||
# End Source File
|
# 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
|
# End Group
|
||||||
# Begin Group "utils"
|
# Begin Group "utils"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue