-Started to move stuff from library back to main game
[supertux.git] / src / object / particlesystem.h
index d11c5c1..4d1f799 100644 (file)
 #include <vector>
 
 #include "video/surface.h"
-#include "special/game_object.h"
+#include "game_object.h"
 #include "serializable.h"
 
 using namespace SuperTux;
 
-namespace SuperTux {
-class LispReader;
+namespace lisp {
+class Lisp;
 }
 
 class DisplayManager;
@@ -80,8 +80,8 @@ public:
     SnowParticleSystem();
     virtual ~SnowParticleSystem();
 
-    void parse(LispReader& reader);
-    void write(LispWriter& writer);
+    void parse(const lisp::Lisp& lisp);
+    void write(lisp::Writer& writer);
 
     virtual void action(float elapsed_time);
 
@@ -98,14 +98,38 @@ private:
     Surface* snowimages[3];
 };
 
+class RainParticleSystem : public ParticleSystem, public Serializable
+{
+public:
+    RainParticleSystem();
+    virtual ~RainParticleSystem();
+
+    void parse(const lisp::Lisp& lisp);
+    void write(lisp::Writer& writer);
+
+    virtual void action(float elapsed_time);
+
+    std::string type() const
+    { return "RainParticleSystem"; }
+    
+private:
+    class RainParticle : public Particle
+    {
+    public:
+        float speed;
+    };
+    
+    Surface* rainimages[2];
+};
+
 class CloudParticleSystem : public ParticleSystem, public Serializable
 {
 public:
     CloudParticleSystem();
     virtual ~CloudParticleSystem();
 
-    void parse(LispReader& reader);
-    void write(LispWriter& writer);
+    void parse(const lisp::Lisp& lisp);
+    void write(lisp::Writer& writer);
 
     virtual void action(float elapsed_time);