jumprun_tile als packed struct für mehr Speicher.
[hackover2013-badge-firmware.git] / badge / jumpnrun / tiles.h
index 8010e11..8e47800 100644 (file)
@@ -7,12 +7,12 @@
 
 #include <stdint.h>
 
-typedef enum {
-  JUMPNRUN_TILE_TOP    = 1,
-  JUMPNRUN_TILE_BOTTOM = 2,
-  JUMPNRUN_TILE_LEFT   = 4,
-  JUMPNRUN_TILE_RIGHT  = 8
-} jumpnrun_tile_sides;
+enum {
+  JUMPNRUN_COLLISION_TOP    = 1,
+  JUMPNRUN_COLLISION_BOTTOM = 2,
+  JUMPNRUN_COLLISION_LEFT   = 4,
+  JUMPNRUN_COLLISION_RIGHT  = 8
+};
 
 enum {
   JUMPNRUN_TILE_PIXEL_WIDTH  = 5,
@@ -20,9 +20,9 @@ enum {
 };
 
 typedef struct jumpnrun_tile_position {
-  uint16_t x;
-  uint8_t  y;
-} jumpnrun_tile_position;
+  int16_t x;
+  int8_t  y;
+} __attribute__((packed)) jumpnrun_tile_position;
 
 typedef struct jumpnrun_tile_type {
   uint8_t      lethal_sides;
@@ -32,17 +32,17 @@ typedef struct jumpnrun_tile_type {
 typedef struct jumpnrun_tile {
   jumpnrun_tile_position pos;
   uint8_t                type;
-} jumpnrun_tile;
+} __attribute__((packed)) jumpnrun_tile;
 
 typedef struct jumpnrun_tile_range {
-  size_t first;
-  size_t last; // actually one past last.
+  uint16_t first;
+  uint16_t last; // actually one past last.
 } jumpnrun_tile_range;
 
-static inline fixed_point tile_left  (jumpnrun_tile const *tile) { return FIXED_POINT(tile->pos.x * JUMPNRUN_TILE_PIXEL_WIDTH , 0); }
-static inline fixed_point tile_top   (jumpnrun_tile const *tile) { return FIXED_POINT(tile->pos.y * JUMPNRUN_TILE_PIXEL_HEIGHT, 0); }
-static inline fixed_point tile_right (jumpnrun_tile const *tile) { return fixed_point_add(tile_left(tile), FIXED_POINT(JUMPNRUN_TILE_PIXEL_WIDTH , 0)); }
-static inline fixed_point tile_bottom(jumpnrun_tile const *tile) { return fixed_point_add(tile_top (tile), FIXED_POINT(JUMPNRUN_TILE_PIXEL_HEIGHT, 0)); }
+static inline fixed_point tile_left  (jumpnrun_tile const *tile) { return FIXED_INT(tile->pos.x * JUMPNRUN_TILE_PIXEL_WIDTH ); }
+static inline fixed_point tile_top   (jumpnrun_tile const *tile) { return FIXED_INT(tile->pos.y * JUMPNRUN_TILE_PIXEL_HEIGHT); }
+static inline fixed_point tile_right (jumpnrun_tile const *tile) { return fixed_point_add(tile_left(tile), FIXED_INT(JUMPNRUN_TILE_PIXEL_WIDTH )); }
+static inline fixed_point tile_bottom(jumpnrun_tile const *tile) { return fixed_point_add(tile_top (tile), FIXED_INT(JUMPNRUN_TILE_PIXEL_HEIGHT)); }
 
 /************************************/
 
@@ -53,6 +53,10 @@ enum {
   JUMPNRUN_TILE_TYPE_TUBE_TOP_RIGHT,
   JUMPNRUN_TILE_TYPE_TUBE_LEFT,
   JUMPNRUN_TILE_TYPE_TUBE_RIGHT,
+  JUMPNRUN_TILE_TYPE_SPIKE_UP,
+  JUMPNRUN_TILE_TYPE_SPIKE_RIGHT,
+  JUMPNRUN_TILE_TYPE_SPIKE_DOWN,
+  JUMPNRUN_TILE_TYPE_SPIKE_LEFT,
 
   JUMPNRUN_TILE_TYPE_COUNT
 };
This page took 0.023962 seconds and 4 git commands to generate.