From acf969998b70623a66c968bf7e7dd003733110a7 Mon Sep 17 00:00:00 2001 From: Daveo Date: Fri, 18 May 2001 20:54:43 +0000 Subject: [PATCH] --- Graphics/sfx/+smoke.bmp | Bin 614 -> 2070 bytes makefile.gaz | 4 +- makefile.gfx | 2 +- source/fx/fx.cpp | 25 ++++--- source/fx/fx.h | 2 +- source/fx/fxsteam.cpp | 152 +++++++++++----------------------------- source/fx/fxsteam.h | 30 +++----- 7 files changed, 72 insertions(+), 143 deletions(-) diff --git a/Graphics/sfx/+smoke.bmp b/Graphics/sfx/+smoke.bmp index db1d3570f4571e70cac763e3242b9aae3b5934f7..ac1fc1edb34f04a126b64543038c45b4649b68d4 100644 GIT binary patch literal 2070 zcmeH|J<=L642J!0*9c)Q*5 ze!u6#;lRh^kx!=+pU-E$TrPaQUio&r@%?`1h2neouE4tj|4{{4@voQdzW$#7`P?qw zK}x;oI~Sa@3!i6ht@qJ;JHNZ0;+;_j+DtrqaEF2&g!BZ~6@I@E2TbA>?5WoZ0N@f`;B8N literal 614 zcmYk4Jx|*}7{|{hLtr}87b)t19aV@GoTMmIF`XhIp`fchhL>1Xvs8*&Ix+;=5m}h( zgRl_+u`*Zq$`=4!Cd2@4z5p-%0{H3qh)e#`J@@?n_vq1cy3-dd83}#kaf+{r!IDr) z_2#pi z>%pLnG}JG)UOcytv!}s^Yc%c-@rSi}O;+Mkp^>~nrV~I&m-ED2Q4%9xkv^IB(tm#E znv7jQ_aG7s5j-jgy$*u-R4A-tG#Uhd629B7NS|*`665yf^2qL8@< zhipT3NRzSO5Hg<-pWqa+9m-C^Q_r_&=^9E^*S~)E*ss%_E_HtJaS8@8ykoCRyRIEy z`K3iZ(j!V;#}SMQT8@~8W3Lm7addChild(NewFX); - } + ASSERT(Parent); - NewFX->init(); + NewFX->init(Parent->getPos()); + Parent->addChild(NewFX); return NewFX; } diff --git a/source/fx/fx.h b/source/fx/fx.h index 8a03422fc..cedaf043a 100644 --- a/source/fx/fx.h +++ b/source/fx/fx.h @@ -42,7 +42,7 @@ public: FX_TYPE_CASCADE_SPLASH, FX_TYPE_FIREBALL, FX_TYPE_CLOUD, - FX_TYPE_CLOUD_STEAN, + FX_TYPE_STEAM, FX_TYPE_CLOUD_SMOKE, FX_TYPE_CLOUD_GAS, FX_TYPE_FLAMES, diff --git a/source/fx/fxsteam.cpp b/source/fx/fxsteam.cpp index 4c37e4b16..47f3821cf 100644 --- a/source/fx/fxsteam.cpp +++ b/source/fx/fxsteam.cpp @@ -1,6 +1,6 @@ -/************************/ -/*** Cloud Base Class ***/ -/************************/ +/*************/ +/*** Steam ***/ +/*************/ #include "system\global.h" #include @@ -10,133 +10,65 @@ #include #include "level\level.h" -#include "FX\FXcloud.h" +#include "FX\FXSteam.h" +static s16 SteamSize=1; +const s16 SteamAngleInc=1111; -DVECTOR SmokeVel; -u16 AngleInc=16; - -u8 StartR=255; -u8 StartG=255; -u8 StartB=255; -s8 RInc=-8; -s8 BInc=-8; -s8 GInc=-8; -s16 StartScaleX=256; -s16 ScaleXInc=256; -s16 StartScaleY=256; -s16 ScaleYInc=256; - +int SLife=64; /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -void CFXCloud::init(DVECTOR const &_Pos) +void CFXSteam::init(DVECTOR const &_Pos) { - CFX::init(); - Pos=_Pos; - HeadIdx=0; - ListCount=1; - Angle=0; + CFXCloud::init(_Pos); + Life=SLife; + + RBase=255; + GBase=255; + BBase=255; + RInc=-8; + GInc=-8; + BInc=-8; + + Trans=3; + + SetSize(SteamSize); + } /*****************************************************************************/ -void CFXCloud::shutdown() +void CFXSteam::shutdown() { CFX::shutdown(); } +/*****************************************************************************/ +void CFXSteam::SetSize(int Size) +{ + ScaleInc=(4096/LIST_SIZE)*Size; + AngleInc=SteamAngleInc; + Vel.vx=0; + Vel.vy=-Size; +} + /*****************************************************************************/ /*** Think *******************************************************************/ /*****************************************************************************/ -int SS=4; -void CFXCloud::think(int _frames) +int LifeStart=32; + +void CFXSteam::think(int _frames) { -int ThisIdx=HeadIdx; -DVECTOR Vel=SmokeVel; - if (Parent) + SetSize(SteamSize); + CFXCloud::think(_frames); + + if (!DieOut) { - this->setPos(Parent->getPos()); + setHead(Vel,Vel,LifeStart); } - CFX::think(_frames); - - HeadIdx--; - if (HeadIdx<0) HeadIdx+=ListCount; - - if (Parent) - { - setPos(Parent->getPos()); - } - List[HeadIdx].Ofs=getPos(); - - - for (int i=0; i>SS; - ThisElem.Ofs.vy+=Vel.vy>>SS; - Vel.vx+=SmokeVel.vx; - Vel.vy+=SmokeVel.vy; - } - ListCount++; - if (ListCount>MAX_TRAIL) - { - ListCount=MAX_TRAIL; - } + Life--; + if (!Life) DieOut=true; } -/*****************************************************************************/ -/*** Render ******************************************************************/ -/*****************************************************************************/ -int ST=3; - -void CFXCloud::render() -{ - CFX::render(); - - if (canRender()) - { - DVECTOR const &MapOfs=CLevel::getCameraPos(); - DVECTOR RenderPos; - int ThisIdx=HeadIdx; - - int ThisAngle=Angle; - int ThisScaleX=StartScaleX; - int ThisScaleY=StartScaleY; - u8 ThisR=StartR; - u8 ThisG=StartG; - u8 ThisB=StartB; - - for (int i=0; iprintRotatedScaledSprite(FRM__SMOKE,RenderPos.vx,RenderPos.vy,ThisScaleX,ThisScaleY,ThisAngle,OtPos*0); - setShadeTex(Ft4,0); - setSemiTrans(Ft4,1); - setRGB0(Ft4,ThisR,ThisB,ThisB); - Ft4->tpage|=ST<<5; - - ThisR+=RInc; - ThisG+=GInc; - ThisB+=BInc; - - ThisAngle+=AngleInc; - ThisAngle&=4095; - ThisScaleX+=ScaleXInc; - ThisScaleY+=ScaleYInc; - - ThisIdx++; - ThisIdx&=MAX_TRAIL-1; - } - Angle+=AngleInc/2; - Angle&=4095; - - } -} diff --git a/source/fx/fxsteam.h b/source/fx/fxsteam.h index a6f961cc1..cbcd2057e 100644 --- a/source/fx/fxsteam.h +++ b/source/fx/fxsteam.h @@ -1,35 +1,25 @@ -/**********************/ -/*** JellyFish Legs ***/ -/**********************/ +/*************/ +/*** Steam ***/ +/*************/ -#ifndef __FX_FX_CLOUD_HEADER__ -#define __FX_FX_CLOUD_HEADER__ +#ifndef __FX_FX_STEAM_HEADER__ +#define __FX_FX_STEAM_HEADER__ #include "fx/fx.h" +#include "fx/fxcloud.h" /*****************************************************************************/ -class CFXCloud : public CFX +class CFXSteam : public CFXCloud { public: - struct sList - { - DVECTOR Ofs; - }; - enum - { - MAX_TRAIL = 16 - }; - virtual void init(DVECTOR const &Pos); virtual void shutdown(); virtual void think(int _frames); -virtual void render(); + void SetSize(int Size); protected: - sList List[MAX_TRAIL]; - int ListCount; - int HeadIdx; - int Angle; + int Life; + DVECTOR Vel; }; #endif