/************************/ /*** Trail Base Class ***/ /************************/ #include "system\global.h" #include #include "utils\utils.h" #include "gfx\prim.h" #include "gfx\sprbank.h" #include #include "level\level.h" #include "FX\FXTrail.h" /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ void CFXTrail::init(DVECTOR const &_Pos) { CFX::init(); Pos=_Pos; HeadIdx=0; ListCount=0; DieOut=0; } /*****************************************************************************/ void CFXTrail::shutdown() { CFX::shutdown(); } /*****************************************************************************/ /*** Think *******************************************************************/ /*****************************************************************************/ void CFXTrail::think(int _frames) { CThing *Parent=getParent(); if (Parent) { this->setPos(Parent->getPos()); } } /*****************************************************************************/ CFXTrail::sList &CFXTrail::moveHead() { HeadIdx--; if (HeadIdx<0) HeadIdx+=LIST_SIZE; if (ListCount>2; RenderPos.vy+=ThisElem.Ofs.vy>>2; if (ThisElem.Shade) { Ft4=m_spriteBank->printRotatedScaledSprite(ThisElem.Frame,RenderPos.vx,RenderPos.vy,ThisElem.Scale,ThisElem.Scale,ThisElem.Angle,OtPos*0); setShadeTex(Ft4,0); setRGB0(Ft4,ThisElem.Shade,ThisElem.Shade,ThisElem.Shade); setSemiTrans(Ft4,1); Ft4->tpage|=Trans<<5; } ThisIdx++; ThisIdx&=LIST_SIZE-1; } int BY=(RenderPos.vy-StartY)-32; setCollisionCentreOffset(0,BY>>1); setCollisionSize(64,-BY); } }