ref: 68cfdc52fa2daecdd2b4db02fe5f117a4e2329f6
dir: /dat.h/
enum {
Twater,
Tship,
Thit,
Tmiss,
NTILES,
Scarrier = 0,
Sbattleship,
Scruiser,
Ssubmarine,
Sdestroyer,
NSHIPS,
OH, /* horizontal */
OV, /* vertical */
Waiting0 = 0,
Outlaying,
Waiting,
Playing,
Boardmargin = 50,
TW = 16,
TH = TW,
MAPW = 17,
MAPH = MAPW,
SCRW = Boardmargin+MAPW*TW+Boardmargin,
SCRH = Boardmargin+MAPH*TH+TH+MAPH*TH+Boardmargin,
KB = 1024,
};
typedef struct Input Input;
typedef struct Ship Ship;
typedef struct Map Map;
typedef struct Board Board;
typedef struct Player Player;
typedef struct Playerq Playerq;
typedef struct Match Match;
typedef struct Chanpipe Chanpipe;
struct Input
{
Mousectl *mc;
Keyboardctl *kc;
};
struct Ship
{
Point2 p; /* board cell */
Rectangle bbox;
int orient;
int ncells;
int *hit; /* |hit| = ncells and hit ∈ {0,1} */
int sunk;
};
struct Map
{
char map[MAPW][MAPH];
};
struct Board
{
RFrame;
Map;
Rectangle bbox;
};
struct Player
{
Map;
int fd;
int sfd;
int state;
};
struct Playerq
{
QLock;
Player **players;
ulong cap;
ulong nplayers;
};
struct Match
{
Player *pl[2];
};
struct Chanpipe
{
Channel *c;
int fd;
};