1 /* Definitions for players in Xconq.
2    Copyright (C) 1992, 1993, 1994, 1996, 1999 Stanley T. Shebs.
3 
4 Xconq is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.  See the file COPYING.  */
8 
9 /*! \file kernel/player.h
10  * \brief Definitions for players in Xconq.
11  */
12 
13 /*! \brief Player.
14  *
15  * This structure holds the player information.
16  */
17 typedef struct a_player {
18     short id;               	/*!< unique id for the player */
19     char *name;             	/*!< proper name of the player */
20     char *configname;       	/*!< name of a particular configuration */
21     char *displayname;      	/*!< name of the desired display */
22     char *aitypename;       	/*!< name of an AI type */
23     short advantage;        	/*!< player's desired initial advantage */
24     char *remotewanted;     	/*!< name of remote desired for player */
25     char *password;         	/*!< encrypted password of the player */
26     int rid;                	/*!< identifier of the player's program */
27     struct a_side *side;    	/*!< the \ref a_side "Side" being played */
28     struct a_player *next;	/*!< pointer to the next Player */
29 } Player;
30 
31 /*! \brief Player/side assignment.
32  *
33  * This is the mapping between players and sides. */
34 typedef struct {
35     struct a_side *side;        /*!< the \ref a_side "Side" */
36     struct a_player *player;	/*!< the \Player assigned to the side */
37     int locked;                 /*!< true if the assignment can't be changed */
38 } Assign;
39 
40 /*! \brief Iteration over all players.
41  *
42  * For header for iterating through all \Players.
43  * \param v is the player iteration variable.
44  */
45 #define for_all_players(v) \
46     for (v = playerlist; v != NULL; v = v->next)
47 
48 /*! \brief List of \Players. */
49 extern Player *playerlist;
50 /*! \brief Last \Player in list. */
51 extern Player *last_player;
52 
53 /*! \brief List of player/side assignments */
54 extern Assign *assignments;
55 
56 extern Player *add_player(void);
57 extern Player *find_player(int n);
58 extern void canonicalize_player(Player *player);
59 extern char *player_desig(Player *player);
60