-init_engine_dots() {
- int i;
- for(i = 0; i<MAXENGINEDOTS; i++) {
- edot[i].active = 0;
- }
-}
-
-void
-new_bang_dots(int xbang, int ybang, int dx, int dy, SDL_Surface *s)
-{
- int i, n, x, y;
- uint16_t *pixel, c;
- uint32_t colorkey;
- int row_inc;
- double theta, r;
-
- n = 24.0 * t_frame;
- pixel = s->pixels;
- row_inc = s->pitch/sizeof(uint16_t) - s->w;
- colorkey = s->format->colorkey;
-
- SDL_LockSurface(s);
-
- for(i=0; i<n; i++) {
- pixel = s->pixels;
- for(y=0; y<s->h; y++) {
- for(x = 0; x<s->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) + dx;
- bdot[bd2].dy = 45*r*sin(theta) + dy;
- bdot[bd2].x = x + xbang;
- bdot[bd2].y = y + ybang;
- bdot[bd2].c = (i < n-3) ? 0 : c;
- bdot[bd2].life = 100;
- bdot[bd2].decay = frnd()*3 + 1;
- bdot[bd2].active = 1;
-
- bd2 = (bd2+1) % MAXBANGDOTS;
- }
- pixel += row_inc;
- }
- }
- }
-
- SDL_UnlockSurface(s);