JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
refactoring towards sprites, updated todo
[vor.git] / shape.h
diff --git a/shape.h b/shape.h
index 9f7371d..c2d0a8e 100644 (file)
--- a/shape.h
+++ b/shape.h
@@ -2,7 +2,10 @@
 #define VOR_SHAPE_H
 
 #include <SDL/SDL.h>
-#include <stdint.h>
+#include <inttypes.h>
+
+
+// Shape stuff
 
 struct shape {
        int w, h;
@@ -15,4 +18,57 @@ 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