/* SPDX-License-Identifier: GPL-3.0-or-later */ /* Copyright (C) 2021 KikooDX */ #include "particles.h" #include extern struct Particle particles[MAX_PARTICLES]; void particle_create(img_t *texture, int x, int y, int frame_width, int frame_duration, int looping, int flip_h) { /* find unused slot */ int i = MAX_PARTICLES; while (i-- > 0) if (!particles[i].life) break; particles[i] = particle_init(texture, x, y, frame_width, frame_duration, looping, flip_h); } struct Particle particle_init(img_t *texture, int x, int y, int frame_width, int frame_duration, int looping, int flip_h) { struct Particle particle; 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; particle.life_ini = frame_duration * texture->width / frame_width; particle.life = particle.life_ini; particle.looping = looping; particle.flip_h = flip_h; return particle; }