diff --git a/source/fx/fxlaser.cpp b/source/fx/fxlaser.cpp new file mode 100644 index 000000000..e3eaa3ff4 --- /dev/null +++ b/source/fx/fxlaser.cpp @@ -0,0 +1,48 @@ +/*****************/ +/*** Thwack!!! ***/ +/*****************/ + +#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\FXThwack.h" + +const int ThwackLife=12; + +/*****************************************************************************/ +void CFXThwack::init(DVECTOR const &_Pos) +{ + CFX::init(_Pos); + Life=ThwackLife; + OtPos=OTPOS__ACTOR_POS-1; + Angle=getRnd()&4095; + Scale=2048+1024+(getRnd()&2047); +} + +/*****************************************************************************/ +/*** Render ******************************************************************/ +/*****************************************************************************/ + +void CFXThwack::render() +{ +DVECTOR RenderPos; + + getFXRenderPos(RenderPos); + if (!canRender() || !IsVisible) return; + +SpriteBank *SprBank=CGameScene::getSpriteBank(); +POLY_FT4 *Ft4=SprBank->printRotatedScaledSprite(FRM__THWACK,RenderPos.vx,RenderPos.vy,Scale,Scale,Angle,OtPos); + setSemiTrans(Ft4,1); + Ft4->tpage|=1<<5; +int Col=(256/ThwackLife)*Life; + setRGB0(Ft4,Col,Col,Col); + +} + diff --git a/source/fx/fxlaser.h b/source/fx/fxlaser.h new file mode 100644 index 000000000..ff3370545 --- /dev/null +++ b/source/fx/fxlaser.h @@ -0,0 +1,21 @@ +/*****************/ +/*** Thwack!!! ***/ +/*****************/ + +#ifndef __FX_FX_THWACK_HEADER__ +#define __FX_FX_THWACK_HEADER__ + +#include "fx/fx.h" + +/*****************************************************************************/ +class CFXThwack : public CFX +{ +public: +virtual void init(DVECTOR const &Pos); +virtual void render(); + +protected: + u16 Angle,Scale; +}; + +#endif