JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
started fiddling with explosion graphics: now it's not dependant on framerate
authorJason Woofenden <jason@jasonwoof.com>
Tue, 11 Jul 2006 18:22:34 +0000 (18:22 +0000)
committerJason Woofenden <jason@jasonwoof.com>
Tue, 11 Jul 2006 18:22:34 +0000 (18:22 +0000)
only lock surfaces if SDL_MUSTLOCK() says we must
comented out alpha fading thing on 'game over' and other messages

SFont.c
main.c
sprite.c

diff --git a/SFont.c b/SFont.c
index a13e75d..9665d98 100644 (file)
--- a/SFont.c
+++ b/SFont.c
@@ -79,7 +79,7 @@ SFont_InitFont(SDL_Surface* Surface)
     Font = (SFont_Font *) malloc(sizeof(SFont_Font));
     Font->Surface = Surface;
 
-    SDL_LockSurface(Surface);
+    if(SDL_MUSTLOCK(Surface)) { SDL_LockSurface(Surface); }
 
     pink = SDL_MapRGB(Surface->format, 255, 0, 255);
     while (x < Surface->w) {
@@ -94,7 +94,7 @@ SFont_InitFont(SDL_Surface* Surface)
     Font->MaxPos = x-1;
     
     pixel = GetPixel(Surface, 0, Surface->h-1);
-    SDL_UnlockSurface(Surface);
+    if(SDL_MUSTLOCK(Surface)) { SDL_UnlockSurface(Surface); }
     SDL_SetColorKey(Surface, SDL_SRCCOLORKEY, pixel);
 
     return Font;
diff --git a/main.c b/main.c
index 5b3ce62..e2ae44e 100644 (file)
--- a/main.c
+++ b/main.c
@@ -145,12 +145,12 @@ new_bang_dots(int xbang, int ybang, int dx, int dy, SDL_Surface *s)
        int row_inc;
        double theta, r;
 
-       n = 24.0 * t_frame;
+       n = 20;
        pixel = s->pixels;
        row_inc = s->pitch/sizeof(uint16_t) - s->w;
        colorkey = s->format->colorkey;
 
-       SDL_LockSurface(s);
+       if(SDL_MUSTLOCK(s)) { SDL_LockSurface(s); }
 
        for(i=0; i<n; i++) {
                pixel = s->pixels;
@@ -165,8 +165,8 @@ new_bang_dots(int xbang, int ybang, int dx, int dy, SDL_Surface *s)
                                        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].c = (i < n-3) ? 0 : c;
+                                       bdot[bd2].life = frnd() * 99;
                                        bdot[bd2].decay = frnd()*3 + 1;
                                        bdot[bd2].active = 1;
 
@@ -177,7 +177,7 @@ new_bang_dots(int xbang, int ybang, int dx, int dy, SDL_Surface *s)
                }
        }
 
-       SDL_UnlockSurface(s);
+       if(SDL_MUSTLOCK(s)) { SDL_UnlockSurface(s); }
 }
 
 void
@@ -190,7 +190,7 @@ move_bang_dots(float ticks)
                if(!bdot[i].active) continue;
 
                // decrement life and maybe kill
-               bdot[i].life -= bdot[i].decay;
+               bdot[i].life -= bdot[i].decay * ticks/2.0;
                if(bdot[i].life < 0) { bdot[i].active = 0; continue; }
                
                // move and clip
@@ -312,6 +312,7 @@ move_engine_dots(float ticks) {
                edot[i].life -= t_frame*3;
                if(edot[i].life < 0 || edot[i].x<0 || edot[i].x >= XSIZE || edot[i].y < 0 || edot[i].y >= YSIZE) {
                        edot[i].active = 0;
+                       continue;
                }
 
                // check collisions
@@ -345,11 +346,11 @@ draw_engine_dots(SDL_Surface *s) {
 
 void
 draw_dots(SDL_Surface *s) {
-       SDL_LockSurface(s);
+       if(SDL_MUSTLOCK(s)) { SDL_LockSurface(s); }
        draw_dust(s);
        draw_engine_dots(s);
        draw_bang_dots(s);
-       SDL_UnlockSurface(s);
+       if(SDL_MUSTLOCK(s)) { SDL_UnlockSurface(s); }
 }
 
 SDL_Surface *
@@ -484,12 +485,12 @@ draw_game_over(void)
 
        dest.x = (XSIZE-surf_b_game->w)/2;
        dest.y = (YSIZE-surf_b_game->h)/2-40;
-       SDL_SetAlpha(surf_b_game, SDL_SRCALPHA, (int)(a_game*(200 + 55*cos(fadetimer))));
+       //SDL_SetAlpha(surf_b_game, SDL_SRCALPHA, (int)(a_game*(200 + 55*cos(fadetimer))));
        SDL_BlitSurface(surf_b_game,NULL,surf_screen,&dest);
 
        dest.x = (XSIZE-surf_b_over->w)/2;
        dest.y = (YSIZE-surf_b_over->h)/2 + 40;
-       SDL_SetAlpha(surf_b_over, SDL_SRCALPHA, (int)(a_over*(200 + 55*sin(fadetimer))));
+       //SDL_SetAlpha(surf_b_over, SDL_SRCALPHA, (int)(a_over*(200 + 55*sin(fadetimer))));
        SDL_BlitSurface(surf_b_over,NULL,surf_screen,&dest);
 
        if(new_high_score(score)) {
@@ -518,17 +519,17 @@ draw_title_page(void)
 
        dest.x = (XSIZE-surf_b_variations->w)/2 + cos(fadetimer/6.5)*10;
        dest.y = (YSIZE/2-surf_b_variations->h)/2 + sin(fadetimer/5.0)*10;
-       SDL_SetAlpha(surf_b_variations, SDL_SRCALPHA, (int)(200 + 55*sin(fadetimer)));
+       //SDL_SetAlpha(surf_b_variations, SDL_SRCALPHA, (int)(200 + 55*sin(fadetimer)));
        SDL_BlitSurface(surf_b_variations,NULL,surf_screen,&dest);
 
        dest.x = (XSIZE-surf_b_on->w)/2 + cos((fadetimer + 1.0)/6.5)*10;
        dest.y = (YSIZE/2-surf_b_on->h)/2 + surf_b_variations->h + 20 + sin((fadetimer + 1.0)/5.0)*10;
-       SDL_SetAlpha(surf_b_on, SDL_SRCALPHA, (int)(200 + 55*sin(fadetimer-1.0)));
+       //SDL_SetAlpha(surf_b_on, SDL_SRCALPHA, (int)(200 + 55*sin(fadetimer-1.0)));
        SDL_BlitSurface(surf_b_on,NULL,surf_screen,&dest);
 
        dest.x = (XSIZE-surf_b_rockdodger->w)/2 + cos((fadetimer + 2.0)/6.5)*10;
        dest.y = (YSIZE/2-surf_b_rockdodger->h)/2 + surf_b_variations->h + surf_b_on->h + 40 + sin((fadetimer + 2.0)/5)*10;
-       SDL_SetAlpha(surf_b_rockdodger, SDL_SRCALPHA, (int)(200 + 55*sin(fadetimer-2.0)));
+       //SDL_SetAlpha(surf_b_rockdodger, SDL_SRCALPHA, (int)(200 + 55*sin(fadetimer-2.0)));
        SDL_BlitSurface(surf_b_rockdodger,NULL,surf_screen,&dest);
 
        text = msgs[g_easy][(int)(fadetimer/35)%NSEQUENCE];
@@ -813,7 +814,7 @@ main(int argc, char **argv) {
        if(!parse_opts(argc, argv)) return 1;
 
        if(init()) {
-               printf ("ta: '%s'\n",initerror);
+               printf ("vor: SDL error: '%s'\n",initerror);
                return 1;
        }
 
index 36ca546..6a20442 100644 (file)
--- a/sprite.c
+++ b/sprite.c
@@ -48,7 +48,7 @@ get_shape(Sprite *s)
                exit(1);
        }
 
-       SDL_LockSurface(s->image);
+       if(SDL_MUSTLOCK(s->image)) { SDL_LockSurface(s->image); }
        px = s->image->pixels;
        transp = s->image->format->colorkey;
        p = s->mask;
@@ -62,7 +62,7 @@ get_shape(Sprite *s)
                }
                px = (uint16_t *) ((uint8_t *) px + s->image->pitch - 2*s->image->w);
        }
-       SDL_UnlockSurface(s->image);
+       if(SDL_MUSTLOCK(s->image)) { SDL_UnlockSurface(s->image); }
 }