X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=include%2Fplayer.h;h=f9d79cd98f49f6f4fb6561f60caa80b7ac4a6b60;hp=cae5093aa08ff0a81e31d1b7da46e89af79b4837;hb=HEAD;hpb=d8b7fdfae1c42f6ab23e74a011d3ed12c4c78f16 diff --git a/include/player.h b/include/player.h index cae5093aa..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-2000, 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,93 +14,90 @@ * 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 . * * --- * - * See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the - * related information and legal notices. It is expected that any future - * projects/authors will amend these files as needed. + * See files README, COPYING and CREDITS in the root of the source + * tree for related information and legal notices. It is expected + * that future projects/authors will amend these files as needed. * * --- * * 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_ -#define _PLAYER_H_ +#ifndef PLAYER_H +#define PLAYER_H -#include -#if !defined(_WIN32) -#include -#endif -#include "prototype.h" -#include "queue.h" -#include "misc.h" -#include "com.h" +#include #include "empthread.h" +#include "misc.h" +#include "queue.h" +#include "types.h" + + /* 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; - s_char hostaddr[32]; - s_char hostname[512]; - s_char client[128]; - s_char userid[32]; - int validated; - natid cnum; - int state; - struct cmndstr *command; - struct iop *iop; - s_char combuf[1024]; - s_char *argp[128]; - s_char *condarg; - time_t lasttime; - int ncomstat; - int minleft; - int btused; - int visitor; - int god; - int owner; - int nstat; - int waiting; - int simulation; /* e.g. budget command */ - double dolcost; - int broke; - time_t curup; /* used in calc of minutes used */ - int aborted; - int curid; /* for pr, cur. line's id, -1 none */ - int blitz_time; - char *map; /* pointer to in-mem map */ - char *bmap; /* pointer to in-mem bmap */ + struct emp_qelem queue; + empth_t *proc; + 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; /* currently executing command */ + struct iop *iop; + char combuf[1024]; /* command input buffer, UTF-8 */ + 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; /* command capabilities */ + int simulation; /* e.g. budget command */ + double dolcost; + time_t curup; /* when last input was received */ + 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 */ }; #define PS_INIT 0 -#define PS_LOGIN 1 -#define PS_PLAYING 2 -#define PS_SHUTDOWN 3 -#define PS_KILL 4 - -/* thread priorities */ -#define PP_UPDATE 6 -#define PP_SHUTDOWN 5 -#define PP_SCHED 4 -#define PP_TIMESTAMP 2 -#define PP_PLAYER 3 -#define PP_ACCEPT 3 -#define PP_KILLIDLE 2 - -#include "prototypes.h" /* must come at end, after defines and typedefs */ - -#endif /* _PLAYER_H_ */ - - - - +#define PS_PLAYING 1 +#define PS_SHUTDOWN 2 +/* player flags */ +enum { + 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