diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/common.h | 22 | ||||
-rw-r--r-- | include/draw.h | 17 | ||||
-rw-r--r-- | include/engine.h | 16 | ||||
-rw-r--r-- | include/field.h | 66 | ||||
-rw-r--r-- | include/idlist.h | 12 | ||||
-rw-r--r-- | include/tet_conf.h | 73 |
6 files changed, 110 insertions, 96 deletions
diff --git a/include/common.h b/include/common.h index 7a85dbc..098ea9e 100644 --- a/include/common.h +++ b/include/common.h @@ -1,13 +1,13 @@ struct game { - int isStarted; - int scoreCurrent; - int level; - int moveLatency; - int lines; - sfClock *gameTick; - sfClock *putTick; - sfClock *mTick; - sfClock *repPushDown; // Clock for repeat latency when Down arrow long push - sfClock *repKeyLeft; // Clock for repeat latency when Left arrow long push - sfClock *repKeyRight; // Clock for repeat latency when Left arrow long push + unsigned int level; + int isStarted; + int scoreCurrent; + int moveLatency; + int lines; + sfClock *gameTick; + sfClock *putTick; + sfClock *mTick; + sfClock *repPushDown; // repeat latency when hold Down arrow + sfClock *repKeyLeft; // repeat latency when hold Left arrow + sfClock *repKeyRight; // repeat latency when hold Left arrow }; diff --git a/include/draw.h b/include/draw.h index 3408142..17bf176 100644 --- a/include/draw.h +++ b/include/draw.h @@ -4,20 +4,15 @@ struct window { sfEvent event; }; -//struct field_conf { -// sfVector2i pos; -// int cOutThick; -// sfVector2f cSize; -// sfVector2i size; -//} field_conf; - void painter_init_window(); +void painter_destroy_window(); unsigned long painter_register_field(); void painter_update_field(unsigned long id, struct field *fld); - -unsigned long painter_register_shape(); -void painter_update_shape(unsigned long id, struct shape *shape); +void painter_destroy_field(unsigned long id); +void painter_destroy_fields(); void painter_draw(); -void painter_destroy_window(); + +void painter_destroy_drawables(); +void painter_destroy_all(); diff --git a/include/engine.h b/include/engine.h index 2dd7e9f..bca16ed 100644 --- a/include/engine.h +++ b/include/engine.h @@ -1,15 +1,13 @@ -#define RIGHT 1 -#define DOWN 2 -#define UP 4 -#define LEFT 8 -#define RIGHTHOLD 16 -#define LEFTHOLD 128 +#define RIGHT (1 << 0) +#define DOWN (1 << 1) +#define UP (1 << 2) +#define LEFT (1 << 3) +#define RIGHTHOLD (1 << 4) +#define LEFTHOLD (1 << 5) void tKeyCtrl(); void tTick(); void checkLevelUp(struct game *game); -int getMoveLatencyOfLevel(int level); +int getMoveLatencyOfLevel(unsigned int level); void valueAfterTextDisplay(int value, List *texts, char *type); -void drawFld(sfRenderWindow *window, struct field *fld); void gameover(struct game *game); -void drawNextShape(sfRenderWindow *window); diff --git a/include/field.h b/include/field.h index f037d41..93f80f0 100644 --- a/include/field.h +++ b/include/field.h @@ -1,17 +1,18 @@ -#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 -#define FLD_POS (sfVector2i){.x = 10, .y = 10+550-24} -#define FLD_SIZE (sfVector2f){.x = FLD_SIZE_X, .y = FLD_SIZE_Y} -#define CELL_SIZE (sfVector2f){.x = 23, .y = 23} +#define FLD_ATTR_INVISIBLE (1 << 0) +#define FLD_ATTR_TRANSPARENT (1 << 1) struct cell { char a; // active/empty state of cell - sfColor fColor; // fill color unsigned int color; }; +struct vector2i { + int x, y; +}; + +struct vector2ui { + unsigned int x, y; +}; /* * field + shape coord system @@ -34,36 +35,31 @@ 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 + unsigned int color; // 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; - struct cell c[FLD_BOUND_Y][FLD_SIZE_X]; // array of logic shape cells - sfRectangleShape *p[FLD_SIZE_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; - unsigned int id; + unsigned long id; + unsigned int attr; + struct vector2i pos; + struct vector2ui size; + struct vector2ui bound; + struct cell **c; // array of logic shape cells + unsigned int shape_cnt; + struct shape *shape; }; -void init_field(struct field *fld); -void colorize_field(struct field *fld); -void colorize_field_random(struct field *fld); -void colorize_active_shape(struct field *fld, struct shape *shape); -void init_next_shape(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); -void gen_shape(struct shape *shape); -int rm_lines(struct field *fld); -void free_field(struct field *fld); -void free_shape(struct shape *shape); +void field_init(struct field *fld); +void field_deinit(struct field *fld); +void field_fill_random(struct field *fld); +void field_clear(struct field *fld); +void field_rotate_shape(struct field *fld, unsigned int index); +void field_put_shape(struct field *fld, struct shape *shape); +void field_reset_walking_shape(struct field *fld, unsigned int index); +int field_rm_lines(struct field *fld); +int field_shape_collision(struct field *fld, struct shape *shape); +int field_shape_out_of_bounds(struct field *fld, struct shape *shape); + +void shape_load(struct shape *shape); +void shape_gen_random(struct shape *shape); diff --git a/include/idlist.h b/include/idlist.h new file mode 100644 index 0000000..d1badc7 --- /dev/null +++ b/include/idlist.h @@ -0,0 +1,12 @@ +struct idlist { + unsigned long id; + void *obj; + struct idlist *next; + struct idlist *prev; +}; + +struct idlist *list_new(); +struct idlist *list_append(struct idlist *list); +struct idlist *list_get(const struct idlist *list, unsigned long id); +void list_rm_node(struct idlist *node); +void list_foreach(struct idlist *list, void (*job)(void *)); diff --git a/include/tet_conf.h b/include/tet_conf.h index 134e8a9..14a8c2a 100644 --- a/include/tet_conf.h +++ b/include/tet_conf.h @@ -1,42 +1,55 @@ -#define windowName_conf "Tetris CSFML" // Window name -#define UIBGCOLOR sfColor_fromRGB(26, 26, 26) // Field background -#define UIFGINACTIVECOLOR sfColor_fromRGB(55, 59, 65) // Field inactive cell outline -#define OUT_THICK 1 -#define UIFGACTIVECOLOR sfColor_fromRGB(40, 42, 46) // Field active cell outline -#define LCOLOR sfColor_fromRGB(222, 147, 95) // Orange color of L shape -#define RLCOLOR sfColor_fromRGB(95, 129, 157) -#define SCOLOR sfColor_fromRGB(140, 148, 64) -#define ZCOLOR sfColor_fromRGB(165, 66, 66) -#define BCOLOR sfColor_fromRGB(197, 200, 198) -#define ICOLOR sfColor_fromRGB(94, 141, 135) -#define TCOLOR sfColor_fromRGB(133, 103, 143) +#define windowName_conf "Tetris CSFML" // Window name +#define OUT_THICK 1 +#define UITRANSPARENT {0, 0, 0, 0 } // Field background +#define UIBGCOLOR {26, 26, 26, 255} // Field background +#define UIFGINACTIVECOLOR {55, 59, 65, 255} // Field inactive cell outline +#define UIFGACTIVECOLOR {40, 42, 46, 255} // Field active cell outline +#define LCOLOR {222, 147, 95, 255} // Orange color of L shape +#define RLCOLOR {95, 129, 157, 255} +#define ZCOLOR {165, 66, 66, 255} +#define SCOLOR {140, 148, 64, 255} +#define BCOLOR {197, 200, 198, 255} +#define ICOLOR {94, 141, 135, 255} +#define TCOLOR {133, 103, 143, 255} + #define moveRepeatLatency1 150000 // microseconds, only for left-right arrows, - // first repeat move when long push + // first repeat move when long push #define moveRepeatLatency2 30000 // microseconds, for Left, Right and Down - // arrows, the rest repeat move when long push + // arrows, the rest repeat move when long push #define basicLatency 500000 -#define L00LATENCY 800000 -#define L01LATENCY 716667 -#define L02LATENCY 633334 -#define L03LATENCY 550000 -#define L04LATENCY 466667 -#define L05LATENCY 383334 -#define L06LATENCY 300000 -#define L07LATENCY 216667 -#define L08LATENCY 133334 -#define L09LATENCY 100000 -#define L10LATENCY 83334 -#define L13LATENCY 66667 -#define L16LATENCY 50000 -#define L19LATENCY 33334 -#define L29LATENCY 16667 -#define PUT_LATENCY 300000 +#define L00LATENCY 800000 +#define L01LATENCY 716667 +#define L02LATENCY 633334 +#define L03LATENCY 550000 +#define L04LATENCY 466667 +#define L05LATENCY 383334 +#define L06LATENCY 300000 +#define L07LATENCY 216667 +#define L08LATENCY 133334 +#define L09LATENCY 100000 +#define L10LATENCY 83334 +#define L13LATENCY 66667 +#define L16LATENCY 50000 +#define L19LATENCY 33334 +#define L29LATENCY 16667 +#define PUT_LATENCY 300000 #define RM_1LINES_SCORE 40 #define RM_2LINES_SCORE 100 #define RM_3LINES_SCORE 300 #define RM_4LINES_SCORE 1200 #define LEVELUP_LINES 10 +#define FLD_SIZE_Y 22 +#define FLD_SIZE_X 10 +#define FLD_BOUND_Y FLD_SIZE_Y + 4 +#define FLD_BOUND_X FLD_SIZE_X +#define FLD_POS (struct vector2i){.x = 10, .y = 10+550-24} +#define CELL_SIZE (sfVector2f){.x = 23, .y = 23} + +#define NXT_SIZE_Y 8 +#define NXT_SIZE_X 4 +#define NXT_POS (struct vector2i){.x = 250 + 10 + 30, .y = 300} +#define NXT_SIZE (struct vector2ui){.x = NXT_SIZE_X, .y = NXT_SIZE_Y} /* * 22.......... |