X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=include%2Fplayer.h;h=f9d79cd98f49f6f4fb6561f60caa80b7ac4a6b60;hp=39ee2121432e01142fd81640e4c771fdeda915d4;hb=HEAD;hpb=c329f882a2a67d0185cbec9906fb642f02c87246 diff --git a/include/player.h b/include/player.h index 39ee21214..f9d79cd98 100644 --- a/include/player.h +++ b/include/player.h @@ -1,11 +1,11 @@ /* * Empire - A multi-player, client/server Internet based war game. - * Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak, - * Ken Stevens, Steve McClure + * Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Ken Stevens, Steve McClure, Markus Armbruster * - * This program is free software; you can redistribute it and/or modify + * Empire is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -14,8 +14,7 @@ * GNU General Public License for more details. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * along with this program. If not, see . * * --- * @@ -26,10 +25,11 @@ * --- * * player.h: Definitions for player information (threads) - * + * * Known contributors to this file: * Dave Pare, 1994 * Doug Hay, 1998 + * Markus Armbruster, 2005-2014 */ #ifndef PLAYER_H @@ -41,43 +41,50 @@ #include "queue.h" #include "types.h" - /* nstat values */ -#define VIS bit(0) -#define SANCT (bit(1) | VIS) -#define NORM (bit(2) | VIS) -#define GOD (bit(3) | NORM | VIS) -#define CAP bit(6) -#define MONEY bit(7) + /* player command capabilities */ +#define NONVIS bit(0) /* can execute common commands (visitors can't) */ +#define SANCT bit(1) /* can execute commands available in sanctuary */ +#define NORM bit(2) /* can execute active player commands */ +#define GOD bit(3) /* can execute deity commands */ +#define TESTING bit(4) /* can execute commands meant for test suite */ +#define EXEC bit(5) /* can execute the execute command */ +#define CAP bit(6) /* has capital */ +#define MONEY bit(7) /* isn't broke */ + +enum player_sleep { + PLAYER_SLEEP_NEVER, PLAYER_SLEEP_ON_INPUT, PLAYER_SLEEP_FREELY +}; struct player { struct emp_qelem queue; empth_t *proc; - char hostaddr[32]; - char hostname[512]; /* may be empty */ + char hostaddr[46]; char client[128]; /* may be empty */ char userid[32]; /* may be empty */ int authenticated; natid cnum; int state; int flags; - struct cmndstr *command; + struct cmndstr *command; /* currently executing command */ struct iop *iop; char combuf[1024]; /* command input buffer, UTF-8 */ - char *argp[128]; /* arguments, ASCII */ - char *condarg; /* conditional, ASCII */ - time_t lasttime; /* when to debit minleft again */ - int ncomstat; - int minleft; + char argbuf[1024]; /* argument buffer, ASCII */ + char *argp[128]; /* arguments, ASCII, valid if command */ + char *condarg; /* conditional, ASCII, valid if command */ + char *comtail[128]; /* start of args in combuf[] */ + time_t lasttime; /* when nat_timeused was last updated */ int btused; int god; int owner; - int nstat; + int nstat; /* command capabilities */ int simulation; /* e.g. budget command */ double dolcost; - int broke; time_t curup; /* when last input was received */ - int aborted; - int curid; /* for pr, cur. line's id, -1 none */ + enum player_sleep may_sleep; /* when may thread sleep? */ + int aborted; /* command aborted? */ + int got_ctld; /* EOF cookie received? */ + int recvfail; /* #recvclient() failures */ + int curid; /* for pr, cur. line's ID, -1 none */ char *map; /* pointer to in-mem map */ char *bmap; /* pointer to in-mem bmap */ }; @@ -88,7 +95,9 @@ struct player { /* player flags */ enum { - PF_UTF8 = bit(0) /* client wants UTF-8 */ + PF_UTF8 = bit(0), /* client wants UTF-8 */ + PF_DOWN = bit(1), /* told player game is down */ + PF_HOURS = bit(2) /* told player hours restriction is on */ }; #endif