X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fparticlesystem.h;h=d11c5c13daaf309f2b3dda963862847d2365924e;hb=ee6972038331a3c26a2a6a0bdb2baca25475b1d2;hp=4f21a5c623a0ccae40cf18a50a662a56fbe62906;hpb=403f2652505e814b645892bffaf89a584984f9b8;p=supertux.git diff --git a/src/particlesystem.h b/src/particlesystem.h index 4f21a5c62..d11c5c13d 100644 --- a/src/particlesystem.h +++ b/src/particlesystem.h @@ -21,9 +21,16 @@ #define SUPERTUX_PARTICLESYSTEM_H #include -#include "texture.h" -#include "drawable.h" -#include "game_object.h" + +#include "video/surface.h" +#include "special/game_object.h" +#include "serializable.h" + +using namespace SuperTux; + +namespace SuperTux { +class LispReader; +} class DisplayManager; @@ -42,23 +49,24 @@ class DisplayManager; * initialize particles in the constructor and move them in the simulate * function. */ -class ParticleSystem : public GameObject, public Drawable +class ParticleSystem : public GameObject { public: - ParticleSystem(DisplayManager& displaymanager); + ParticleSystem(); virtual ~ParticleSystem(); - virtual void draw(ViewPort& view, int layer); + virtual void draw(DrawingContext& context); protected: + int layer; + class Particle { public: virtual ~Particle() { } - float x, y; - int layer; + Vector pos; Surface* texture; }; @@ -66,12 +74,15 @@ protected: float virtual_width, virtual_height; }; -class SnowParticleSystem : public ParticleSystem +class SnowParticleSystem : public ParticleSystem, public Serializable { public: - SnowParticleSystem(DisplayManager& displaymanager); + SnowParticleSystem(); virtual ~SnowParticleSystem(); + void parse(LispReader& reader); + void write(LispWriter& writer); + virtual void action(float elapsed_time); std::string type() const @@ -87,12 +98,15 @@ private: Surface* snowimages[3]; }; -class CloudParticleSystem : public ParticleSystem +class CloudParticleSystem : public ParticleSystem, public Serializable { public: - CloudParticleSystem(DisplayManager& displaymanager); + CloudParticleSystem(); virtual ~CloudParticleSystem(); + void parse(LispReader& reader); + void write(LispWriter& writer); + virtual void action(float elapsed_time); std::string type() const