2021-04-08 18:04:24 +02:00
|
|
|
/* SPDX-License-Identifier: GPL-3.0-or-later */
|
|
|
|
/* Copyright (C) 2021 KikooDX */
|
|
|
|
|
|
|
|
#include "particles.h"
|
|
|
|
#include <libimg.h>
|
|
|
|
|
|
|
|
extern struct Particle particles[MAX_PARTICLES];
|
|
|
|
|
2021-04-09 00:31:24 +02:00
|
|
|
void particle_create(img_t *texture, int x, int y, int frame_width,
|
|
|
|
int frame_duration, int looping)
|
|
|
|
{
|
2021-04-08 18:04:24 +02:00
|
|
|
/* find unused slot */
|
|
|
|
int i = MAX_PARTICLES;
|
2021-04-09 00:31:24 +02:00
|
|
|
while (i-- > 0)
|
2021-04-08 18:04:24 +02:00
|
|
|
if (!particles[i].life)
|
|
|
|
break;
|
|
|
|
struct Particle *particle = &particles[i];
|
|
|
|
|
|
|
|
particle->texture = texture;
|
|
|
|
particle->x = x;
|
|
|
|
particle->y = y;
|
|
|
|
particle->frame_width = frame_width;
|
|
|
|
particle->frame_height = texture->height;
|
|
|
|
particle->frame_duration = frame_duration;
|
|
|
|
particle->frame = 0;
|
2021-04-09 00:31:24 +02:00
|
|
|
particle->life_ini =
|
|
|
|
frame_duration * texture->width / frame_width;
|
|
|
|
particle->life = particle->life_ini;
|
|
|
|
particle->looping = looping;
|
2021-04-08 18:04:24 +02:00
|
|
|
}
|