X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=shape.h;h=c2d0a8e1757859c3ff1ab53a38766686f448fe18;hp=a76951dbecc0c9152778099102896b3644a5682d;hb=c633a2e26924f5210aa8094593f5f003cee70a48;hpb=2bea0659b8edff14f1554d2540780f54ccdc21c9 diff --git a/shape.h b/shape.h index a76951d..c2d0a8e 100644 --- a/shape.h +++ b/shape.h @@ -1,11 +1,74 @@ +#ifndef VOR_SHAPE_H +#define VOR_SHAPE_H + #include -#include +#include + + +// Shape stuff struct shape { int w, h; - int mw; + int mw; // mask width (number of uint32's) uint32_t *mask; + uint32_t area; }; void get_shape(SDL_Surface *img, struct shape *s); int collide(int xdiff, int ydiff, struct shape *r, struct shape *s); +int pixel_collide(unsigned int xoff, unsigned int yoff, struct shape *r); + + + +// Sprite stuff + +typedef union sprite Sprite; + +#define SPRITE(x) ((Sprite *) (x)) + +struct base_sprite { + uint8_t type; + Sprite *next; + float x, y; + float dx, dy; + SDL_Surface *image; + struct shape *shape; +}; + +struct rock { + // core sprite fields + uint8_t sprite_type; + Sprite *next; + float x, y; + float dx, dy; + SDL_Surface *image; + struct shape *shape; + // ROCK extras + int type; +}; + +struct ship { + // core sprite fields + uint8_t sprite_type; + Sprite *next; + float x, y; + float dx, dy; + SDL_Surface *image; + struct shape *shape; + // SHIP extras + int lives; + int jets; +}; + +union sprite { + uint8_t type; + struct base_sprite sprite; + struct rock rock; + struct ship ship; +}; + +#define BASE_SPRITE 0 +#define SHIP_SPRITE 1 +#define ROCK_SPRITE 2 + +#endif // VOR_SHAPE_H