diff options
Diffstat (limited to 'include/field.h')
| -rw-r--r-- | include/field.h | 58 | 
1 files changed, 58 insertions, 0 deletions
| diff --git a/include/field.h b/include/field.h new file mode 100644 index 0000000..410e609 --- /dev/null +++ b/include/field.h @@ -0,0 +1,58 @@ +#define FLD_SIZE_Y   22 +#define FLD_SIZE_X   10 +#define FLD_BOUND_Y FLD_SIZE_Y + 3 +#define FLD_BOUND_X FLD_SIZE_X +/* + *  Types + * + * */ + +struct cell { +    char a; // active/empty state of cell +    sfColor fColor; // fill color +}; + + +/* + * shape coords + * y + * ^. . . . + * |. . . . + * |. . . . + * |. . . . + * 0------->x + * + */ + +struct shape { +    int x; // x coord of shape's left side +    int y; // y coord of shape's bottom +    int t; // shape type +    sfColor fColor; // shape color +    char c[4][4]; // array of logic shape cells +    sfRectangleShape *p[4][4]; // array of physical shape cells +    int cOutThick; // shape rectangles outline thickness +    sfVector2f cSize; // shape rectangles size variable x/y +}; + +struct field { +    sfVector2i pos; +    sfColor fColor; // shape color +    struct cell c[FLD_BOUND_Y][FLD_SIZE_X]; // array of logic shape cells +    sfRectangleShape *p[FLD_BOUND_Y][FLD_SIZE_X]; // array of physical shape cells +    int cOutThick; // Field rectangles outline thickness +    sfVector2f cSize; // shape rectangles size variable x/y +    sfVector2i size; +    sfVector2i bound; +}; + +void init_field(struct field *fld); +void colorize_field(struct field *fld); +void colorize_field_random(struct field *fld); +void init_next_shape_field(struct shape *next); +void putShape(struct field *fld, struct shape *active); +int out_of_field(struct field *fld, struct shape *active); +void load_shape(struct shape *shape); +void rotate_shape(struct field *fld, struct shape *shape); +int collide(struct field *fld, struct shape *active); +void resetActiveShape(struct field *fld, struct shape *active); | 
