X-Git-Url: http://git.shiar.nl/netris.git/blobdiff_plain/c11ae0d113cc5f60bfd1bed29b47211013f8adef..4f561019fc85c2817e3a72341397d1df32bc0868:/netris.h diff --git a/netris.h b/netris.h index e5c69ec..7bbfc3c 100644 --- a/netris.h +++ b/netris.h @@ -1,6 +1,6 @@ /* - * Netris -- A free networked version of Tetris - * Copyright (C) 1994,1995 Mark Weaver + * Netris -- A free networked version of T*tris + * Copyright (C) 1994-1996,1999 Mark H. Weaver * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -16,7 +16,7 @@ * 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.26 1995/07/11 08:53:26 mhw Exp $ + * $Id: netris.h,v 1.28 1999/05/16 06:56:29 mhw Exp $ */ #ifndef NETRIS_H @@ -28,18 +28,14 @@ #include #include +#define version_string "0.7.819" + #define ExtFunc /* Marks functions that need prototypes */ -#ifdef NOEXT +#ifdef NOEXT //prevent re-declaration # define EXT -# define IN(a) a #else # define EXT extern -# define IN(a) -#endif - -#ifndef NULL -# define NULL ((void *)0) #endif #ifdef HAS_SIGPROCMASK @@ -59,48 +55,71 @@ typedef long netint4; #define hton2(x) htons(x) #define hton4(x) htonl(x) - #define ntoh2(x) ntohs(x) #define ntoh4(x) ntohl(x) -#define DEFAULT_PORT 9284 /* Very arbitrary */ - /* Protocol versions */ #define MAJOR_VERSION 1 -#define PROTOCOL_VERSION 3 +#define PROTOCOL_VERSION 4 #define ROBOT_VERSION 1 -#define MAX_BOARD_WIDTH 32 -#define MAX_BOARD_HEIGHT 64 -#define MAX_SCREENS 2 +#define DEFAULT_PORT 9284 /* Very arbitrary */ -#define DEFAULT_INTERVAL 300000 /* Step-down interval in microseconds */ +#define CONFIG_FILE "netris.conf" -/* NP_startConn flags */ -#define SCF_usingRobot 000001 -#define SCF_fairRobot 000002 -#define SCF_setSeed 000004 +//#define DEFAULT_KEYS "hlkj mfp^lq" +//#define DEFAULT_KEYS "4685 2fp^lq" +#define DEFAULT_KEYS "dcaf b^fp^lq" + +#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 typedef enum _GameType { GT_onePlayer, GT_classicTwo, GT_len } GameType; -typedef enum _BlockTypeA { BT_none, BT_piece1, BT_wall, BT_len } BlockTypeA; +typedef enum _BlockTypeA { + BT_shadow, BT_none, + BT_green, BT_cyan, BT_blue, BT_magenta, BT_red, BT_yellow, BT_white, + 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_net, - E_lostConn, E_robot, E_lostRobot } MyEventType; -typedef enum _NetPacketType { NP_endConn, NP_giveJunk, NP_newPiece, - NP_down, NP_left, NP_right, - NP_rotate, NP_drop, NP_clear, - NP_insertJunk, NP_startConn, - NP_userName, NP_pause, NP_version, - NP_byeBye } NetPacketType; +typedef enum _MyEventType { + E_none, E_alarm, E_key, E_connect, E_net, E_lostConn, E_robot, E_lostRobot +} 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_argghhh, //player died + + 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; @@ -109,6 +128,7 @@ typedef struct _MyEvent { union { char key; struct { + short sender, uid; NetPacketType type; int size; void *data; @@ -130,10 +150,15 @@ typedef struct _EventGenRec { int fd; EventGenFunc func; int mask; + short player; + char buf[512]; + int bufSize, bufGoal; } EventGenRec; +MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event); + typedef struct _Shape { - struct _Shape *rotateTo; + struct _Shape *rotateTo, *rotateFrom; int initY, initX, mirrored; Dir initDir; BlockType type; @@ -148,27 +173,64 @@ typedef struct _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 + +typedef struct _Player { + int alive; + char name[16]; + int flags; + int team; + int dropmode; + int boardHeight, boardWidth, boardVisible; + int curX, curY; + Shape *curShape, *nextShape; + struct _Score { + short level; + long score; + int drops, lines, adds; + } score; + char host[256]; //last-1 + int spy,small; //last +} Player; +EXT Player 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 + +typedef struct __Game { + int maxplayers; //1 + int started; //2 + int continuous; //3 + long seed; //4 + int initspeed; //5 + int speed; + int standout, color, ascii; +} _Game; +EXT _Game Game; + EXT GameType game; -EXT int boardHeight[MAX_SCREENS]; -EXT int boardVisible[MAX_SCREENS], boardWidth[MAX_SCREENS]; -EXT Shape *curShape[MAX_SCREENS]; -EXT int curY[MAX_SCREENS], curX[MAX_SCREENS]; -EXT char opponentName[16], opponentHost[256]; -EXT int standoutEnable; EXT int robotEnable, robotVersion, fairRobot; EXT int protocolVersion; -EXT long initSeed; -EXT long stepDownInterval, speed; - -EXT int myFlags, opponentFlags; +EXT int initConn; +EXT short port; EXT char scratch[1024]; extern ShapeOption stdOptions[]; -extern char *version_string; #include "proto.h" #endif /* NETRIS_H */ +/* + * vi: ts=4 ai + * vim: noai si + */