X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=sprite.h;h=953d3039f8b4597bdb23878e5028a9822f99bc61;hp=7df8631ac846214f232a898cfce06bd0bcbe34ff;hb=22c206a9ad669ebf46c38ce78079a6be4238e0d9;hpb=3f9238432d3b902a7744ad5a61f61995d67267a5 diff --git a/sprite.h b/sprite.h index 7df8631..953d303 100644 --- a/sprite.h +++ b/sprite.h @@ -1,5 +1,5 @@ -#ifndef VOR_SHAPE_H -#define VOR_SHAPE_H +#ifndef VOR_SPRITE_H +#define VOR_SPRITE_H #include #include @@ -11,9 +11,10 @@ typedef struct sprite Sprite; #define BASE_SPRITE 0 #define SHIP_SPRITE 1 #define ROCK_SPRITE 2 +#define N_TYPES 3 struct sprite { - uint8_t type; + int8_t type; Sprite *next; float x, y; float dx, dy; @@ -23,17 +24,25 @@ struct sprite { uint32_t *mask; }; -void get_shape(Sprite *s); -int collide(Sprite *r, Sprite *s); -int pixel_collide(Sprite *s, int x, int y); +Sprite *free_sprites[N_TYPES]; // lists of free sprites, by type. +void init_sprites(void); +void add_sprite(Sprite *s); +void move_sprite(Sprite *s); +void move_sprites(void); + +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 struct ship { // core sprite fields - uint8_t sprite_type; + int8_t sprite_type; struct ship *next; float x, y; float dx, dy; @@ -48,7 +57,7 @@ struct ship { struct rock { // core sprite fields - uint8_t sprite_type; + int8_t sprite_type; struct rock *next; float x, y; float dx, dy; @@ -60,7 +69,32 @@ struct rock { int type; }; -SDL_Surface *load_image(char *filename); -void load_sprite(Sprite *sprite, char *filename); -#endif // VOR_SHAPE_H + +static inline void +insert_sprite(Sprite **head, Sprite *s) +{ + s->next = *head; + *head = s; +} + + +static inline Sprite * +remove_sprite(Sprite **head) +{ + Sprite *s = *head; + *head = s->next; + return s; +} + + +static inline void +draw_sprite(Sprite *s) +{ + SDL_Rect dest; + if(s->type == NONE) return; + dest.x = s->x; dest.y = s->y; + SDL_BlitSurface(s->image, NULL, surf_screen, &dest); +} + +#endif // VOR_SPRITE_H