/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
- * Ken Stevens, Steve McClure
+ * Copyright (C) 1986-2012, 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,
* 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 <http://www.gnu.org/licenses/>.
*
* ---
*
* Known contributors to this file:
* Dave Pare, 1994
* Doug Hay, 1998
- * Markus Armbruster, 2005-2009
+ * Markus Armbruster, 2005-2012
*/
#ifndef PLAYER_H
#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 EXEC bit(5)
-#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 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 hostaddr[46];
char hostname[512]; /* may be empty */
char client[128]; /* may be empty */
char userid[32]; /* may be empty */
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[] */
int simulation; /* e.g. budget command */
double dolcost;
time_t curup; /* when last input was received */
- int aborted; /* interrupt cookie or EOF received? */
- int eof; /* EOF (cookie or real) 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 */