unofficial version 0.7.1: ui improvements
[netris.git] / netris.h
index 30ce772a3262e6e0a2d5e12bd507a6172b31dbeb..7bbfc3ce3fe25fda603f08c7f5b6579dcfd9f16b 100644 (file)
--- a/netris.h
+++ b/netris.h
@@ -28,7 +28,7 @@
 #include <stdio.h>
 #include <signal.h>
 
-#define version_string         "0.5.810"
+#define version_string         "0.7.819"
 
 #define ExtFunc                /* Marks functions that need prototypes */
 
@@ -80,24 +80,45 @@ typedef long netint4;
 #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_white, BT_blue, BT_magenta, BT_cyan, BT_yellow, BT_green,
-       BT_red, BT_wall, BT_len
+       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
+       E_none, E_alarm, E_key, E_connect, E_net, E_lostConn, E_robot, E_lostRobot
 } MyEventType;
 typedef enum _NetPacketType {
-       NP_endConn, NP_byeBye,
-       NP_error, NP_hello, NP_gamedata, NP_newPlayer, NP_goAhead,
-       NP_pause, NP_argghhh, NP_giveJunk, NP_newPiece, NP_down, NP_left, NP_right,
-       NP_rotright, NP_rotleft, NP_drop, NP_clear, NP_insertJunk
+       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;
@@ -133,7 +154,6 @@ typedef struct _EventGenRec {
        char buf[512];
        int bufSize, bufGoal;
 } EventGenRec;
-EXT EventGenRec netGen[MAX_SCREENS];
 
 MyEventType NetGenFunc(EventGenRec *gen, MyEvent *event);
 
@@ -158,8 +178,6 @@ typedef int (*ShapeDrawFunc)(int scr, int y, int x,
 #define SCF_fairRobot          000002
 #define SCF_paused                     000004
 
-EXT int totalPlayers;
-
 typedef struct _Player {
        int alive;
        char name[16];
@@ -175,18 +193,23 @@ typedef struct _Player {
                int drops, lines, adds;
        } score;
        char host[256]; //last-1
-       int spy;                //last
+       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 {
-       long seed;              //1st
-       int initspeed;  //2nd
+       int maxplayers; //1
+       int started;    //2
+       int continuous; //3
+       long seed;              //4
+       int initspeed;  //5
        int speed;
        int standout, color, ascii;
 } _Game;