X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fparticlesystem.h;h=4d1f79965b9daafcb227e236fb36cc4f9d14ac63;hb=c0093d25093395cb62fc2526ab42be65a9f015b8;hp=d11c5c13daaf309f2b3dda963862847d2365924e;hpb=6f801c22d97251799740317fb1d0caf2e744b321;p=supertux.git diff --git a/src/object/particlesystem.h b/src/object/particlesystem.h index d11c5c13d..4d1f79965 100644 --- a/src/object/particlesystem.h +++ b/src/object/particlesystem.h @@ -23,13 +23,13 @@ #include #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);