-init_engine_dots() {
- int i;
- for(i = 0; i<MAXENGINEDOTS; i++) {
- edot[i].active = 0;
- }
-}
-
-void
-new_bang_dots(struct sprite *s)
-{
- int i, n, x, y;
- uint16_t *pixel, c;
- uint32_t colorkey;
- int row_inc;
- double theta, r;
- SDL_Surface *img = s->image;
-
- n = 20;
- pixel = img->pixels;
- row_inc = img->pitch/sizeof(uint16_t) - img->w;
- colorkey = img->format->colorkey;
-
- if(SDL_MUSTLOCK(img)) { SDL_LockSurface(img); }
-
- for(i=0; i<n; i++) {
- pixel = img->pixels;
- for(y=0; y<img->h; y++) {
- for(x = 0; x<img->w; x++) {
- c = *pixel++;
- if(c && c != colorkey) {
- theta = frnd()*M_PI*2;
- r = frnd(); r = 1 - r*r;
-
- bdot[bd2].dx = 45*r*cos(theta) + s->dx;
- bdot[bd2].dy = 45*r*sin(theta) + s->dy;
- bdot[bd2].x = x + s->x;
- bdot[bd2].y = y + s->y;
- //bdot[bd2].c = (i < n-3) ? 0 : c;
- bdot[bd2].life = frnd() * 99;
- bdot[bd2].decay = frnd()*3 + 1;
- bdot[bd2].active = 1;
-
- bd2 = (bd2+1) % MAXBANGDOTS;
- }
- pixel += row_inc;
- }
- }
- }
-
- if(SDL_MUSTLOCK(img)) { SDL_UnlockSurface(img); }