#include "config.h" #include "maths.h" #include "obj.h" #include "random.h" #include "render.h" void init_effect(Effect* e, int x, int y, int vx, int vy, int c) { int i; e->c = c; for (i = 0; i < c; i++) { const int a = get_r() & 0xff; const int sa = sin_table[a]; const int ca = cos_table[a]; e->x[i] = x; e->y[i] = y; e->vx[i] = vx + ca - sa + get_rf(); e->vy[i] = vy + sa + ca + get_rf(); } e->life = 100; } int update_effect(Effect* e) { int i; for (i = 0; i < e->c; i++) { e->vy[i] += main_gravity; e->x[i] += e->vx[i]; e->y[i] += e->vy[i]; } return !(e->life--); } void ren_effect(const Effect* e, Renderer* r) { Rect re = { 0, 0, 1, 1 }; int i; for (i = 0; i < e->c; i++) { re.x = e->x[i] >> fbits; re.y = e->y[i] >> fbits; ren_rect(r, &re); } }