X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=sprite.h;h=f9070b43141a8479668e4ed3de792b01d220789a;hp=4c0cefdc107ccec500d6f145fb863beb26d381d3;hb=e06676edd300c8a85d2e6715427e7e22e55c7670;hpb=5c8f059629c2127848ce4051296d2f5897bf5c0f diff --git a/sprite.h b/sprite.h index 4c0cefd..f9070b4 100644 --- a/sprite.h +++ b/sprite.h @@ -8,9 +8,9 @@ typedef struct sprite Sprite; #define SPRITE(x) ((Sprite *) (x)) -#define BASE_SPRITE 0 -#define SHIP_SPRITE 1 -#define ROCK_SPRITE 2 +#define BASE 0 +#define SHIP 1 +#define ROCK 2 #define N_TYPES 3 struct sprite { @@ -22,19 +22,26 @@ struct sprite { int w, h; int mask_w; uint32_t *mask; + uint32_t area; }; Sprite *free_sprites[N_TYPES]; // lists of free sprites, by type. +void do_collision(Sprite *a, Sprite *b); +void collisions(void); + void init_sprites(void); +void reset_sprites(void); void add_sprite(Sprite *s); void move_sprite(Sprite *s); void move_sprites(void); -int collides(Sprite *s); +Sprite *collides(Sprite *s); int pixel_collides(float x, float y); void load_sprite(Sprite *sprite, char *filename); +void bounce(Sprite *a, Sprite *b); + // extended sprites @@ -48,6 +55,7 @@ struct ship { int w, h; int mask_w; uint32_t *mask; + uint32_t area; // SHIP extras int lives; int jets; @@ -63,6 +71,7 @@ struct rock { int w, h; int mask_w; uint32_t *mask; + uint32_t area; // ROCK extras int type; }; @@ -90,7 +99,7 @@ static inline void draw_sprite(Sprite *s) { SDL_Rect dest; - if(s->type == NONE) return; + if(s->type < 0) return; dest.x = s->x; dest.y = s->y; SDL_BlitSurface(s->image, NULL, surf_screen, &dest); }