momento/src/particles/create.c

42 lines
1.1 KiB
C

/* SPDX-License-Identifier: GPL-3.0-or-later */
/* Copyright (C) 2021 KikooDX */
#include "particles.h"
#include <gint/display.h>
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;
}