/******************/ /*** TV Explode ***/ /******************/ #include "system\global.h" #include #include "utils\utils.h" #include "gfx\prim.h" #include "gfx\sprbank.h" #include #include "level\level.h" #include "game\game.h" #include "gfx\otpos.h" #include "FX\FXTVExplode.h" #include "FX\FXBaseAnim.h" /*****************************************************************************/ CFXBaseAnim::sFXBaseData FXCogBaseData= { FRM__COG01,FRM__COG01,3, FX_FLAG_LOOP | FX_FLAG_COLLIDE_BOUNCE | FX_FLAG_HAS_GRAVITY | FX_FLAG_NO_THINK_KILL, }; CFXBaseAnim::sFXBaseData FXValveBaseData= { FRM__ELECVALVE,FRM__ELECVALVE,1, FX_FLAG_LOOP | FX_FLAG_COLLIDE_BOUNCE | FX_FLAG_HAS_GRAVITY | FX_FLAG_NO_THINK_KILL, }; /*****************************************************************************/ static const int TVExplodeVel=8; static const int TVExplodeCogs=4; static const int TVExplodeValves=4; /*****************************************************************************/ void CFXTVExplode::init(DVECTOR const &_Pos) { CFX::init(_Pos); } /*****************************************************************************/ void CFXTVExplode::think(int _frames) { CFX *NewFX; int VelX,VelY; NewFX=CFX::Create(CFX::FX_TYPE_SMOKE_PUFF,Pos); NewFX->SetOtPos(1); NewFX=CFX::Create(CFX::FX_TYPE_EXPLODE,Pos); ((CFXBaseAnim*)NewFX)->SetScale(ONE*2); NewFX->SetOtPos(1); for (int i=0;isetBaseData(&FXCogBaseData); VelX=getRndRange(TVExplodeVel*2)-TVExplodeVel; VelY=-getRndRange(TVExplodeVel); NewFX->setVelocity(VelX,VelY); NewFX->SetOtPos(1); } for (int i=0;isetBaseData(&FXValveBaseData); VelX=getRndRange(TVExplodeVel*2)-TVExplodeVel; VelY=-getRndRange(TVExplodeVel); NewFX->setVelocity(VelX,VelY); NewFX->SetOtPos(1); } killFX(); }