+extern Sprite *img_smoke_cloud;
+
+class SmokeCloud : public GameObject
+{
+public:
+ SmokeCloud(const Vector& pos);
+
+ virtual void action(float elapsed_time);
+ virtual void draw(DrawingContext& context);
+
+private:
+ Timer timer;
+ Vector position;
+};
+
+class Particles : public GameObject
+{
+public:
+ Particles(const Vector& epicenter, const Vector& velocity, const Vector& acceleration, int number, Color color, int size, int life_time);
+ ~Particles();
+
+ virtual void action(float elapsed_time);
+ virtual void draw(DrawingContext& context);
+
+private:
+ Color color;
+ float size;
+ Vector vel, accel;
+ Timer timer;
+ bool live_forever;
+
+ struct Particle {
+ Vector pos;
+ float angle;
+ };
+ std::vector <Particle*> particles;
+};
+