Included supertux.h stuff into it.
[supertux.git] / src / particlesystem.cpp
index db1ca26..2cd42da 100644 (file)
@@ -21,6 +21,8 @@
 #include <iostream>
 #include <math.h>
 #include "globals.h"
+#include "world.h"
+#include "level.h"
 #include "scene.h"
 
 ParticleSystem::ParticleSystem()
@@ -82,7 +84,10 @@ SnowParticleSystem::SnowParticleSystem()
         particle->layer = i % 2;
         int snowsize = rand() % 3;
         particle->texture = &snowimages[snowsize];
-        particle->speed = 0.01 + snowsize/50.0 + (rand()%(int)gravity/15.0);
+        do {
+            particle->speed = snowsize/60.0 + (float(rand()%10)/300.0);
+        } while(particle->speed < 0.01);
+        particle->speed *= World::current()->get_level()->gravity;
 
         particles.push_back(particle);
     }
@@ -101,7 +106,7 @@ void SnowParticleSystem::simulate(float elapsed_time)
         SnowParticle* particle = (SnowParticle*) *i;
         particle->y += particle->speed * elapsed_time;
         if(particle->y > screen->h) {
-            particle->y = 0;
+            particle->y = fmodf(particle->y , virtual_height);
             particle->x = rand() % int(virtual_width);
         }
     }
@@ -111,13 +116,13 @@ CloudParticleSystem::CloudParticleSystem()
 {
     texture_load(&cloudimage, datadir + "/images/shared/cloud.png", USE_ALPHA);
 
-    virtual_width = 5000.0;
+    virtual_width = 2000.0;
 
     // create some random clouds
     for(size_t i=0; i<15; ++i) {
         CloudParticle* particle = new CloudParticle;
         particle->x = rand() % int(virtual_width);
-        particle->y = rand() % int((float) screen->h * 0.3333);
+        particle->y = rand() % int(virtual_height);
         particle->layer = 0;
         particle->texture = &cloudimage;
         particle->speed = -float(250 + rand() % 200) / 1000.0;