test/testsprite2.c
changeset 1916 c773b0c0ac89
parent 1915 a228436a2404
child 1917 3f54b3ec5a07
equal deleted inserted replaced
1915:a228436a2404 1916:c773b0c0ac89
     6 
     6 
     7 #include "common.h"
     7 #include "common.h"
     8 
     8 
     9 #define NUM_SPRITES	100
     9 #define NUM_SPRITES	100
    10 #define MAX_SPEED 	1
    10 #define MAX_SPEED 	1
    11 #define BACKGROUND  0x00FFFFFF
    11 #define BACKGROUND  0x00A0A0A0
    12 
    12 
    13 static CommonState *state;
    13 static CommonState *state;
    14 static int num_sprites;
    14 static int num_sprites;
    15 static SDL_TextureID *sprites;
    15 static SDL_TextureID *sprites;
    16 static SDL_Rect *positions;
    16 static SDL_Rect *positions;
    17 static SDL_Rect *velocities;
    17 static SDL_Rect *velocities;
    18 static int sprite_w, sprite_h;
    18 static int sprite_w, sprite_h;
       
    19 static SDL_TextureBlendMode blendMode = SDL_TextureBlendMode_Mask;
    19 
    20 
    20 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
    21 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
    21 static void
    22 static void
    22 quit(int rc)
    23 quit(int rc)
    23 {
    24 {
   105             velocity->y = -velocity->y;
   106             velocity->y = -velocity->y;
   106             position->y += velocity->y;
   107             position->y += velocity->y;
   107         }
   108         }
   108 
   109 
   109         /* Blit the sprite onto the screen */
   110         /* Blit the sprite onto the screen */
   110         SDL_RenderCopy(sprite, NULL, position, SDL_TextureBlendMode_Mask,
   111         SDL_RenderCopy(sprite, NULL, position, blendMode,
   111                        SDL_TextureScaleMode_None);
   112                        SDL_TextureScaleMode_None);
   112     }
   113     }
   113 
   114 
   114     /* Update the screen! */
   115     /* Update the screen! */
   115     SDL_RenderPresent();
   116     SDL_RenderPresent();
   133     for (i = 1; i < argc;) {
   134     for (i = 1; i < argc;) {
   134         int consumed;
   135         int consumed;
   135 
   136 
   136         consumed = CommonArg(state, i);
   137         consumed = CommonArg(state, i);
   137         if (consumed == 0) {
   138         if (consumed == 0) {
   138             num_sprites = SDL_atoi(argv[i]);
   139             consumed = -1;
   139             consumed = 1;
   140             if (SDL_strcasecmp(argv[i], "--blend") == 0) {
       
   141                 if (argv[i + 1]) {
       
   142                     if (SDL_strcasecmp(argv[i + 1], "none") == 0) {
       
   143                         blendMode = SDL_TextureBlendMode_None;
       
   144                         consumed = 2;
       
   145                     } else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) {
       
   146                         blendMode = SDL_TextureBlendMode_Blend;
       
   147                         consumed = 2;
       
   148                     } else if (SDL_strcasecmp(argv[i + 1], "add") == 0) {
       
   149                         blendMode = SDL_TextureBlendMode_Add;
       
   150                         consumed = 2;
       
   151                     } else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) {
       
   152                         blendMode = SDL_TextureBlendMode_Mod;
       
   153                         consumed = 2;
       
   154                     }
       
   155                 }
       
   156             } else if (SDL_isdigit(*argv[i])) {
       
   157                 num_sprites = SDL_atoi(argv[i]);
       
   158                 consumed = 1;
       
   159             }
   140         }
   160         }
   141         if (consumed < 0) {
   161         if (consumed < 0) {
   142             fprintf(stderr, "Usage: %s %s", argv[0], CommonUsage(state));
   162             fprintf(stderr, "Usage: %s %s [--blend none|blend|add|mod]",
       
   163                     argv[0], CommonUsage(state));
   143             quit(1);
   164             quit(1);
   144         }
   165         }
   145         i += consumed;
   166         i += consumed;
   146     }
   167     }
   147     if (!CommonInit(state)) {
   168     if (!CommonInit(state)) {