/**********************/ /*** ZZZZ (for FMA) ***/ /**********************/ #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\FXzzzz.h" static const int FRM_Z=FRM__90; static const int ZLifeInc=-8; static const int ZDelay=32; static const s8 XT[16]={ 0,+1,+2,+2,+3,+2,+2,+1, 0,-1,-2,-2,-3,-2,-2,-1}; /*****************************************************************************/ void CFXZZZZ::init(DVECTOR const &_Pos) { CFX::init(_Pos); for (int i=0;i0) { Z[i].Ofs.vx+=XT[Z[i].TablePos]-1; Z[i].Ofs.vy--; Z[i].Life+=ZLifeInc; if (Z[i].Life<0) Z[i].Life=0; Z[i].TablePos++; Z[i].TablePos&=15; } else { Z[i].Life=0; } } if (DieFlag==1) { DieFlag++; } else if (DieFlag==2) { CFX::killFX(); } } /*****************************************************************************/ /*** Render ******************************************************************/ /*****************************************************************************/ void CFXZZZZ::render() { CFX::render(); DVECTOR renderPos; getFXRenderPos(renderPos); if (!canRender() || Flags & FX_FLAG_HIDDEN) return; int Frame=FRM_Z; if (DieFlag) Frame=FRM__BUBBLEPOP; POLY_FT4 *Ft4; for (int i=0; iprintFT4Scaled(Frame,ThisPos.vx,ThisPos.vy,0,0,OtPos,128+HLife); setShadeTex(Ft4,0); setSemiTrans(Ft4,1); Ft4->tpage|=1<<5; setRGB0(Ft4,HLife,HLife,HLife); } } }