X-Git-Url: http://git.shiar.nl/netris.git/blobdiff_plain/45dc9d995860486f1758dcf79fd2d8cd8dfb210a..HEAD:/netris.h diff --git a/netris.h b/netris.h index a361c2f..31c08f1 100644 --- a/netris.h +++ b/netris.h @@ -15,24 +15,21 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id: netris.h,v 1.28 1999/05/16 06:56:29 mhw Exp $ */ -#ifndef NETRIS_H -#define NETRIS_H +#ifndef __NETRIS_H +#define __NETRIS_H #include "config.h" + #include #include #include #include -#define version_string "0.7.821" - -#define ExtFunc /* Marks functions that need prototypes */ +#define version_string "0.8" -#ifdef NOEXT //prevent re-declaration +#ifdef NOEXT //prevent re-declaration # define EXT #else # define EXT extern @@ -59,86 +56,78 @@ typedef long netint4; #define ntoh4(x) ntohl(x) /* Protocol versions */ -#define MAJOR_VERSION 1 -#define PROTOCOL_VERSION 4 -#define ROBOT_VERSION 1 +#define MAJOR_VERSION 1 +#define PROTOCOL_VERSION 6 -#define DEFAULT_PORT 9284 /* Very arbitrary */ +#define DEFAULT_PORT 9284 /* Very arbitrary */ #define CONFIG_FILE "netris.conf" -//#define DEFAULT_KEYS "hlkj mfp^lq" -//#define DEFAULT_KEYS "4685 2fp^lq" -#define DEFAULT_KEYS "dcaf b^fp^lq" +//#define DEFAULT_KEYS "hlkj mnfp^ltq" +//#define DEFAULT_KEYS "4685 02fp^l^mq" +#define DEFAULT_KEYS "dcaf xb^fp^l^mq" -#define MAX_BOARD_WIDTH 32 -#define MAX_BOARD_HEIGHT 64 -#define MAX_SCREENS 9 //8 players +#define MAX_BOARD_WIDTH 32 +#define MAX_BOARD_HEIGHT 64 +#define MAX_SCREENS 9 //8 players /* Event masks */ -#define EM_alarm 000001 -#define EM_key 000002 -#define EM_net 000004 -#define EM_robot 000010 -#define EM_connect 000020 -#define EM_any 000777 +#define EM_alarm 000001 +#define EM_key 000002 +#define EM_net 000004 +#define EM_connect 000020 +#define EM_any 000777 -typedef enum _GameType { GT_onePlayer, GT_classicTwo, GT_len } GameType; typedef enum _BlockTypeA { BT_shadow, BT_none, - BT_green, BT_cyan, BT_blue, BT_magenta, BT_red, BT_yellow, BT_white, + BT_S, BT_L, BT_I, BT_O, BT_Z, BT_J, BT_T, BT_wall, BT_len } BlockTypeA; -typedef enum _Dir { D_down, D_right, D_up, D_left } Dir; -typedef enum _Cmd { C_end, C_forw, C_back, C_left, C_right, C_plot } Cmd; typedef enum _FDType { FT_read, FT_write, FT_except, FT_len } FDType; typedef enum _MyEventType { - E_none, E_alarm, E_key, E_connect, E_net, E_lostConn, E_robot, E_lostRobot + E_none, E_alarm, E_key, E_connect, E_net, E_lostConn } MyEventType; typedef enum _NetPacketType { - NP_endConn, //client/server quits - NP_byeBye, //unused atm - NP_error, //handshake error - NP_hello, //check versions - NP_gamedata, //game options - - NP_start, //game ok to start - NP_pause, //player (un)pauses - NP_stop, //game ended - NP_newPlayer, //add new player - NP_team, //player switched teams - NP_argghhh, //player died - NP_part, //player left - - NP_newPiece, //new piece info - NP_rotright, //rotate piece clockwise - NP_rotleft, //rotate piece counterclockwise - NP_left, //move piece left - NP_right, //move piece right - NP_down, //move piece one down - NP_drop, //drop piece to bottom - NP_clear, //line cleared - NP_insertJunk, //player added junk - - NP_giveJunk //player has to add junk + NP_endConn, //client/server quits + NP_byeBye, //unused atm + NP_error, //handshake error + NP_hello, //check versions + NP_gamedata, //game options + + NP_start, //game ok to start + NP_pause, //player (un)pauses + NP_stop, //game ended + NP_newPlayer, //add new player + NP_team, //player switched teams + NP_argghhh, //player died + NP_part, //player left + + NP_msg, //chat message + + NP_newPiece, //new piece info + NP_rotright, //rotate piece clockwise + NP_rotleft, //rotate piece counterclockwise + NP_left, //move piece left + NP_right, //move piece right + NP_down, //move piece one down + NP_drop, //drop piece to bottom + NP_clear, //line cleared + NP_insertJunk, //player added junk + + NP_giveJunk //player has to add junk } NetPacketType; -typedef signed char BlockType; - +typedef struct { + short sender, uid; + NetPacketType type; + int size; + void *data; +} _netEvent; typedef struct _MyEvent { MyEventType type; union { char key; - struct { - short sender, uid; - NetPacketType type; - int size; - void *data; - } net; - struct { - int size; - char *data; - } robot; + _netEvent net; } u; } MyEvent; @@ -157,82 +146,54 @@ typedef struct _EventGenRec { int bufSize, bufGoal; } EventGenRec; -MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event); - -typedef struct _Shape { - struct _Shape *rotateTo, *rotateFrom; - int initY, initX, mirrored; - Dir initDir; - BlockType type; - Cmd *cmds; -} Shape; - -typedef struct _ShapeOption { - float weight; - Shape *shape; -} ShapeOption; - -typedef int (*ShapeDrawFunc)(int scr, int y, int x, - BlockType type, void *data); - /* NP_startConn flags */ -#define SCF_usingRobot 000001 -#define SCF_fairRobot 000002 -#define SCF_paused 000004 +#define SCF_paused 1 -typedef struct _Player { +typedef struct { int alive; char name[16]; int flags; int team; - int dropmode; int boardHeight, boardWidth, boardVisible; int curX, curY; - Shape *curShape, *nextShape; - struct _Score { + char curShape, nextShape; + struct score_t { short level; long score; - int drops, lines, adds; + int pieces, lines, adds; } score; - char host[256]; //last-1 - int spy,small; //last -} Player; -EXT Player Players[MAX_SCREENS]; + char host[256]; //last +} player_t; +EXT player_t Players[MAX_SCREENS]; EXT short me; EXT short maxPlayer; EXT int spied; //in player.flags -#define DEFAULT_INTERVAL 1000000 /* Step-down interval in microseconds */ -#define SPEEDINC 1.2 -#define SPEEDMINIMUM 40000 +#define DEFAULT_INTERVAL 1000000 /* Step-down interval in microseconds */ +#define SPEEDINC 1.2 +#define SPEEDMINIMUM 40000 -typedef struct __Game { - int maxplayers; //1 - int started; //2 - int continuous; //3 - long seed; //4 - int initspeed; //5 +typedef enum _GameType { GT_onePlayer, GT_classicTwo, GT_len } GameType; +typedef struct { + GameType type; + int gravity; //1 + int started; //2 + int continuous; //3 + long seed; //4 + float shapes[7]; + int initspeed; //5 int speed; - int standout, color, ascii; -} _Game; -EXT _Game Game; - -EXT GameType game; -EXT int robotEnable, robotVersion, fairRobot; -EXT int protocolVersion; +} game_t; +EXT game_t Game; -EXT int initConn; -EXT short port; +#define MSG_WIDTH 128 -EXT char scratch[1024]; +EXT short port; // => just in client.c, parameter to inet connect -extern ShapeOption stdOptions[]; +static const char *teamname[] = { + "", "Green", "Cyan", "Blue", "Purple", + "Red", "Grey", "White", "*Orange" +}; -#include "proto.h" +#endif //__NETRIS_H -#endif /* NETRIS_H */ - -/* - * vi: ts=4 ai - * vim: noai si - */