This commit is contained in:
parent
85f401edf0
commit
773d29ea89
16 changed files with 129 additions and 11 deletions
|
@ -82,7 +82,7 @@ CFXBaseAnim::sFXAnim FXExplodeData=
|
|||
|
||||
CFXBaseAnim::sFXAnim FXFireData=
|
||||
{
|
||||
ONE << 1,
|
||||
ONE,
|
||||
FRM__FIRE01,FRM__FIRE06,
|
||||
1,
|
||||
127,127,127,
|
||||
|
|
|
@ -19,7 +19,8 @@ void CFXBaseAnim::init(DVECTOR const &_Pos)
|
|||
{
|
||||
CFX::init(_Pos);
|
||||
CurrentFrame=0;
|
||||
CurrentScale=DataPtr->Scale;
|
||||
CurrentScaleX=CurrentScaleY=DataPtr->Scale;
|
||||
CurrentHeading = 0;
|
||||
MaxFrame=((DataPtr->EndFrame-DataPtr->StartFrame)<<DataPtr->FrameShift)-1;
|
||||
if (DataPtr->Flags & FXANIM_FLAG_LOOP)
|
||||
{ // Looping Anim, so let it live forever!
|
||||
|
@ -100,7 +101,8 @@ DVECTOR RenderPos;
|
|||
|
||||
SpriteBank *SprBank=CGameScene::getSpriteBank();
|
||||
|
||||
POLY_FT4 *Ft4=SprBank->printFT4Scaled(renderFrame,RenderPos.vx,RenderPos.vy,0,0,OtPos*0,CurrentScale>>4);
|
||||
//POLY_FT4 *Ft4=SprBank->printFT4Scaled(renderFrame,RenderPos.vx,RenderPos.vy,0,0,OtPos*0,CurrentScale>>4);
|
||||
POLY_FT4 *Ft4=SprBank->printRotatedScaledSprite(renderFrame,RenderPos.vx,RenderPos.vy,CurrentScaleX,CurrentScaleY,CurrentHeading,OtPos*0);
|
||||
Ft4->u1--; Ft4->u3--;
|
||||
Ft4->v2--; Ft4->v3--;
|
||||
setShadeTex(Ft4,0);
|
||||
|
|
|
@ -36,7 +36,10 @@ virtual void killFX();
|
|||
|
||||
void setData(void *Data) {DataPtr=(sFXAnim*)Data;}
|
||||
|
||||
virtual void SetScale(int S) {CurrentScale=S;}
|
||||
virtual void SetScale(int S) {CurrentScaleX=CurrentScaleY=S;}
|
||||
virtual void SetScaleX(int S) {CurrentScaleX=S;}
|
||||
virtual void SetScaleY(int S) {CurrentScaleY=S;}
|
||||
virtual void SetHeading(int H) {CurrentHeading=H;}
|
||||
|
||||
protected:
|
||||
sFXAnim *DataPtr;
|
||||
|
@ -44,7 +47,9 @@ protected:
|
|||
s16 MaxFrame;
|
||||
s16 CurrentFrame;
|
||||
u16 renderFrame;
|
||||
s16 CurrentScale;
|
||||
s32 CurrentScaleX;
|
||||
s32 CurrentScaleY;
|
||||
s16 CurrentHeading;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -21,7 +21,7 @@ void CFXBubble::init(DVECTOR const &_Pos)
|
|||
CFXBaseAnim::init(_Pos);
|
||||
Life=32+getRndRange(63);
|
||||
VelY=-getRndRange(4)-1;
|
||||
CurrentScale=getRndRange(DataPtr->Scale/2)+(DataPtr->Scale/2);
|
||||
CurrentScaleX=CurrentScaleY=getRndRange(DataPtr->Scale/2)+(DataPtr->Scale/2);
|
||||
Die=0;
|
||||
XIdx=getRnd()&15;
|
||||
|
||||
|
|
|
@ -115,6 +115,10 @@
|
|||
#include "hazard\hinert.h"
|
||||
#endif
|
||||
|
||||
#ifndef __HAZARD_HCSWITCH_H__
|
||||
#include "hazard\hcswitch.h"
|
||||
#endif
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -141,6 +145,7 @@ CNpcHazard::NPC_HAZARD_UNIT_TYPE CNpcHazard::mapEditConvertTable[NPC_HAZARD_TYPE
|
|||
NPC_PRESSURE_SWITCH_HAZARD,
|
||||
NPC_ROCKSHARD_HAZARD,
|
||||
NPC_INERT_HAZARD,
|
||||
NPC_CONVEYOR_SWITCH_HAZARD,
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -279,6 +284,12 @@ CNpcHazard *hazard;
|
|||
break;
|
||||
}
|
||||
|
||||
case NPC_CONVEYOR_SWITCH_HAZARD:
|
||||
{
|
||||
hazard = new ("conveyor switch hazard") CNpcConveyorSwitchHazard;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
hazard = NULL;
|
||||
|
|
|
@ -60,6 +60,7 @@ public:
|
|||
NPC_PRESSURE_SWITCH_HAZARD,
|
||||
NPC_ROCKSHARD_HAZARD,
|
||||
NPC_INERT_HAZARD,
|
||||
NPC_CONVEYOR_SWITCH_HAZARD,
|
||||
|
||||
NPC_HAZARD_TYPE_MAX,
|
||||
};
|
||||
|
@ -77,6 +78,7 @@ public:
|
|||
void setWaypointPtr( u16 *newPtr ) {m_npcPath.setWaypointPtr( newPtr );}
|
||||
void setWaypointCount( u8 newCount ) {m_npcPath.setWaypointCount( newCount );}
|
||||
virtual void setRespawnRate( s16 newRespawnRate ) {m_respawnRate=newRespawnRate;}
|
||||
virtual void trigger() {}
|
||||
|
||||
static NPC_HAZARD_UNIT_TYPE getTypeFromMapEdit( u16 newType );
|
||||
static CNpcHazard *Create(int Type);
|
||||
|
|
|
@ -26,7 +26,27 @@ void CFlameEmitterTrigger::setPositionAndSize(int _x,int _y,int _w,int _h)
|
|||
{
|
||||
CTrigger::setPositionAndSize( _x, _y, _w, _h );
|
||||
|
||||
m_effect = CFX::Create( CFX::FX_TYPE_FLAMES, Pos );
|
||||
m_effect = CFX::Create( CFX::FX_TYPE_FLAMES, Pos );
|
||||
CFXBaseAnim *m_animEffect = (CFXBaseAnim *) m_effect;
|
||||
m_animEffect->SetScaleX( ( _w * ONE ) >> 5 );
|
||||
m_animEffect->SetScaleY( ( _h * ONE ) >> 5 );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CFlameEmitterTrigger::setHeading(int newHeading)
|
||||
{
|
||||
CFXBaseAnim *m_animEffect = (CFXBaseAnim *) m_effect;
|
||||
m_animEffect->SetHeading( newHeading );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CFlameEmitterTrigger::setSize( int _w, int _h )
|
||||
{
|
||||
CFXBaseAnim *m_animEffect = (CFXBaseAnim *) m_effect;
|
||||
m_animEffect->SetScaleX( ( _w * ONE ) >> 5 );
|
||||
m_animEffect->SetScaleY( ( _h * ONE ) >> 5 );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#endif
|
||||
|
||||
#include "fx\fx.h"
|
||||
#include "fx\fxbaseanim.h"
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -43,6 +44,8 @@ class CFlameEmitterTrigger : public CTrigger
|
|||
{
|
||||
public:
|
||||
virtual void setPositionAndSize(int _x,int _y,int _w,int _h);
|
||||
void setHeading(int newHeading);
|
||||
void setSize( int _w, int _h );
|
||||
protected:
|
||||
virtual void collidedWith(CThing *_thisThing);
|
||||
CFX *m_effect;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
tplatfrm.cpp
|
||||
|
||||
Author: PKG
|
||||
Author: CRB
|
||||
Created:
|
||||
Project: Spongebob
|
||||
Purpose:
|
||||
|
|
|
@ -67,6 +67,10 @@
|
|||
#include "triggers\tgstop.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TRIGGERS_THAZARD_H__
|
||||
#include "triggers\thazard.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GAME_GAME_H__
|
||||
#include "game\game.h"
|
||||
#endif
|
||||
|
@ -135,6 +139,8 @@ CTrigger *trigger;
|
|||
break;
|
||||
|
||||
case TRIGGER_INTERMITTENTFLAMEEMITTER:
|
||||
case TRIGGER_INTERMITTENTLEFTFLAMEEMITTER:
|
||||
case TRIGGER_INTERMITTENTDOWNFLAMEEMITTER:
|
||||
trigger=(CIntermittentFlameEmitterTrigger*)new( "IntermittentFlameEmitterTrigger") CIntermittentFlameEmitterTrigger();
|
||||
break;
|
||||
|
||||
|
@ -146,6 +152,11 @@ CTrigger *trigger;
|
|||
case TRIGGER_PLATFORM:
|
||||
trigger = (CPlatformTrigger*)new ("PlatformTrigger") CPlatformTrigger();
|
||||
break;
|
||||
|
||||
case TRIGGER_HAZARD:
|
||||
trigger = (CHazardTrigger*)new("HazardTrigger") CHazardTrigger();
|
||||
break;
|
||||
|
||||
default:
|
||||
trigger=NULL;
|
||||
}
|
||||
|
@ -161,9 +172,35 @@ CTrigger *trigger;
|
|||
CTrigger *CTrigger::Create(sThingTrigger *ThisTrigger)
|
||||
{
|
||||
CTrigger *trigger=Create(ThisTrigger->Type);
|
||||
|
||||
trigger->setPositionAndSize(ThisTrigger->Pos.X<<4,ThisTrigger->Pos.Y<<4,ThisTrigger->Width<<4,ThisTrigger->Height<<4);
|
||||
trigger->setTargetBox(ThisTrigger->TargetPos.X<<4,ThisTrigger->TargetPos.Y<<4,ThisTrigger->TargetSize.X<<4,ThisTrigger->TargetSize.Y<<4);
|
||||
|
||||
switch( ThisTrigger->Type )
|
||||
{
|
||||
case TRIGGER_INTERMITTENTLEFTFLAMEEMITTER:
|
||||
{
|
||||
CIntermittentFlameEmitterTrigger *m_flameEmitter = (CIntermittentFlameEmitterTrigger *) trigger;
|
||||
|
||||
m_flameEmitter->setHeading( 3072 );
|
||||
m_flameEmitter->setSize( ThisTrigger->Height<<4, ThisTrigger->Width<<4 );
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case TRIGGER_INTERMITTENTDOWNFLAMEEMITTER:
|
||||
{
|
||||
CIntermittentFlameEmitterTrigger *m_flameEmitter = (CIntermittentFlameEmitterTrigger *) trigger;
|
||||
|
||||
m_flameEmitter->setHeading( 2048 );
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return( trigger);
|
||||
}
|
||||
|
||||
|
|
|
@ -36,9 +36,12 @@ enum TRIGGER_TYPE
|
|||
TRIGGER_GARYGOLEFT,
|
||||
TRIGGER_GARYGORIGHT,
|
||||
TRIGGER_BUBBLEEMITTER,
|
||||
TRIGGER_INTERMITTENTLEFTFLAMEEMITTER,
|
||||
TRIGGER_INTERMITTENTDOWNFLAMEEMITTER,
|
||||
|
||||
// Code based triggers
|
||||
TRIGGER_PLATFORM,
|
||||
TRIGGER_HAZARD,
|
||||
TRIGGER_MAX,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue