aboutsummaryrefslogtreecommitdiff
path: root/archive/hgehelp/hgepmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archive/hgehelp/hgepmanager.cpp')
-rw-r--r--archive/hgehelp/hgepmanager.cpp96
1 files changed, 96 insertions, 0 deletions
diff --git a/archive/hgehelp/hgepmanager.cpp b/archive/hgehelp/hgepmanager.cpp
new file mode 100644
index 0000000..16a0b1d
--- /dev/null
+++ b/archive/hgehelp/hgepmanager.cpp
@@ -0,0 +1,96 @@
+// PLEASE NOTE that this is not the 1.81 version of hgeparticle.cpp ...
+// the game I'm working on used an older HGE that breaks with the 1.81
+// particle system. If you want 1.81, just overwrite this file. --ryan.
+
+/*
+** Haaf's Game Engine 1.7
+** Copyright (C) 2003-2007, Relish Games
+** hge.relishgames.com
+**
+** hgeParticleManager helper class implementation
+*/
+
+
+#include "hgeparticle.h"
+
+
+hgeParticleManager::hgeParticleManager(const float fps)
+{
+ nPS=0;
+ fFPS=fps;
+ tX=tY=0.0f;
+}
+
+hgeParticleManager::~hgeParticleManager()
+{
+ int i;
+ for(i=0;i<nPS;i++) delete psList[i];
+}
+
+void hgeParticleManager::Update(float dt)
+{
+ int i;
+ for(i=0;i<nPS;i++)
+ {
+ psList[i]->Update(dt);
+ if(psList[i]->GetAge()==-2.0f && psList[i]->GetParticlesAlive()==0)
+ {
+ delete psList[i];
+ psList[i]=psList[nPS-1];
+ nPS--;
+ i--;
+ }
+ }
+}
+
+void hgeParticleManager::Render()
+{
+ int i;
+ for(i=0;i<nPS;i++) psList[i]->Render();
+}
+
+hgeParticleSystem* hgeParticleManager::SpawnPS(hgeParticleSystemInfo *psi, float x, float y)
+{
+ if(nPS==MAX_PSYSTEMS) return 0;
+ psList[nPS]=new hgeParticleSystem(psi,fFPS);
+ psList[nPS]->FireAt(x,y);
+ psList[nPS]->Transpose(tX,tY);
+ nPS++;
+ return psList[nPS-1];
+}
+
+bool hgeParticleManager::IsPSAlive(hgeParticleSystem *ps) const
+{
+ int i;
+ for(i=0;i<nPS;i++) if(psList[i]==ps) return true;
+ return false;
+}
+
+void hgeParticleManager::Transpose(float x, float y)
+{
+ int i;
+ for(i=0;i<nPS;i++) psList[i]->Transpose(x,y);
+ tX=x; tY=y;
+}
+
+void hgeParticleManager::KillPS(hgeParticleSystem *ps)
+{
+ int i;
+ for(i=0;i<nPS;i++)
+ {
+ if(psList[i]==ps)
+ {
+ delete psList[i];
+ psList[i]=psList[nPS-1];
+ nPS--;
+ return;
+ }
+ }
+}
+
+void hgeParticleManager::KillAll()
+{
+ int i;
+ for(i=0;i<nPS;i++) delete psList[i];
+ nPS=0;
+}