fix tiles being 1 pixel off their correct position
[supertux.git] / src / particlesystem.h
index 01ba586..11bff4a 100644 (file)
 #define SUPERTUX_PARTICLESYSTEM_H
 
 #include <vector>
-#include "texture.h"
+#include "screen/texture.h"
+#include "game_object.h"
+
+class DisplayManager;
 
 /**
  * This is the base class for particle systems. It is responsible for storing a
  * initialize particles in the constructor and move them in the simulate
  * function.
  */
-class ParticleSystem
+class ParticleSystem : public GameObject
 {
 public:
     ParticleSystem();
     virtual ~ParticleSystem();
     
-    void draw(float scrollx, float scrolly, int layer);
-
-    virtual void simulate(float elapsed_time) = 0;
+    virtual void draw(DrawingContext& context);
 
 protected:
     class Particle
@@ -55,8 +56,7 @@ protected:
         virtual ~Particle()
         { }
 
-        float x, y;
-        int layer;
+        Vector pos;
         Surface* texture;
     };
     
@@ -70,7 +70,10 @@ public:
     SnowParticleSystem();
     virtual ~SnowParticleSystem();
 
-    virtual void simulate(float elapsed_time);
+    virtual void action(float elapsed_time);
+
+    std::string type() const
+    { return "SnowParticleSystem"; }
     
 private:
     class SnowParticle : public Particle
@@ -88,7 +91,10 @@ public:
     CloudParticleSystem();
     virtual ~CloudParticleSystem();
 
-    virtual void simulate(float elapsed_time);
+    virtual void action(float elapsed_time);
+
+    std::string type() const
+    { return "SnowParticleSystem"; }    
     
 private:
     class CloudParticle : public Particle