shithub: battleship

ref: 2e921a4b2dba62b849b1b9be8abaca8db1ef7872
dir: /dat.h/

View raw version
enum {
	Twater,
	Tship,
	Thit,
	Tmiss,
	NTILES,

	OH, /* horizontal */
	OV, /* vertical */

	Waiting0 = 0,
	Outlaying,
	Waiting1,
	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 Board Board;
typedef struct Player Player;
typedef struct Playerq Playerq;
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 = {x: 0 ≤ x ≤ 1} */
	int sunk;
};

struct Board
{
	RFrame;
	char map[17][17];
	Rectangle bbox;
};

struct Player
{
	int fd;
	int sfd;
	Channel *mc; /* for matching */
	Player *o; /* opponent */
};

struct Playerq
{
	QLock;
	Player **players;
	ulong cap;
	ulong nplayers;
};

struct Chanpipe
{
	Channel *c;
	int fd;
};