Added a parameter for Particles to set the drawing layer, instead of using a fixed...
authorRicardo Cruz <rick2@aeiou.pt>
Sun, 31 Oct 2004 12:08:44 +0000 (12:08 +0000)
committerRicardo Cruz <rick2@aeiou.pt>
Sun, 31 Oct 2004 12:08:44 +0000 (12:08 +0000)
Asked by Iknos.

SVN-Revision: 2078

src/gameloop.cpp
src/gameobjs.cpp
src/gameobjs.h
src/player.cpp
src/sector.cpp
src/sector.h

index 15ebac5..d05379f 100644 (file)
@@ -655,7 +655,8 @@ GameSession::action(double frame_ratio)
     int red = rand() % 255;  // calculate firework color
     int green = rand() % red;
     currentsector->add_particles(epicenter, 0, 360, Vector(1.4,1.4),
-                   Vector(0,0), 45, Color(red,green,0), 3, 1300);
+                   Vector(0,0), 45, Color(red,green,0), 3, 1300,
+                   LAYER_FOREGROUND1+1);
 
     SoundManager::get()->play_sound(IDToSound(SND_FIREWORKS));
     random_timer.start(rand() % 400 + 600);  // next firework
index 1555fc8..7500bb0 100644 (file)
@@ -465,8 +465,8 @@ SmokeCloud::draw(DrawingContext& context)
   img_smoke_cloud->draw(context, position, LAYER_OBJECTS+1);
 }
 
-Particles::Particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color_, int size_, int life_time)
-  : color(color_), size(size_), accel(acceleration)
+Particles::Particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color_, int size_, int life_time, int drawing_layer_)
+  : color(color_), size(size_), accel(acceleration), drawing_layer(drawing_layer_)
 {
   if(life_time == 0)
     {
@@ -537,7 +537,7 @@ Particles::draw(DrawingContext& context)
   // draw particles
   for(std::vector<Particle*>::iterator i = particles.begin(); i < particles.end(); i++)
     {
-    context.draw_filled_rect((*i)->pos, Vector(size,size), color, LAYER_OBJECTS+10);
+    context.draw_filled_rect((*i)->pos, Vector(size,size), color, drawing_layer);
     }
 }
 
index a3a354a..0831dc7 100644 (file)
@@ -182,19 +182,21 @@ class Particles : public GameObject
 public:
   Particles(const Vector& epicenter, int min_angle, int max_angle,
             const Vector& initial_velocity, const Vector& acceleration,
-            int number, Color color, int size, int life_time);
+            int number, Color color, int size, int life_time, int drawing_layer);
   ~Particles();
   
   virtual void action(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
-  Color color;
-  float size;
   Vector accel;
   Timer timer;
   bool live_forever;
 
+  Color color;
+  float size;
+  int drawing_layer;
+
   struct Particle {
     Vector pos, vel;
 //     float angle;
index 7dd4111..0ddfdb1 100644 (file)
@@ -505,7 +505,8 @@ Player::handle_horizontal_input()
           Sector::current()->add_particles(
               Vector(base.x + (dir == RIGHT ? base.width : 0), base.y+base.height),
               dir == RIGHT ? 270+20 : 90-40, dir == RIGHT ? 270+40 : 90-20,
-              Vector(2.8,-2.6), Vector(0,0.030), 3, Color(100,100,100), 3, 800);
+              Vector(2.8,-2.6), Vector(0,0.030), 3, Color(100,100,100), 3, 800,
+              LAYER_OBJECTS+1);
 
           ax *= 2.5;
         }
index 815b321..4cde141 100644 (file)
@@ -769,9 +769,9 @@ Sector::add_smoke_cloud(const Vector& pos)
 }
 
 bool
-Sector::add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time)
+Sector::add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time, int drawing_layer)
 {
-  add_object(new Particles(epicenter, min_angle, max_angle, initial_velocity, acceleration, number, color, size, life_time));
+  add_object(new Particles(epicenter, min_angle, max_angle, initial_velocity, acceleration, number, color, size, life_time, drawing_layer));
   return true;
 }
 
index 9278d6e..21a9c02 100644 (file)
@@ -114,7 +114,7 @@ public:
   void add_upgrade(const Vector& pos, Direction dir, UpgradeKind kind);
   bool add_bullet(const Vector& pos, float xm, Direction dir);
   bool add_smoke_cloud(const Vector& pos);
-  bool add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time);
+  bool add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time, int drawing_layer);
   void add_floating_text(const Vector& pos, const std::string& text);
                                                                                 
   /** Try to grab the coin at the given coordinates */