tetrinet/tetris.h

76 lines
2.1 KiB
C

/* Tetrinet for Linux, by Andrew Church <achurch@achurch.org>
* This program is public domain.
*
* Tetris constants and routine declarations.
*/
#pragma once
#ifndef TETRIS_H
#define TETRIS_H
/*************************************************************************/
#define PIECE_BAR 0 /* Straight bar */
#define PIECE_SQUARE 1 /* Square block */
#define PIECE_L_REVERSE 2 /* Reversed L block */
#define PIECE_L 3 /* L block */
#define PIECE_Z 4 /* Z block */
#define PIECE_S 5 /* S block */
#define PIECE_T 6 /* T block */
#define SPECIAL_A 0 /* Add line */
#define SPECIAL_C 1 /* Clear line */
#define SPECIAL_N 2 /* Nuke field */
#define SPECIAL_R 3 /* Clear random blocks */
#define SPECIAL_S 4 /* Switch fields */
#define SPECIAL_B 5 /* Clear special blocks */
#define SPECIAL_G 6 /* Block gravity */
#define SPECIAL_Q 7 /* Blockquake */
#define SPECIAL_O 8 /* Block bomb */
/*************************************************************************/
#define MAX_SPECIALS 64
extern int piecefreq[7], specialfreq[9];
extern int old_mode;
extern int initial_level, lines_per_level, level_inc, level_average;
extern int special_lines, special_count, special_capacity;
extern Field fields[6];
extern int levels[6];
extern int lines;
extern char specials[MAX_SPECIALS];
extern int next_piece;
extern int current_x, current_y;
typedef struct {
int hot_x, hot_y; /* Hotspot coordinates */
int top, left; /* Top-left coordinates relative to hotspot */
int bottom, right; /* Bottom-right coordinates relative to hotspot */
char shape[4][4]; /* Shape data for the piece */
} PieceData;
extern PieceData piecedata[7][4];
extern int current_piece, current_rotation;
extern void init_shapes(void);
extern int get_shape(int piece, int rotation, char buf[4][4]);
extern void new_game(void);
extern void new_piece(void);
extern void step_down(void);
extern void do_special(const char *type, int from, int to);
extern int tetris_timeout(void);
extern void tetris_timeout_action(void);
extern void tetris_input(int c);
/*************************************************************************/
#endif /* TETRIS_H */