// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
#include "particlesystem.h"
#include <iostream>
#include <math.h>
#include "globals.h"
+#include "world.h"
+#include "level.h"
#include "scene.h"
ParticleSystem::ParticleSystem()
if(x > screen->w) x -= virtual_width;
if(y > screen->h) y -= virtual_height;
- texture_draw(particle->texture, x, y);
+ particle->texture->draw(x, y);
}
}
SnowParticleSystem::SnowParticleSystem()
{
- texture_load(&snowimages[0], datadir+"/images/shared/snow0.png", USE_ALPHA);
- texture_load(&snowimages[1], datadir+"/images/shared/snow1.png", USE_ALPHA);
- texture_load(&snowimages[2], datadir+"/images/shared/snow2.png", USE_ALPHA);
+ snowimages[0] = new Surface(datadir+"/images/shared/snow0.png", USE_ALPHA);
+ snowimages[1] = new Surface(datadir+"/images/shared/snow1.png", USE_ALPHA);
+ snowimages[2] = new Surface(datadir+"/images/shared/snow2.png", USE_ALPHA);
virtual_width = screen->w * 2;
particle->y = rand() % screen->h;
particle->layer = i % 2;
int snowsize = rand() % 3;
- particle->texture = &snowimages[snowsize];
+ particle->texture = snowimages[snowsize];
do {
particle->speed = snowsize/60.0 + (float(rand()%10)/300.0);
} while(particle->speed < 0.01);
- particle->speed *= gravity;
+ particle->speed *= World::current()->get_level()->gravity;
particles.push_back(particle);
}
SnowParticleSystem::~SnowParticleSystem()
{
- for(int i=0;i<3;++i)
- texture_free(&snowimages[i]);
+ for(int i=0;i<3;++i)
+ delete snowimages[i];
}
void SnowParticleSystem::simulate(float elapsed_time)
CloudParticleSystem::CloudParticleSystem()
{
- texture_load(&cloudimage, datadir + "/images/shared/cloud.png", USE_ALPHA);
+ cloudimage = new Surface(datadir + "/images/shared/cloud.png", USE_ALPHA);
virtual_width = 2000.0;
particle->x = rand() % int(virtual_width);
particle->y = rand() % int(virtual_height);
particle->layer = 0;
- particle->texture = &cloudimage;
+ particle->texture = cloudimage;
particle->speed = -float(250 + rand() % 200) / 1000.0;
particles.push_back(particle);
CloudParticleSystem::~CloudParticleSystem()
{
- texture_free(&cloudimage);
+ delete cloudimage;
}
void CloudParticleSystem::simulate(float elapsed_time)