From 44e4594a1fc5958f194f4631f8086e504cf139f4 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 16 Nov 2000 17:33:37 +0000 Subject: [PATCH] --- source/gfx/bubicles.cpp | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/source/gfx/bubicles.cpp b/source/gfx/bubicles.cpp index d9b1919c8..961c5827d 100644 --- a/source/gfx/bubicles.cpp +++ b/source/gfx/bubicles.cpp @@ -71,6 +71,8 @@ CBubicleEmitter *CBubicleFactory::s_emitters; CBubicle *CBubicleFactory::s_bubicles; SpriteBank *CBubicleFactory::s_sprites; +int s_numLiveBubicleEmitters=0; +int s_numLiveBubicles=0; @@ -122,7 +124,11 @@ void CBubicleEmitter::think(int _frames) } if(m_data.m_life!=-1&&m_frameCount>m_data.m_life) + { m_active=false; + s_numLiveBubicleEmitters--; + ASSERT(s_numLiveBubicleEmitters>=0); // Woah, something bad has happened! + } } @@ -306,7 +312,11 @@ void CBubicle::think(int _frames) m_frameCount+=_frames; if(m_frameCount>m_data.m_life) + { m_active=false; + s_numLiveBubicles--; + ASSERT(s_numLiveBubicles>=0); // Woah, something bad has happened! + } } @@ -398,22 +408,32 @@ void CBubicleFactory::think(int _frames) ASSERT(s_initialised); int frames; - int i; + int i,count; CBubicleEmitter *emt; CBubicle *bub; emt=s_emitters; - for(i=0;iisActive()) - emt->think(_frames); + while(!emt->isActive()) + { + emt++; + } + emt->think(_frames); + emt++; } - + bub=s_bubicles; - for(i=0;iisActive()) - bub->think(_frames); + while(!bub->isActive()) + { + bub++; + } + bub->think(_frames); + bub++; } } @@ -468,6 +488,7 @@ CBubicleEmitter *CBubicleFactory::spawnEmitter(BubicleEmitterData *_init) if(!emt->isActive()) { emt->init(_init); + s_numLiveBubicleEmitters++; return emt; } } @@ -523,7 +544,7 @@ CBubicle *CBubicleFactory::spawnParticle(BubicleEmitterData *_init) 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); - + s_numLiveBubicles++; return bub; } }