From dfdce2f340800b6df3ef26609ca969f1fe5b114d Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 18 Oct 2000 18:36:52 +0000 Subject: [PATCH] --- source/gfx/bubicles.cpp | 408 ++++++++++++++++++++++++++------------- source/gfx/bubicles.h | 142 ++++++++++---- source/paul/paul.cpp | 58 ------ source/system/gstate.cpp | 1 + 4 files changed, 377 insertions(+), 232 deletions(-) diff --git a/source/gfx/bubicles.cpp b/source/gfx/bubicles.cpp index fcf91324f..e06293030 100644 --- a/source/gfx/bubicles.cpp +++ b/source/gfx/bubicles.cpp @@ -34,6 +34,10 @@ #include "gfx\sprbank.h" #endif +#ifndef __SYSTEM_GSTATE_H__ +#include "system\gstate.h" +#endif + /* Std Lib ------- */ @@ -62,6 +66,25 @@ Vars ---- */ +int CBubicleFactory::s_initialised=false; +CBubicleEmitter *CBubicleFactory::s_emitters; +CBubicle *CBubicleFactory::s_bubicles; +SpriteBank *CBubicleFactory::s_sprites; + + + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CBubicleEmitter::create() +{ + m_active=false; +} + /*---------------------------------------------------------------------- Function: @@ -69,22 +92,12 @@ Params: Returns: ---------------------------------------------------------------------- */ -static SpriteBank *sprites=NULL; void CBubicleEmitter::init(BubicleEmitterData *_init) { - for(int i=0;iload(INGAMEFX_INGAMEFX_SPR); -} + m_frameCount=0; + m_spawnFrameCount=0; + m_active=true; } /*---------------------------------------------------------------------- @@ -93,40 +106,23 @@ if(sprites==NULL) Params: Returns: ---------------------------------------------------------------------- */ -void CBubicleEmitter::think() +void CBubicleEmitter::think(int _frames) { - int birthAmount; + m_frameCount+=_frames; + m_spawnFrameCount+=_frames; - - birthAmount=0; - for(int i=0;i=m_data.m_birthRate) { - if(m_bubicles[i]) + for(int i=0;ithink(); - if(m_bubicles[i]->isDead()) - { - delete m_bubicles[i]; - m_bubicles[i]=NULL; - } - } - else - { - if(m_frameCount>=m_data.m_birthRate) - { - birthAmount=m_data.m_birthAmount; - m_frameCount=0; - } - if(birthAmount) - { - m_bubicles[i]=createNewBubicle(&m_data); - birthAmount--; - } + if(CBubicleFactory::spawnParticle(&m_data)==NULL) + break; } + m_spawnFrameCount=0; } - - m_frameCount++; + if(m_data.m_life!=-1&&m_frameCount>m_data.m_life) + m_active=false; } @@ -136,14 +132,9 @@ void CBubicleEmitter::think() Params: Returns: ---------------------------------------------------------------------- */ +#ifdef SHOW_BUBICLE_EMITTERS void CBubicleEmitter::render() { - for(int i=0;irender(); - } - POLY_F4 *f4; f4=GetPrimF4(); setPolyF4(f4); @@ -153,6 +144,21 @@ void CBubicleEmitter::render() setRGB0(f4,30,40,50); AddPrimToList(f4,m_data.m_bubicleBase.m_ot+1); } +#endif + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CBubicleEmitter::kill() +{ + ASSERT(m_active); + + m_active=false; +} /*---------------------------------------------------------------------- @@ -163,6 +169,8 @@ void CBubicleEmitter::render() ---------------------------------------------------------------------- */ void CBubicleEmitter::setPos(int _x,int _y) { + ASSERT(m_active); + m_data.m_x=_x; m_data.m_y=_y; } @@ -176,6 +184,8 @@ void CBubicleEmitter::setPos(int _x,int _y) ---------------------------------------------------------------------- */ void CBubicleEmitter::setSize(int _w,int _h) { + ASSERT(m_active); + m_data.m_w=_w; m_data.m_h=_h; } @@ -187,68 +197,11 @@ void CBubicleEmitter::setSize(int _w,int _h) Params: Returns: ---------------------------------------------------------------------- */ -int fixed=false; -CBubicle *CBubicleEmitter::createNewBubicle(BubicleEmitterData *_init) +void CBubicle::create() { - CBubicle *newBub; - BubicleData newBubData; - int x,y; - - newBub=new ("CBubicle") CBubicle(); - - x=_init->m_x+getRndRange(_init->m_w); - y=_init->m_y+getRndRange(_init->m_h); - -if(fixed) -{ - newBubData.m_life=_init->m_bubicleBase.m_life; - newBubData.m_vx=_init->m_bubicleBase.m_vx; - newBubData.m_vdx=_init->m_bubicleBase.m_vdx; - newBubData.m_vxmax=_init->m_bubicleBase.m_vxmax; - newBubData.m_vy=_init->m_bubicleBase.m_vy; - newBubData.m_vdy=_init->m_bubicleBase.m_vdy; - newBubData.m_vymax=_init->m_bubicleBase.m_vymax; - newBubData.m_w=_init->m_bubicleBase.m_w; - newBubData.m_h=_init->m_bubicleBase.m_h; - newBubData.m_dvSizeChange=_init->m_bubicleBase.m_dvSizeChange; - newBubData.m_theta=_init->m_bubicleBase.m_theta; - newBubData.m_vtheta=_init->m_bubicleBase.m_vtheta; - newBubData.m_wobbleWidth=_init->m_bubicleBase.m_wobbleWidth; - newBubData.m_vwobbleWidth=_init->m_bubicleBase.m_vwobbleWidth; - newBubData.m_vdwobbleWidth=_init->m_bubicleBase.m_vdwobbleWidth; - newBubData.m_ot=_init->m_bubicleBase.m_ot; - newBubData.m_colour.m_r=_init->m_bubicleBase.m_colour.m_r; - newBubData.m_colour.m_g=_init->m_bubicleBase.m_colour.m_r; - newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r; -} -else -{ - newBubData.m_life=_init->m_bubicleBase.m_life+getRndRange(_init->m_bubicleRange.m_life); - newBubData.m_vx=_init->m_bubicleBase.m_vx+getRndRange(_init->m_bubicleRange.m_vx); - newBubData.m_vdx=_init->m_bubicleBase.m_vdx+getRndRange(_init->m_bubicleRange.m_vdx); - newBubData.m_vxmax=_init->m_bubicleBase.m_vxmax+getRndRange(_init->m_bubicleRange.m_vxmax); - newBubData.m_vy=_init->m_bubicleBase.m_vy+getRndRange(_init->m_bubicleRange.m_vy); - newBubData.m_vdy=_init->m_bubicleBase.m_vdy+getRndRange(_init->m_bubicleRange.m_vdy); - newBubData.m_vymax=_init->m_bubicleBase.m_vymax+getRndRange(_init->m_bubicleRange.m_vymax); - newBubData.m_w=_init->m_bubicleBase.m_w+getRndRange(_init->m_bubicleRange.m_w); - newBubData.m_h=_init->m_bubicleBase.m_h+getRndRange(_init->m_bubicleRange.m_h); - newBubData.m_dvSizeChange=_init->m_bubicleBase.m_dvSizeChange+getRndRange(_init->m_bubicleRange.m_dvSizeChange); - newBubData.m_theta=_init->m_bubicleBase.m_theta+getRndRange(_init->m_bubicleRange.m_theta); - newBubData.m_vtheta=_init->m_bubicleBase.m_vtheta+getRndRange(_init->m_bubicleRange.m_vtheta); - newBubData.m_wobbleWidth=_init->m_bubicleBase.m_wobbleWidth+getRndRange(_init->m_bubicleRange.m_wobbleWidth); - newBubData.m_vwobbleWidth=_init->m_bubicleBase.m_vwobbleWidth+getRndRange(_init->m_bubicleRange.m_vwobbleWidth); - newBubData.m_vdwobbleWidth=_init->m_bubicleBase.m_vdwobbleWidth+getRndRange(_init->m_bubicleRange.m_vdwobbleWidth); - newBubData.m_ot=_init->m_bubicleBase.m_ot+getRndRange(_init->m_bubicleRange.m_ot); - newBubData.m_colour.m_r=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_r); - newBubData.m_colour.m_g=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_g); - newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_b); + m_active=false; } - newBub->init(&newBubData,x,y); - - return newBub; -} - /*---------------------------------------------------------------------- Function: @@ -256,9 +209,10 @@ else Params: Returns: ---------------------------------------------------------------------- */ -static int gaycount=0; void CBubicle::init(BubicleData *_init,int _x,int _y) { + static int frameType=0; + m_data=*_init; m_x=(_x-(m_data.m_w>>1))<getFrameHeader(FRM__BUBBLE_SMALL); - else - m_fhBub=sprites->getFrameHeader(FRM__BUBBLE_FLOWER); + m_fhBub=CBubicleFactory::getSprites()->getFrameHeader((frameType++)&0x31?FRM__BUBBLE_SMALL:FRM__BUBBLE_FLOWER); + + m_active=true; } @@ -286,9 +239,11 @@ void CBubicle::init(BubicleData *_init,int _x,int _y) Params: Returns: ---------------------------------------------------------------------- */ -void CBubicle::think() +void CBubicle::think(int _frames) { - if(!isDead()) + ASSERT(isActive()); + + for(int i=0;i<_frames;i++) // Good or bad way to do this? Alternative is a bunch of multiplies.. { if(m_x!=m_data.m_vxmax) { @@ -323,9 +278,9 @@ void CBubicle::think() m_data.m_vy=m_data.m_vymax; } } - + m_data.m_theta=(m_data.m_theta+m_data.m_vtheta)&4095; - + m_data.m_wobbleWidth+=m_data.m_vwobbleWidth; m_data.m_vwobbleWidth+=m_data.m_vdwobbleWidth; @@ -346,11 +301,13 @@ void CBubicle::think() m_vSizeChange-=m_data.m_dvSizeChange; m_data.m_h+=m_vSizeChange; } - - m_frameCount++; //PKG } -} + + m_frameCount+=_frames; + if(m_frameCount>m_data.m_life) + m_active=false; +} /*---------------------------------------------------------------------- @@ -361,22 +318,104 @@ void CBubicle::think() ---------------------------------------------------------------------- */ void CBubicle::render() { - if(!isDead()) + ASSERT(isActive()); + + POLY_FT4 *ft4; + int x,y,w,h; + + x=m_x>>ACCURACY_SHIFT; + y=m_y>>ACCURACY_SHIFT; + w=m_data.m_w>>ACCURACY_SHIFT; + h=m_data.m_h>>ACCURACY_SHIFT; + + x+=(msin(m_data.m_theta)*(m_data.m_wobbleWidth>>ACCURACY_SHIFT))>>12; + + ft4=CBubicleFactory::getSprites()->printFT4(m_fhBub,0,0,0,0,m_data.m_ot); + setXYWH(ft4,x,y,w,h); + setSemiTrans(ft4,1); + setRGB0(ft4,m_data.m_colour.m_r,m_data.m_colour.m_g,m_data.m_colour.m_b); +} + + + + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CBubicleFactory::init() +{ + int i; + CBubicleEmitter *emt; + CBubicle *bub; + + s_sprites=new ("Bubble Sprites") SpriteBank(); + s_sprites->load(INGAMEFX_INGAMEFX_SPR); + + emt=s_emitters=(CBubicleEmitter*)MemAlloc(sizeof(CBubicleEmitter)*NUM_EMITTERS,"BubicleEmitters"); + for(i=0;icreate(); + + bub=s_bubicles=(CBubicle*)MemAlloc(sizeof(CBubicle)*NUM_BUBICLES,"Bubicles"); + for(i=0;icreate(); + + SYSTEM_DBGMSG("CBubicleFactory::init ( allocated %d bytes )",(sizeof(CBubicleEmitter)*NUM_EMITTERS)+(sizeof(CBubicle)*NUM_BUBICLES)); + + s_initialised=true; +} + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CBubicleFactory::shutdown() +{ + ASSERT(s_initialised); + + MemFree(s_emitters); + MemFree(s_bubicles); + s_sprites->dump(); delete s_sprites; + + s_initialised=false; +} + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CBubicleFactory::think() +{ + ASSERT(s_initialised); + + int frames; + int i; + CBubicleEmitter *emt; + CBubicle *bub; + + frames=GameState::getFramesSinceLast(); + + emt=s_emitters; + for(i=0;iisActive()) + emt->think(frames); + } - x=m_x>>ACCURACY_SHIFT; - y=m_y>>ACCURACY_SHIFT; - w=m_data.m_w>>ACCURACY_SHIFT; - h=m_data.m_h>>ACCURACY_SHIFT; - - x+=(msin(m_data.m_theta)*(m_data.m_wobbleWidth>>ACCURACY_SHIFT))>>12; - - ft4=sprites->printFT4((sFrameHdr*)m_fhBub,0,0,0,0,m_data.m_ot); - setXYWH(ft4,x,y,w,h); - setSemiTrans(ft4,1); - setRGB0(ft4,m_data.m_colour.m_r,m_data.m_colour.m_g,m_data.m_colour.m_b); + bub=s_bubicles; + for(i=0;iisActive()) + bub->think(frames); } } @@ -387,9 +426,112 @@ void CBubicle::render() Params: Returns: ---------------------------------------------------------------------- */ -int CBubicle::isDead() +void CBubicleFactory::render() { - return m_frameCount>m_data.m_life||m_y<0; + ASSERT(s_initialised); + + int i; + CBubicleEmitter *emt; + CBubicle *bub; + +#ifdef SHOW_BUBICLE_EMITTERS + emt=s_emitters; + for(i=0;iisActive()) + emt->render(); + } +#endif + + bub=s_bubicles; + for(i=0;iisActive()) + bub->render(); + } +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +CBubicleEmitter *CBubicleFactory::spawnEmitter(BubicleEmitterData *_init) +{ + ASSERT(s_initialised); + + int i; + CBubicleEmitter *emt; + + emt=s_emitters; + for(i=0;iisActive()) + { + emt->init(_init); + return emt; + } + } + + SYSTEM_DBGMSG("Out of CBubicleEmitters!"); + return NULL; +} + + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +CBubicle *CBubicleFactory::spawnParticle(BubicleEmitterData *_init) +{ + ASSERT(s_initialised); + + int i; + CBubicle *bub; + + bub=s_bubicles; + for(i=0;iisActive()) + { + BubicleData newBubData; + int x,y; + + x=_init->m_x+getRndRange(_init->m_w); + y=_init->m_y+getRndRange(_init->m_h); + + newBubData.m_life=_init->m_bubicleBase.m_life+getRndRange(_init->m_bubicleRange.m_life); + newBubData.m_vx=_init->m_bubicleBase.m_vx+getRndRange(_init->m_bubicleRange.m_vx); + newBubData.m_vdx=_init->m_bubicleBase.m_vdx+getRndRange(_init->m_bubicleRange.m_vdx); + newBubData.m_vxmax=_init->m_bubicleBase.m_vxmax+getRndRange(_init->m_bubicleRange.m_vxmax); + newBubData.m_vy=_init->m_bubicleBase.m_vy+getRndRange(_init->m_bubicleRange.m_vy); + newBubData.m_vdy=_init->m_bubicleBase.m_vdy+getRndRange(_init->m_bubicleRange.m_vdy); + newBubData.m_vymax=_init->m_bubicleBase.m_vymax+getRndRange(_init->m_bubicleRange.m_vymax); + newBubData.m_w=_init->m_bubicleBase.m_w+getRndRange(_init->m_bubicleRange.m_w); + newBubData.m_h=_init->m_bubicleBase.m_h+getRndRange(_init->m_bubicleRange.m_h); + newBubData.m_dvSizeChange=_init->m_bubicleBase.m_dvSizeChange+getRndRange(_init->m_bubicleRange.m_dvSizeChange); + newBubData.m_theta=_init->m_bubicleBase.m_theta+getRndRange(_init->m_bubicleRange.m_theta); + newBubData.m_vtheta=_init->m_bubicleBase.m_vtheta+getRndRange(_init->m_bubicleRange.m_vtheta); + newBubData.m_wobbleWidth=_init->m_bubicleBase.m_wobbleWidth+getRndRange(_init->m_bubicleRange.m_wobbleWidth); + newBubData.m_vwobbleWidth=_init->m_bubicleBase.m_vwobbleWidth+getRndRange(_init->m_bubicleRange.m_vwobbleWidth); + newBubData.m_vdwobbleWidth=_init->m_bubicleBase.m_vdwobbleWidth+getRndRange(_init->m_bubicleRange.m_vdwobbleWidth); + newBubData.m_ot=_init->m_bubicleBase.m_ot+getRndRange(_init->m_bubicleRange.m_ot); + newBubData.m_colour.m_r=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_r); + newBubData.m_colour.m_g=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_g); + newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_b); + + bub->init(&newBubData,x,y); + + return bub; + } + } + + SYSTEM_DBGMSG("Out of CBubicles!"); + return NULL; } diff --git a/source/gfx/bubicles.h b/source/gfx/bubicles.h index 35525b3a4..9f82a4094 100644 --- a/source/gfx/bubicles.h +++ b/source/gfx/bubicles.h @@ -18,6 +18,11 @@ Includes -------- */ +#ifndef __GFX_SPRBANK_H__ +#include "gfx\sprbank.h" +#endif + + /* Std Lib ------- */ @@ -25,104 +30,159 @@ Tyepdefs && Defines ------------------- */ +// Uncomment to see the emitters on screen +#ifdef __USER_paul__ +#define SHOW_BUBICLE_EMITTERS +#endif + + + /*---------------------------------------------------------------------- Structure defintions -------------------- */ +// +// An individual particle and it's associated data +// + typedef struct RGBPack { unsigned char m_r,m_g,m_b; }; - -// particle typedef struct { - int m_life; - int m_vx,m_vdx,m_vxmax; - int m_vy,m_vdy,m_vymax; - int m_w,m_h; - int m_dvSizeChange; - int m_theta,m_vtheta; - int m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth; - int m_ot; - RGBPack m_colour; + int m_life; + int m_vx,m_vdx,m_vxmax; + int m_vy,m_vdy,m_vymax; + int m_w,m_h; + int m_dvSizeChange; + int m_theta,m_vtheta; + int m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth; + int m_ot; + RGBPack m_colour; } BubicleData; - class CBubicle { -public: +// We don't really want anyone to instantiate this themselves.. only the factory is allowed to +private: enum { ACCURACY_SHIFT=6, }; + CBubicle() {;} + void create(); void init(BubicleData *_init,int _x,int _y); - void think(); + void think(int _frames); void render(); - int isDead(); + int isActive() {return m_active;} + + + int m_active; -private: int m_x; int m_y; int m_typeSizeChange; // 0=Width, 1=Height int m_vSizeChange; int m_frameCount; - void *m_fhBub; // FFS! Go on.. try and make this an sFrameHdr * + sFrameHdr *m_fhBub; BubicleData m_data; - +friend class CBubicleFactory; +friend class CBubicleEmitter; }; -// emitter + +// +// An emitter +// + typedef struct { - int m_x,m_y,m_w,m_h; - int m_birthRate,m_birthAmount; + int m_x,m_y,m_w,m_h; + int m_birthRate,m_birthAmount; + int m_life; // -1 for infinite life - BubicleData m_bubicleBase; - BubicleData m_bubicleRange; + BubicleData m_bubicleBase; + BubicleData m_bubicleRange; } BubicleEmitterData; class CBubicleEmitter { public: - enum{NUM_BUB=400}; + void kill(); + void setPos(int _x,int _y); + void setSize(int _w,int _h); + void setPosAndSize(int _x,int _y,int _w,int _h) {setPos(_x,_y);setSize(_w,_h);} - void init(BubicleEmitterData *_init); - - void think(); - void render(); - - void setPos(int _x,int _y); - void setSize(int _w,int _h); - void setPosAndSize(int _x,int _y,int _w,int _h) {setPos(_x,_y);setSize(_w,_h);} + int isActive() {return m_active;} private: + CBubicleEmitter() {;} + + void create(); + void init(BubicleEmitterData *_init); + + void think(int _frames); +#ifdef SHOW_BUBICLE_EMITTERS + void render(); +#endif + - static CBubicle *createNewBubicle(BubicleEmitterData *_init); -// static void removeBubicle(); - - + int m_active; BubicleEmitterData m_data; - int m_x,m_y,m_w,m_h; - int m_birthRate; - int m_frameCount; + int m_frameCount; + int m_spawnFrameCount; - CBubicle *m_bubicles[NUM_BUB]; -// static int s_numBubble +friend class CBubicleFactory; }; +// +// Particle factory +// + +class CBubicleFactory +{ +public: + static void init(); + static void shutdown(); + static void think(); + static void render(); + + static CBubicleEmitter *spawnEmitter(BubicleEmitterData *_init); + static CBubicle *spawnParticle(BubicleEmitterData *_init); + + static SpriteBank *getSprites() {return s_sprites;} + + +private: + enum + { + NUM_EMITTERS=10, + NUM_BUBICLES=200, + }; + + CBubicleFactory() {;} + + static int s_initialised; + static CBubicleEmitter *s_emitters; + static CBubicle *s_bubicles; + static SpriteBank *s_sprites; + +}; + + /*---------------------------------------------------------------------- Globals diff --git a/source/paul/paul.cpp b/source/paul/paul.cpp index e26d7edac..60fc81581 100644 --- a/source/paul/paul.cpp +++ b/source/paul/paul.cpp @@ -42,10 +42,6 @@ #include "pad\pads.h" #endif -#ifndef __GFX_BUBICLES__ -#include "gfx\bubicles.h" -#endif - #ifndef __GFX_SPRBANK_H__ #include "gfx\sprbank.h" #endif @@ -78,7 +74,6 @@ Vars ---- */ static FontBank s_fontBank; -char *s_mem[3]; /*---------------------------------------------------------------------- @@ -89,36 +84,6 @@ char *s_mem[3]; ---------------------------------------------------------------------- */ int ploopid1=0; int ploopid2=0; -BubicleEmitterData data= -{ - 206,200,40,40, // m_x,m_y,m_w,m_h - 3,1, // m_birthRate,m_birthAmount - { // m_bubicleBase - 100, // m_life - 0,0,0, // m_vx,m_vdx,m_vxmax - -40,-15,-200, // m_vy,m_vdy,m_vymax - 13,10, // m_w,m_h - 10, // m_dvSizeChange - 0,100, // m_theta,m_vtheta - 100,2,0, // m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth - 40, // m_ot - { 128,128,128, } // m_colour - }, - { // m_bubicleRange - 100, // m_life - 0,0,0, // m_vx,m_vdx,m_vxmax - 20,10,0, // m_vy,m_vdy,m_vymax - 5,5, // m_w,m_h - 10, // m_dvSizeChange - 4095,50, // m_theta,m_vtheta - 100,5,0, // m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth - 0, // m_ot - { 0, 64,127, } // m_colour - } -}; -CBubicleEmitter tb; -int tbx=64,tby=230; -int tbw=512-128,tbh=20; static SpriteBank *sprites=NULL; @@ -139,8 +104,6 @@ void CPaulScene::init() ploopid1=CSoundMediator::playSfx(0); ploopid2=CSoundMediator::playSfx(0); - tb.init(&data); - sprites=new ("bg sprite") SpriteBank(); sprites->load(INGAMEFX_INGAMEFX_SPR); } @@ -177,8 +140,6 @@ void CPaulScene::render() y+=charHeight; } - tb.render(); - POLY_FT4 *ft4=sprites->printFT4(FRM_BACKGROUND,0,0,0,0,1023); setXYWH(ft4,20,20,512-40,256-40); setRGB0(ft4,64,64,64); @@ -208,7 +169,6 @@ void CPaulScene::think() pad=PadGetDown(0); if(pad&PAD_R1) { - tb.init(&data); PAUL_DBGMSG("-------------------"); } else if(pad&PAD_CROSS) @@ -296,29 +256,11 @@ void CPaulScene::think() pad=PadGetHeld(1); if(pad&PAD_L1) { - if(pad&PAD_UP) - tbh--; - if(pad&PAD_DOWN) - tbh++; - if(pad&PAD_LEFT) - tbw--; - if(pad&PAD_RIGHT) - tbw++; } else { - if(pad&PAD_UP) - tby-=5; - if(pad&PAD_DOWN) - tby+=5; - if(pad&PAD_LEFT) - tbx-=5; - if(pad&PAD_RIGHT) - tbx+=5; } - tb.setPosAndSize(tbx,tby,tbw,tbh); - tb.think(); } diff --git a/source/system/gstate.cpp b/source/system/gstate.cpp index 3cc78685b..0861eca60 100644 --- a/source/system/gstate.cpp +++ b/source/system/gstate.cpp @@ -102,6 +102,7 @@ void GameState::updateTimer() if (s_timeSinceLast > 4 * 4096) { s_timeSinceLast = 4 * 4096; + SYSTEM_DBGMSG("updateTimer loosing frames!"); } }